Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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中的无限循环无法停止_Python_Loops - Fatal编程技术网

Python中的无限循环无法停止

Python中的无限循环无法停止,python,loops,Python,Loops,我试图做一个循环,但这一直给我一个无限的循环,有人能帮我吗 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 = 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!')

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

使用操作符链接,然后再次获取输入

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'))

首先试着选择难度,如果可以,那么你就不会进入循环,如果值不好,那么你就在循环中,直到你为难度选择一个合适的值

编辑:

我为您添加了一个名为safe_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()

以下内容更像是您想要实现的:

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循环需要同时包含输入行和print语句。break语句用于退出循环,并在输入正确的值后在循环后继续运行。

发生的情况无效?您需要重新输入,以便其值可以更改。如果您尝试先读取某些内容,而不是在while中,则无法更新循环中的难度。