2015-07-22 2 views
-4

Я попытался сделать цикл, но это продолжает давать мне бесконечный цикл, может ли кто-нибудь мне помочь?Бесконечная петля в Python не может остановить

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!') 
+1

Что происходит, «трудность» - «недействительна»? Вам нужно повторно ввести, чтобы его значение могло измениться. – DeepSpace

+0

положите 'if' вместо' while', если вы пытаетесь что-то сделать – itzMEonTV

+1

Попробуйте прочитать [this] (http://learnpythonthehardway.org/book/ex33.html) first –

ответ

0

Вы печатаете, пока сложность находится в пределах диапазона. Единственная проблема заключается в том, что переменная трудности устанавливается только один раз, перед циклом. Попробуйте переместить его внутри цикла.

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

Первая попытка выбрать сложность, если это нормально, то вы не получаете внутри цикла, если значение не является хорошим, то вы внутри, пока вы не выберете правильное значение для сложности.

Edit:

Я добавил для вас функции с именем 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() 
0

Следующие больше нравится то, что вы пытаетесь для того чтобы достигнуть:

петли
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!') 

это время должна включать в себя как ваш input линии и print заявления внутри него. Оператор break используется для выхода из цикла (и продолжения работы после цикла) при вводе правильного значения.

Смежные вопросы