& ldquo; Значение локальной переменной 'name_variable' не используется & rdquo; ошибка в Python 3.x

Итак, я новичок в программировании, и сейчас я изучаю Python. При попытке создать простую игру я застрял, когда попытался изменить переменную с именем user_answer на input("Please, answer with yes or no."). В основном это моя строка кода else: user_answer = input("Please, answer with yes or no."). Но по какой-то причине я получаю сообщение об ошибке «Локальная переменная« user_answer »значение не используется». Может ли кто-нибудь помочь мне с этим? Спасибо!

Вот мой полный код:

def my_function():
    user_answer = input("Would you like to play a game?")
    if user_answer == "yes":
        print("Great! I have a number in my head from 1 to 10. Make a guess!")
    elif user_answer == "no":
        print("Oh, okay! Maybe next time?")
    else: user_answer = input("Please, answer with yes or no.")


my_function()
1
задан 13 August 2018 в 14:10

2 ответа

Я предполагаю, что вы говорите об инспекции IDE, а не о фактической ошибке времени выполнения? Вы используете IDE, например PyCharm? Если это так, local variable ... value not used означает, что вы сохраняете значение (input(...)) в переменной (user_amswer), а затем вы никогда не используете это значение. Но это так, как должно быть, потому что кажется, что ваша программа заканчивается там; ничего не использует новое значение user_answer.

Просто игнорируйте предупреждение, продолжайте писать свою программу (и обязательно используйте новое значение user_answer), и это не должно быть проблемой.

Рабочий пример

def my_function():
    user_answer = input("Would you like to play a game? ")

    while not (user_answer == "yes" or user_answer == "no"):
        user_answer = input("Please, answer with yes or no. ")

    if user_answer == "yes":
        print("Great! I have a number in my head from 1 to 10. Make a guess!")
    elif user_answer == "no":
        print("Oh, okay! Maybe next time? ")


my_function()

В этом примере сначала мы вводим пользовательский ввод с user_answer = input("Would you like to play a game? "), а затем мы убедитесь, что он либо «да», либо «нет» с циклом

while not (user_answer == "yes" or user_answer == "no"):
        user_answer = input("Please, answer with yes or no. ")

, который заканчивается только тогда, когда (user_answer == "yes" or user_answer == "no") оценивает значение True.

Тогда вы можете продолжить работу с остальной частью программы!

# if user_input...

Почему это не сработало

С вашим предыдущим кодом оператор else выполнялся, когда пользователь не вводил правильный ответ (yes или no). Но проблема заключалась в том, что после ввода пользователем нового значения (которое также могло бы быть недействительным!) Программе некуда было идти (она уже «оставила» код if user_answer == "yes": print(...)!).

2
ответ дан 15 August 2018 в 17:04
  • 1
    спасибо за ответ, но проблема в том, что я хотел бы, чтобы программа печаталась, когда ответ становился «да»; или "no", поэтому я хочу изменить ввод user_answer – Manu 13 August 2018 в 14:13
  • 2
    @Manu Исправьте меня, если я ошибаюсь; с последним оператором else, вы хотите, чтобы программа удостоверилась, что пользователь вводит либо "yes", либо "no", но не что-то вроде "foo"? – Anakhand 13 August 2018 в 14:20
  • 3
    да, это то, что я хотел бы сделать – Manu 13 August 2018 в 14:26
  • 4
    @Manu Я добавил объяснение в ответ. – Anakhand 13 August 2018 в 14:36

Спасибо всем! Я использовал PyCharm IDE, и проблема заключалась в том, что переменная просто не использовалась в моей программе. Я мог бы просто продолжить писать программу, и это результат:

import random

user_name = input("Welcome to the number guessing game! What's you name?")

random_number = random.randint(1, 10)
user_guess = int(input("Okay " + user_name + ", I have a random number in my head from 1 to 10, make a guess!"))
while user_guess != random_number:
    if user_guess > random_number:
        user_guess = int(input("You're too high, try lower!"))
    elif user_guess < random_number:
        user_guess = int(input("You're too low, try higher!"))
    elif user_guess == random_number:
        break

print("You're correct! The number is " + str(random_number) + "!")

Спасибо за помощь, всем! Приветствия:)

0
ответ дан 15 August 2018 в 17:04

Другие вопросы по тегам:

Похожие вопросы: