while True:
self.soil_type = input("Please choose soil type - alkaline, neutral, acidic: ")
print('-'*30)
print('')
if self.soil_type != "alkaline" and "neutral" and "acidic":
print("***NOT A VALID SOIL TYPE***")
continue
else:
False我想用while循环检查错误。如果我键入的不是碱性的,中性的,酸性的,打印“非有效土壤类型”并继续输入命令。如果我键入正确的土壤类型之一,逃离循环并进入下一步。
但没起作用。即使我键入正确的(例如“酸性”),它也显示“不是有效的土壤类型”。我遗漏了什么?)
发布于 2019-03-11 06:00:33
while True:
self.soil_type = input("Please choose soil type - alkaline, neutral, acidic: ")
print('-'*30)
print('')
if not(self.soil_type == "alkaline" or self.soil_type == "neutral" or self.soil_type == "acidic"):
print("***NOT A VALID SOIL TYPE***")
continue
else:
break尝试使用this.....it应该有效!
发布于 2019-03-11 06:00:28
如果条件错误,则使用错误。
应该是-
while True:
self.soil_type = input("Please choose soil type - alkaline, neutral, acidic: ")
print('-'*30)
print('')
if (self.soil_type != "alkaline") and (self.soil_type != "neutral") and (self.soil_type != "acidic"):
print("***NOT A VALID SOIL TYPE***")
continue
else:
False因为你把它说成是-
if <condition> and "neutral" and "acidic":
...因为“中性”和“酸性”只是真值,如果不是碱性的话,第一个条件就是真的。这使得整个情况成为现实,而且它只是打印-
***NOT A VALID SOIL TYPE***希望这能有所帮助。
发布于 2019-03-11 06:01:48
如果您检查if not something,而不是检查if something,您的代码将更具可读性。
while True:
self.soil_type = input("Please choose soil type - alkaline, neutral, acidic: ")
print('-'*30)
print('')
if self.soil_type == "alkaline" or self.soil_type == "neutral" or self.soil_type == "acidic":
print("**VALID**")
print self.soil_type
break
else:
print("***NOT A VALID SOIL TYPE***")提醒(布尔代数):
这些规则可以用英文表达如下:
或
不(A或B) =不A和B;也不(A和B) =非A或非B
https://stackoverflow.com/questions/55095945
复制相似问题