Блокнот Jupyter не выполняется должным образом - PullRequest
0 голосов
/ 29 апреля 2020

Здравствуйте, у меня в последнее время были некоторые проблемы с ноутбуком jupyter, и мне интересно, если кто-нибудь знает, почему. перезапустите ядро. Затем он выполняет. Однако иногда это не приведет к правильному выполнению, даже если код верен. поэтому я перезапущу ядро ​​и очисту свои выводы. Это обычно исправляет это. Теперь я работаю над этой проблемой, где я прошу пользователя ответить на математическую задачу, если его входная сумма верна, он скажет поздравляю, если неправильно, он скажет, что он ошибся. Изначально программа повторяла, что user_answer не был определен. Тогда это вообще не дало мне ошибки, но пропустило бы оператор if и просто распечатало оператор else: даже если ответ, данный пользователем, был правильным. это мой код? или это редактор, который я использую, и если да, то как я могу заставить его работать должным образом. Я пытаюсь выучить python и нахожу это немного разочаровывающим, потому что я не знаю, мой ли это код или редактор в половине случаев.

Вот мой код:

import random

number_1 = random.randint(1,250)
number_2 = random.randint(1,250)

def main():
    ask_question()
    check_answer(user_answer)

def ask_question():
    user_answer = int( input( "What is " +\ 
               str(number_1 )+ ' + ' +\
               str( number_2 ) + '? '))
    return user_answer

def check_answer( user_answer ):

    correct_answer = number_1 + number_2

    if user_answer == correct_answer:
        print("Congratulations", user_answer, +\
              "is correct!")
    else:
        print("Sorry that is not correct the" +\
              " answer should be", correct_answer)

main()

outputs:

**most common one**
What is 126 + 250? 8 (enter)
---------------------------------------------------- 
-----------------------
NameError                                 Traceback 
(most recent call last)
<ipython-input-2-99955f4e983a> in <module>
     29               " answer should be", 
correct_answer)
     30 
---> 31 main()
     32 

<ipython-input-2-99955f4e983a> in main()
      6 def main():
      7     ask_question()
----> 8     check_answer(user_answer)
      9 
     10 def ask_question():
NameError: name 'user_answer' is not defined

OR

I'll get this and i didn't change anything in my 
code..

What is 126 + 250? 376 (enter)
Sorry that is not correct the answer should be 376

1 Ответ

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

Основная функция вашего кода немного неправильная.

def main():
    ask_question()
    check_answer(user_answer)

В функции check_answer замените user_answer числом, которое вводит пользователь. Итак, присвойте переменную функции ask_question, которая затем будет помещена в функцию check_answer.

def main():
    user_answer = ask_question()
    check_answer(user_answer)

Также не рекомендуется смешивать локальные переменные (переменные, которые находятся внутри функций) и глобальные переменные. (переменные, которые являются внешними функциями). в вашем случае вы вызываете глобальные переменные (number_1 и number_2) внутри функции check_answer, что не очень хорошо python. Лучшим способом создания этого кода было бы иметь только одну функцию, которая выбирает два случайных числа, запрашивает ответ пользователя и проверяет, является ли он правильным или нет.

Мне не удалось воспроизвести другую ошибку (из ответ неправильный).

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