如何使用 python 3.6 为循环创建决策提示
How ti create a decision prompt for a loop with python 3.6
我正在尝试为 python 3.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 = "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
基本上尾随的 or
语句只是检查 "no"
是否不为空,等等。它们没有用。
- 如果
looping=="No"
,你会得到True
:循环继续
- 如果
looping!="No"
,你会得到下一个"non-False":"no"
:循环继续
正确方式:转为小写,判断字符串是否属于列表:
while looping.lower() in ["no","n"]:
除了Jean-François Fabre指出的比较错误外,这里还有一个逻辑错误。为了简化一点,这是您示例中的代码:
looping = "yes"
while looping == "no":
(do stuff which might change looping to something else)
while
循环永远不会开始。你应该写:
looping = "no"
while looping == "no":
(do stuff)
或者正如 Jean-François 所说,
looping = "no"
while looping.lower() in ["no","n"]:
(do stuff)
那么你要将某人的 "No" 答案转换成 "yes"...?
除非用户提供有效输入,否则为什么不尝试永远停留在循环中:
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 3.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 = "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
基本上尾随的 or
语句只是检查 "no"
是否不为空,等等。它们没有用。
- 如果
looping=="No"
,你会得到True
:循环继续 - 如果
looping!="No"
,你会得到下一个"non-False":"no"
:循环继续
正确方式:转为小写,判断字符串是否属于列表:
while looping.lower() in ["no","n"]:
除了Jean-François Fabre指出的比较错误外,这里还有一个逻辑错误。为了简化一点,这是您示例中的代码:
looping = "yes"
while looping == "no":
(do stuff which might change looping to something else)
while
循环永远不会开始。你应该写:
looping = "no"
while looping == "no":
(do stuff)
或者正如 Jean-François 所说,
looping = "no"
while looping.lower() in ["no","n"]:
(do stuff)
那么你要将某人的 "No" 答案转换成 "yes"...?
除非用户提供有效输入,否则为什么不尝试永远停留在循环中:
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')