Python не читает все операторы сравнения в моем цикле while и инструкции if

#python-3.x

#python-3.x

Вопрос:

Я использую модуль random, поэтому Python может генерировать два случайных числа, которые передаются пользователю для проверки их таблиц умножения до 26. Единственная проблема, с которой я сталкиваюсь с этим кодом, заключается в том, что Python подчиняется только операнду != .

Приведенный ниже код "elif answer != win_number:" выводит то, что пользователь получит, если ответ неверен, но даже в тех случаях, когда ответ правильный, Python все равно печатает этот код и пропускает другие операторы сравнения.

 import random

while True:
    num1 = random.choice(range(0, 26))
    num2 = random.choice(range(0, 26))
    win_number = num1 * num2
    answer = input("What is "   str(num1)   " * "   str(num2)   "?: ")
    if answer == win_number:
        print("Correct! "   str(win_number)   " was the right answer!")
    elif answer == "?":
        print(win_number)
    elif answer != win_number:
        print("Incorrect! "   str(win_number)   " is the correct answer!")
 

Если пользователь вводит 100, когда Python спрашивает, что такое 10 * 10, я ожидаю, что Python перейдет к "if answer == win_number:" опции и распечатает:

("Correct! " str(win_number) " was the right answer!")

Вместо этого он полностью переопределяет это и переходит прямо к «неправильной» строке.

Что я здесь делаю не так?

Ответ №1:

input функция возвращает a string , так что:

 >>> "100" == 100
False
 

Вот почему это условие не выполняется.
Чтобы исправить свой код, вы можете привести ответ:

 if int(answer) == win_number: