Как мне получить эту функцию, чтобы тесты работали? - PullRequest
0 голосов
/ 09 апреля 2020

Я пытался создать функцию для вопросов викторины, но продолжаю возвращать неправильные вещи. Я установил ответ для 26, но даже когда я ввел 26, он печатает неправильно.

Вот мой код

def bst_q(question, answer):
    rq = input(str(question))
    if rq == answer:
        print ('Correct, Well done')
    elif rq != answer:
        print ('wrong')

bst_q('What is 13 times 2?',26 )

, пожалуйста, помогите!

Ответы [ 3 ]

2 голосов
/ 09 апреля 2020

Переменные имеют разные типы

  • переменная rq является str
  • атрибут answer является int

Кроме того, не используйте elif с условием, противоположным if, просто используйте else

def bst_q(question, answer):
    rq = input(str(question))
    if rq == str(answer):
        print('Correct, Well done')
    else:
        print('wrong')
0 голосов
/ 09 апреля 2020

Ошибка, которую вы делаете здесь, заключается в том, что вы сравниваете string из input() с int (в данном случае 26).

Итак, ваше сравнение: is 26 = "26 "?

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

Ваша программа просто нуждается в небольшой корректировке:

def bst_q(question, answer):
    rq = int(input(str(question)))
    if rq == answer:
        print ('Correct, Well done')
    elif rq != answer:
        print ('wrong')

bst_q('What is 13 times 2?', 26)

Ответ от @azro правильный, в том смысле, что вы не должны использовать elif, а только иначе вместо В зависимости от того, что вы хотите, вы можете либо привести свой ответ к строке, например: bst_q('What is 13 times 2?', "26"), либо, как я предложил, вы приведете ввод к целому числу. Действительно зависит от того, чего вы здесь пытаетесь достичь.

0 голосов
/ 09 апреля 2020

Эй, вам нужно преобразовать ваш ответ в строку.

def bst_q(question, answer):
    rq = input(str(question))
    if rq == str(answer):
        print ('Correct, Well done')
    elif rq != str(answer):
        print ('wrong')

bst_q('What is 13 times 2?',26 )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...