2016-07-26 1 views
0

Я недавно создавал текстовую приключенческую игру, но практически сразу столкнулся с проблемой ввода. Это дает мне сообщения об ошибках, когда я использую строки вместо целых чисел. Вероятно, есть очевидная причина, что это происходит, и я просто не вижу этого.Если Input Equals Strings Do (Something) Не работает Python 3

Вот пример:

b = input("Do you like video games? y/n") 
    if b == "y": 
     print("Good For You!") 
    if b == "n": 
     print("What!? (Just joking)") 

Я исследовал много, и это, кажется, работает для большинства других людей. Но когда я его использую, я получаю эту ошибку:

Do you like video games? y/ny 
    Traceback (most recent call last): 
     File "/home/ubuntu/workspace/Test.py", line 1, in <module> 
     b = input("Do you like video games? y/n") 
     File "<string>", line 1, in <module> 
    NameError: name 'y' is not defined 

Как вы можете видеть, в нем говорится, что y не определено. Я в порядке с базовым программированием на python, но я ужасен при чтении сообщений об ошибках. Было бы здорово, если бы вы, ребята, могли дать мне ответ. Спасибо!

+2

Вы не на Python 3, как вы думаете. – user2357112

+0

Вы уверены, что используете Python 3? Для меня эта ошибка появляется только в том случае, если я запускаю ваш код в Python 2. – xgord

+0

Если вы попытаетесь запустить свой код на Linux, убедитесь, что вы используете 'python3 Test.py' для его запуска с терминала – DShade

ответ

0

Эта ошибка с помощью функции input типична Python 2 и не Python 3. Я подозреваю, что вы на самом деле с помощью Python 2.

Чтобы определить, какую версию пробегов питона при использовании python команду:

$ python --version 
# example output: Python 2.7.3 

Чтобы убедиться, что вы запустите скрипт, используя Python 3, сделайте следующее:

$ python3 scriptname.py 


Python 2

В Python 2, чтобы получить пользовательский ввод, вы на самом деле нужно использовать функцию raw_input, как функция input пытается оценить ввод пользователя, как если бы это был питон код.

Таким образом, когда пользователь вводит 'y', функция input затем пытается оценить выражениеy, который в данном случае будет означать переменная с именем y, который не существует.

Так питона 2, код должен выглядеть так:

b = raw_input("Do you like video games? y/n") 
# etc 


Python 3

В Python 3 функция input занимает место raw_input, так что ваш код будет работа как есть.

0

Вы на самом деле используете Python 2, а не 3, к сожалению. Поскольку вы используете input() в Python , input() фактически оценивает выражение, а не эквивалентно Python 3 для Python 2's raw_input(). input() в этом случае не удалось найти переменную с именем y (ввод) и подняла ошибку.

Просто измените версию Python с 2.x на 3.x, и все должно быть в порядке.Если вы наклеивания с Python 2, хотя, использовать raw_input() вместо:

b = raw_input("Do you like video games? y/n")