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

时间:2017-04-16 23:33:48

标签: python while-loop infinite-loop main

正在玩循环来准备我的传入项目。当使用while + + 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不会产生无限循环

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

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

谢谢!

1 个答案:

答案 0 :(得分:0)

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

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

for i in range(100):
    ...

如果要限制迭代次数。

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

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