2017-02-17 5 views
1

Я новичок в Python и играл вокруг, но я получаю сообщение об ошибке на макинтошввода питон проблемы с макинтош

Ниже приведен код, я имею в input.py файле

person = input('Enter your name: ') 
print('Hello', person) 

Если Я запускаю код, это мой вывод и ошибка

Johnathans-iMac:scripts johnathansmith$ python input.py 
Enter your name: John 
Traceback (most recent call last): 
    File "input.py", line 1, in <module> 
    person = input('Enter your name: ') 
    File "<string>", line 1, in <module> 
NameError: name 'John' is not defined 

Пожалуйста, имейте в виду, что я новый .. что это такое?

+0

Это не дубликат этого вопроса; этот вопрос касается конкретно неожиданной оценки ввода пользователя при использовании 'input'; @John использует 'raw_input' –

ответ

2

Я думаю, что вы используете Python 2.7. Причина в том, что с этой версией Python функция input запрашивает строку у пользователя, затем пытается оценить эту строку. Поскольку John не определен в вашем коде, Python жалуется.

Попробуйте либо запустить python3, либо изменить его на использование raw_input вместо input.

С Python 3 (выход из интерактивной сессии):

> person = input('Enter name:') 
Enter name:John 

> print('Hey', person) 
Hey John 

С Python 2:

> person = raw_input('Enter name:') 
Enter name:John 
> print 'Hey', person 
Hey John 
+2

@Afflicted С вашей ссылки:' input ([приглашение]): эквивалентно eval (raw_input (prompt)), и это то, что я пытался объяснить в ответ. Никогда не сказал, что вход для python 3. И 'raw_input' не считается хуже. Версия Python 3 'input' - это то, что Python 2 вызывает' raw_input'. – Bendik

0

Вы работаете Python 3 код на Python 2 переводчика. Либо обновить питон с homebrewbrew install python3 или использовать raw_input для питона 2

В Python 2, raw_input() возвращает строку, и вход() пытается выполнить вход в качестве выражения в Python.

+0

Спасибо, что я лучше работал с raw_input, но результат все еще не работает 'Введите ваше имя: john (' Привет, ',' john ') Johnathans-iMac: скрипты johnathansmith $' – John

+0

Как это не работает? Попробуйте поместить печать («Hello» + «+ person»), иначе вы не получите промежутка между приветствием и человеком. обновите свой вопрос с новой проблемой выпуска, а не дополнительным комментарием. – Afflicted

+0

для вывода, который я получаю »(« Привет, »,« john ») – John

2

Изменить код для

person = raw_input('Enter your name: ') 
print 'Hello', person 

В python2, вам нужно использовать raw_input, чтобы получить пользовательский ввод из командной строки. В Python2 print - это утверждение. Помещение круглых скобок вокруг аргументов вызывает создание tuple и передачу в оператор print.

-2
person = input('Enter your name: ') 
print('Hello' + ' ' + person) 

Enter your name: Aaron 
Hello Aaron 

Использование тех же os, что и op, и это то, что я сделал, и получил в качестве вывода.

input() # Is NOT a python 3 dependant function as clearly stated in the docs. 

https://docs.python.org/2/library/functions.html#input

" вход ([подсказка]) Эквивалент Eval (raw_input (подсказка)).

Эта функция не поймать ошибок пользователя. Если вход синтаксически не действует , SyntaxError будет поднят. Другие исключения могут быть подняты, если во время оценки возникли ошибки.

Если модуль readline был загружен, то input() будет использовать его для обеспечения сложного l Ine редактирования и истории.

Рассмотрите возможность использования функции raw_input() для общего ввода от пользователей. "

Это ни собственно, ни неприличным использовать вход, на самом деле, это, как правило, лучше предложение использовать raw_input() происходит от старых проблем, которые больше не существуют, и в этой конкретной ситуации не будет влиять на Op.

Кроме того, любые синтаксические ошибки, которые существуют будет происходить на тот же уровень, при использовании raw_input нет веского аргумента в этой ситуации не использовать raw_input() над входом() лол

Downvoting правильного ответа, потому что ты злишься, что вы ошибаетесь, это нарушение правил, грустно, насколько раковым и неправильным этот сайт стал в последние несколько месяцев.

+0

Вы получаете downvoted, потому что это не решит проблему OPs. Это вызовет 'NameError' в Python 2, который OP явно использует. –

+0

In Python 2, используя 'input()' для чтения строк, вам нужно ввести его с кавычками, отличными от 'raw_input()' и '' input() 'Python 3, которые вы можете просто ввести, как хотите. –

+0

Также, используя Python 2 'input()' считается плохим f или причины введения кода, так что ваш «старый вопрос, который больше не существует» неверен –