首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python中的for循环或while循环中的多个IF语句?

Python中的for循环或while循环中的多个IF语句?
EN

Stack Overflow用户
提问于 2022-06-30 16:15:14
回答 2查看 51关注 0票数 -1

假设我以X价格购买一定数量的汽油,通常在30天内售出。在这30天里,我需要根据国家汽油的平均价格来调整我的加油站汽油价格。如果国价比我的购买价格上涨1.2%,我将把我的价格定在我购买价格的1%。

这里有一个python代码,但是它非常笨重,如果油价上涨了20%,那么我必须编写my_priceX多达20次。有没有更优雅的解决方案?

代码语言:javascript
运行
复制
my_price1 = last_gas_price["price"]*1.01 
my_price2 = last_gas_price["price"]*1.02 
my_price3 = last_gas_price["price"]*1.03 
my_price4 = last_gas_price["price"]*1.04  
my_price5 = last_gas_price["price"]*1.05 

if last_gas_price > my_price1:
    adj_price(price = my_price1)

if last_gas_price > my_price2:
    adj_price(price = my_price2)

if last_gas_price > my_price3:
    adj_price(price = my_price3)

if last_gas_price > my_price4:
    adj_price(price = my_price4)

if last_gas_price > my_price5:
    adj_price(price = my_price5)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-06-30 16:18:59

在乘法器上使用循环:

代码语言:javascript
运行
复制
for multiplier in (1.01, 1.02, 1.03, 1.04, 1.05):
    if last_gas_price > last_gas_price["price"]*multiplier:
        adj_price(price=last_gas_price["price"]*multiplier)

使用3.8+海象算子,如果您真正关心的话,您可以避免重做乘法:

代码语言:javascript
运行
复制
for multiplier in (1.01, 1.02, 1.03, 1.04, 1.05):
    if last_gas_price > (myprice := last_gas_price["price"]*multiplier):
        adj_price(price=myprice)

如果您只需要运行adj_price一次,对于最高的传递乘数,则在命中时反向运行循环并运行break

代码语言:javascript
运行
复制
for multiplier in (1.05, 1.04, 1.03, 1.02, 1.01):  # Reversed multipliers
    if last_gas_price > (myprice := last_gas_price["price"]*multiplier):
        adj_price(price=myprice)
        break  # Found highest passing multiplier and adjusted, now we're done

注意:您提供的代码显然是错误的(last_gas_price最初是一个dict,然后显然是标量,之后可能是float )。这个新代码复制了这个错误。您需要适当地调整用于将dict用法与非dict用法分开的变量名。

票数 0
EN

Stack Overflow用户

发布于 2022-06-30 16:20:58

好的,正如我所看到的,这种情况是非常混乱的,而且如果每个my_prize都是递增的,那么使用一个for循环,所以当奖励增加时,按原样设置它。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72818991

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档