【问题标题】:Infinite loop in Python cannot stopPython中的无限循环无法停止
【发布时间】:2026-02-21 09:35:01
【问题描述】:

我试图做一个循环,但这一直给我一个无限循环,谁能帮助我?

difficulty = int (input ( '"1" for Easy \n"2" for Medium \n"3" for Hard\n'))

while difficulty <= 0 or difficulty >= 4 :
  print ('Invalid Choice. Try Again!')

【问题讨论】:

  • difficulty“无效”会发生什么?您需要重新输入,以便其值可以更改。
  • 如果您正在尝试做某事,请输入if 而不是while
  • 先尝试阅读this
  • 你没有在循环中更新difficulty

标签: python loops


【解决方案1】:

使用运算符链接并再次获取输入

while not 0 < difficulty < 4:
    print('Invalid Choice. Try Again!')
    difficulty = int(input('"1" for Easy \n"2" for Medium \n"3" for Hard\n'))

【讨论】:

    【解决方案2】:

    当难度在一个范围内时,您正在打印。唯一的问题是难度变量只设置一次,在循环之前。尝试将其移动到循环内。

    【讨论】:

      【解决方案3】:

      以下更像是您想要实现的目标:

      while True:
          difficulty = int (input ( '"1" for Easy \n"2" for Medium \n"3" for Hard\n'))
      
          if 0 < difficulty < 4:
              break
      
          print('Invalid Choice. Try Again!')
      

      while 循环需要在其中包含input 行和print 语句。 break 语句用于在输入正确的值时退出循环(并在循环后继续运行)。

      【讨论】:

        【解决方案4】:

        首先尝试选择难度,如果没问题就不要进入循环,如果值不好,那么你就在while里面,直到你为难度选择一个合适的值。

        编辑:

        我为您添加了一个名为 safe_input 的函数,这样您就可以在用户输入字符串或错误字符时进行管理。我将其设为通用,因为您可以定义 user_input 的文本和预期类型。

        def safe_input(text, instance):
            user_input = raw_input(text)
            try:
                return instance(user_input)
            except:
                return False
        
        def choose_difficulty():
            return safe_input(text= '"1" for Easy \n"2" for Medium \n"3" for Hard\n', instance=int)
        
        difficulty = choose_difficulty()
        while difficulty <= 0 or difficulty >= 4:
            print ('Invalid Choice. Try Again!')
            difficulty = choose_difficulty()
        

        【讨论】: