2016-08-18 3 views
0

Я создаю программу угадывания для ввода пользователя в диапазоне 1 - 100.Почему мой код Python пропускает цикл while?

Почему он пропускает второй цикл while, где я проверяю ввод пользователя и пересылаю его. Он идет прямо с номером 1

import random 

nums_lasted = [] 
a = 0 
while a < 101: 
    nums_lasted.append(a) 
    a += 1 
secret_num = 1 
while secret_num < 0 or secret_num > 100: 
    try: 
     secret_num = int(input("My number is")) 
    except ValueError: 
     print("No way that was an integer!") 
guess_pc = 50 
min = 50 
max = 101 
while True: 
    print("Is it", guess_pc,"?") 
    if guess_pc == secret_num: 
     print("Easy") 
     break 
    elif guess_pc > secret_num: 
     max = guess_pc 
     nums_lasted.append(guess_pc) 
     nums_lasted1 = [i for i in nums_lasted if i < guess_pc] 
     nums_lasted = nums_lasted1 
    elif guess_pc < secret_num: 
     min = guess_pc 
     nums_lasted.append(guess_pc) 
     nums_lasted1 = [i for i in nums_lasted if i < guess_pc] 
     nums_lasted = nums_lasted1 
    guess_pc = random.choice(nums_lasted) 
+1

Подсказка: что такое значение истинности '1 < 0 or 1 > 100'? – Kevin

+1

BTW, в Python вы можете сделать 'while not 0 <= secret_number <= 100:' –

ответ

1

Поскольку условие secret_num < 0 or secret_num > 100 ложно для secret_num == 1. 1 определенно между 0 и 100. Вы должны установить secret_number на что-то большее, чем 100, чтобы это работало так, как ожидалось.

+0

'secret_num <0 или secret_num> 100' является false, когда' secret_num == 1' – DeepSpace

+0

Определенно, спасибо @DeepSpace. –

3
secret_num = 1 
while secret_num < 0 or secret_num > 100: 

Вы устанавливаете secret_num в 1. while будет работать только тогда, когда secret_num будет меньше 0 или больше 100, поэтому он никогда не будет выполнен.

+0

Мне нужно спать – Metalnakls

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