Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/348.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 使用main函数时会出现无限循环_Python_While Loop_Infinite Loop_Main - Fatal编程技术网

Python 使用main函数时会出现无限循环

Python 使用main函数时会出现无限循环,python,while-loop,infinite-loop,main,Python,While Loop,Infinite Loop,Main,我在玩循环,为即将到来的项目做准备。当使用while loop+main函数时,我发现了无限循环 #1 def choice(name): while True: if name == "Eat" print("I don't want to eat now") elif name == "Drink" print("NOPE") else: print("o.O?")

我在玩循环,为即将到来的项目做准备。当使用while loop+main函数时,我发现了无限循环

#1
def choice(name):
    while True:
        if name == "Eat"
            print("I don't want to eat now")
        elif name == "Drink"
            print("NOPE")
        else:
            print("o.O?")

def main():
    name = input("Eat or Drink ? :")
    choice(name)
main()

#2
while True:
    name = input("Eat or Drink ? :")
    if name == "Eat"
        print("I don't want to eat now")
    elif name == "Drink"
        print("NOPE")
    else:
        print("o.O?")
数字2不会生成无限循环,尽管我没有任何返回

但当我使用数字1,以便将来可以将name变量用于不同的函数时,它会生成无限循环

我能知道它发生的原因吗?在保持name变量嵌套在main函数中的同时,如何修复它

谢谢

这是因为在版本2中,您在每次循环迭代时都从控制台读取输入(这一行:
name=input(“吃或喝:”)
)。所以它仍然是一个无限循环,但这次它会等待每次迭代,直到您提供一些输入

只需将以下行添加到您的
选项中即可解决此问题:
name=input(“吃或喝:”)
,或使用:

for i in range(100):
    ...
如果要限制迭代次数

编辑: 好的,从
choice
函数中选择
while True
,并将其放入main,如下所示:

def main():
     while True:
          name = input("Eat or Drink ? :")
          choice(name)
          ... other functions using name

while(True)
循环将永远运行,直到
返回一个值或
中断
以获取注释为止。但问题是,我需要在将来将我的name变量用于不同的函数,以便它需要保持在main函数下。