【问题标题】:Infinite Loop occurs when using main function使用 main 函数时发生无限循环
【发布时间】:2017-09-12 14:04:55
【问题描述】:

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

#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 时,为了将来可以将名称变量用于不同的函数,它会生成无限循环。

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

谢谢!

【问题讨论】:

  • 一个 while(True) 循环将永远运行,直到你 return 一个值或 break 退出它

标签: python while-loop infinite-loop main


【解决方案1】:

这是因为在版本 #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

【讨论】:

  • 感谢您的评论。但问题是我将来需要将我的 name 变量用于不同的函数,以便它需要保留在 main 函数下。
猜你喜欢
  • 2018-06-16
  • 2021-05-03
  • 1970-01-01
  • 2021-09-23
  • 2015-05-28
  • 2015-12-25
  • 2012-06-18
  • 1970-01-01
  • 2023-03-22
相关资源
最近更新 更多