Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 如何使用python 3.6为循环创建决策提示_Python 3.x_Loops_Decision Tree - Fatal编程技术网

Python 3.x 如何使用python 3.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

我正在尝试使用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 = "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”
等等。