Python 3.x 如何使用python 3.6为循环创建决策提示
我正在尝试使用Python3.6为循环创建一个决策提示。但它不起作用Python 3.x 如何使用python 3.6为循环创建决策提示,python-3.x,loops,decision-tree,Python 3.x,Loops,Decision Tree,我正在尝试使用Python3.6为循环创建一个决策提示。但它不起作用 def cycle(): looping = "yes" while looping == "No" or "no" or "n" or "N": looping = input('Do you want to make a new calculation? \n \t (Y/N)') if looping == "No" or "no" or "n" or "N": looping = "ye
def cycle():
looping = "yes"
while looping == "No" or "no" or "n" or "N":
looping = input('Do you want to make a new calculation? \n \t (Y/N)')
if looping == "No" or "no" or "n" or "N":
looping = "yes"
break
elif looping != "No" or "no" or "n" or "N":
print('This is not the right answer')
looping="no"
有人能帮我解决这个问题吗?
谢谢大家! 您无法比较这样的字符串:
while looping == "No" or "no" or "n" or "N": # wrong
基本上,后面的或
语句只需检查“no”
是否为空,等等。。它们没用
- 如果
,您将得到looping==“No”
:循环继续True
- 如果
,您将获得下一个“非False”:循环=“否”
:循环继续“否”
while looping.lower() in ["no","n"]:
除了让·弗朗索瓦·法布指出的比较错误外,这里还有一个逻辑错误。为了简化一点,以下是示例中的代码:
looping = "yes"
while looping == "no":
(do stuff which might change looping to something else)
while
循环从未启动。你应该写:
looping = "no"
while looping == "no":
(do stuff)
或者正如让·弗朗索瓦所说
looping = "no"
while looping.lower() in ["no","n"]:
(do stuff)
然后你把某人的“不”回答变成了“是”
除非用户提供有效的输入,否则为什么不尝试永远留在循环中:
def cycle():
newcalc = "no"
while True:
newcalc = input('Do you want to make a new calculation? \n \t (Y/N)')
if newcalc.lower() in ["no","n"]:
newcalc = "no"
break
if newcalc.lower() in ["yes","y"]:
newcalc = "yes"
break
print('This is not the right answer')
(仅供参考,我不是Python程序员,如果这是胡说八道,请道歉!)我不懂Python,但在大多数编程语言中,
if
语句不是语法错误,或“no”
的含义并不是你想象的那样。它不会将这些值与循环进行比较。您需要重复比较,即,looping==“No”或looping==“No”
等等。