[英]Tip calculator issue
试图为基于服务的小费计算器编写python代码,而我的while循环遇到问题。
service = ""
while service != "excellent" or service != "good" or service != "bad":
service = input("(Please choose excellent, good, or bad): ")
这部分导致无限循环,但我不确定为什么或如何解决...
您正在使用or
要在何处使用and
。
如果三个条件之一为真,则循环将继续。
如果您的输入是"excellent"
那么service != "good"
和service != "bad"
都是正确的,因此循环将继续。 其他值也是如此。
您想要的是:
service = ""
while service != "excellent" and service != "good" and service != "bad":
service = input("(Please choose excellent, good, or bad): ")
更好的(以及各种评论者指出的更多Pythonic的)是:
service = ""
while service.lower() not in ["excellent", "good", "bad"]:
service = input("(Please choose excellent, good, or bad): ")
这更容易阅读,并且在任何情况下(上,下,混合)都接受输入。
在这种情况下,您要使用“和”而不是“或”。 但是,另一个更干净的选择是执行以下操作:
while service not in ['excellent', 'good', 'bad]:
service = input('(Please choose excellent, good, or bad): ')
这将测试service
的价值是否在可接受的答案列表中,并使以后的编辑更加容易。
现在,您要说的是“如果其中任何三个语句为真,则继续while循环”。
您想要的是:
service = ""
while service != "excellent" and service != "good" and service != "bad":
service = input("(Please choose excellent, good, or bad): ")
您只是将逻辑混为一谈-您正在使用or
代替and
。
无论您有什么输入,都是(不好)或(不好)或(不错)!
例如,即使您输入“ good”,good仍为(不是优秀),因此总体条件返回True,并且您将继续循环。
编写此条件的更清晰方法是:
while service not in ["excellent", "good", "bad"]:
service = input("(Please choose excellent, good, or bad): ")
循环,直到任意数量的条件得到满足(因为它是既不可能也没有意义,以满足所有的人都在一次),你需要循环,而所有的人都得不到满足(逻辑否定)。 我能想到的最易读和Python式的表达方式是:
service = ''
while service not in ('excellent', 'good', 'bad'):
service = input("(Please choose excellent, good, or bad): ")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.