У меня есть Python проблемы с определением переменных на основе пользовательского ввода - PullRequest
0 голосов
/ 12 марта 2020

Я знаю, что вы видели это раньше, но мне действительно нужна помощь здесь. Я создавал основанную на Python программу «математического тестирования» для моего Tech Ed. класс, и я изо всех сил пытался правильно определить ответы в цифре c, ниже мой сценарий подпункт Python. Если есть какие-либо другие проблемы, кроме моей текущей проблемы, пожалуйста, дайте мне знать. Ниже приведен исходный код, вызывающий проблему.

print("e = 16 , a = 6 | a*10-e ")
answer = input()

if answer = 44:
    print("You got it!")
    print(" n = 186 | 4+n/2")
if answer = 97:
    print("You got it!")
    print(" a = 4 , b = 6 | b^(2)-a")
if answer = 32:
    print(" you got it!")
else:
 print("Sorry, thats incorrect")
 print("please restart the test!")

Ответы [ 2 ]

0 голосов
/ 12 марта 2020

Вам нужно else: для каждого if, а не только один в конце. И вопросы не должны быть в if - так, как вы это делали, вы сравниваете ответ на предыдущий вопрос со следующим результатом. Также, если для сравнения следует использовать ==.

И вы должны запросить ввод для каждого вопроса и преобразовать его в целое число.

print("e = 16 , a = 6 | a*10-e ")
answer = int(input())
if answer == 44:
    print("You got it!")
else:
    print("Sorry, thats incorrect")

print(" n = 186 | 4+n/2")
answer = int(input())
if answer == 97:
    print("You got it!")
else:
    print("Sorry, thats incorrect")

print(" a = 4 , b = 6 | b^(2)-a")
answer = int(input())
if answer == 32:
    print(" you got it!")
else:
    print("Sorry, thats incorrect")

Чтобы избежать всего этого дублирования, вы можете составить список вопросов и ответов, и используйте al oop.

questions = (("e = 16 , a = 6 | a*10-e ", 44),
             (" n = 186 | 4+n/2", 97),
             ("a = 4 , b = 6 | b^(2)-a", 32))
for question, answer in questions:
    response = int(input(question))
    if answer == response:
        print("you got it!")
    else:
        print("Sorry, that's incorrect")
0 голосов
/ 12 марта 2020

input возвращает str, если вы хотите, чтобы python рассматривал его как целое число, выполните:

answer = int(input())

Кроме того, теперь, как работает ваш код, все три ответа будут приняты за первый вопрос. Вам нужен индивидуальный else для каждого вопроса в случае, если его ответ неправильный, что-то вроде:

if answer == 44:  # Note '==' and not '='
    print("You got it!")
else:
     print("Sorry, thats incorrect")
     print("please restart the test!")
print(" n = 186 | 4+n/2")
# The same for the rest of the questions

Таким образом, на каждый вопрос есть только один правильный ответ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...