我正在为类分配编写一些代码,而对于我的生活,我无法获得一个变量来显示我存储在其中的文本:
if (salesavg < 5000):
rank = "SAD SALESMEN"
if (salesavg >= 5000 or salesavg <= 8000):
rank = "LOW SALESMAN"
if (salesavg >= 8001 or salesavg <= 9000):
rank = "MID SALESMAN"
if (salesavg >= 9001 or salesavg <= 10000):
rank = "EXCELLENT SALESMAN"
if (salesavg > 10000):
rank = "TOP SALESMAN"
它应该显示在哪里:
print("RANKING: " ,rank)
不是很匆忙,但我很困惑,为什么它不起作用,我在这个程序的其他部分使用了类似的方法,它们工作正常!
回答:谢谢!将它们改为elif和from或to并修复我遇到的问题(也改变了顺序)。现在工作得很好。
答案 0 :(得分:1)
你需要使用elif,而不仅仅是。发生的事情是代码检查salesavg&lt; 5000并且如果它不是真的,它只是跳过所有其他if语句,因为那些只能在第一个触发时触发。然后,由于if语句从未被触发,因此尚未声明变量rank。
以下是我要做的事情:
if (salesavg > 10000):
rank = "TOP SALESMAN"
elif (salesavg >= 9001 or salesavg <= 10000):
rank = "EXCELLENT SALESMAN"
elif (salesavg >= 8001 or salesavg <= 9000):
rank = "MID SALESMAN"
elif (salesavg >= 5000 or salesavg <= 8000):
rank = "LOW SALESMAN"
elif (salesavg < 5000):
rank = "SAD SALESMEN"
另请注意,我更改了顺序,以便首先查找最高顺序。这是因为顶级推销员本来会首先触发任何其他较小的级别。希望这有帮助!
答案 1 :(得分:0)
不确定你是否搞砸了格式化但我认为你搞砸了你的逻辑: 所有人如果循环嵌套意味着
if (salesavg >= 5000 or salesavg <= 8000):
只有在salesavg&lt; 5000
这是不合逻辑的,所以要解决这个问题:
if salesavg < 5000: rank = "SAD SALESMEN"
elif salesavg <= 8000: rank = "LOW SALESMAN"
elif salesavg <= 9000: rank = "MID SALESMAN"
elif salesavg <= 10000: rank = "EXCELLENT SALESMAN"
elif salesavg > 10000): rank = "TOP SALESMAN"
# this last one could just be else: rank = "TOP SALESMAN"
编辑优化了
答案 2 :(得分:0)
在Python中,缩进用于确定语句的结构。
在您的代码中,
if (salesavg < 5000):
嵌套条件
if (salesavg >= 5000 and salesavg <= 8000):
永远不会是真的。对于其他人来说也一样。
应该是这样的:
if (salesavg < 5000):
rank = "SAD SALESMEN"
elif (salesavg >= 5000 and salesavg <= 8000):
rank = "LOW SALESMAN"
//...
顺便说一下,代码中的所有or
都应该是and
,正如我在示例中修复的那样。
答案 3 :(得分:0)
我怀疑你没有价值的原因是因为你尝试使用大于5000的salesav。
缩进使得所有代码都以第一次测试为条件,其余代码仅在该测试通过时运行,因此当前代码仅在低于5000时才设置。
除了缩进之外,此代码可以更清晰,并且当前使用or
代替and
,因此任何小于上限的值都将通过每个测试。有一种更好的方法可以在python中检查限制之间的值。
if salesavg < 5000:
rank = "SAD SALESMEN"
elif 5000 < salesavg <= 8000:
rank = "LOW SALESMAN"
elif 8000 < salesavg <= 9000:
rank = "MID SALESMAN"
elif 9000 < salesavg <= 10000:
rank = "EXCELLENT SALESMAN"
else: #if (salesavg > 10000):
rank = "TOP SALESMAN"
这可能更清楚。当然使用else,也可以在不每次测试两个限制的情况下编写。
if salesavg < 5000:
rank = "SAD SALESMEN"
elif salesavg <= 8000:
rank = "LOW SALESMAN"
elif salesavg <= 9000:
rank = "MID SALESMAN"
elif salesavg <= 10000:
rank = "EXCELLENT SALESMAN"
else: #if (salesavg > 10000):
rank = "TOP SALESMAN"