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

Infinite Loop occurs when using main function

正在玩循环,为即将到来的项目做准备。我在使用 while loop + main function

时发现了无限循环
#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?")

尽管我没有任何 return

,但数字 2 不会生成无限循环

但是当我使用Number 1,以便我以后可以在不同的函数中使用name变量时,它会产生无限循环。

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

谢谢!

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

您只需将此行添加到您的 choice 函数中即可解决此问题:name = input("Eat or Drink ? :") 或使用:

for i in range(100):
    ...

如果要限制迭代次数

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

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