2016-08-17 3 views
0

, немного оглядевшись, я до сих пор не пришел к выводу, почему следующий фрагмент python работает в IDLE, но не в терминале. Любая помощь будет оценена по достоинству.Python работает в IDLE, но не в терминале?

print("Hello User!") 

request_list = [''] 

while True: 
    greeting = input('') 

    if greeting.lower() == "hello": 
     print("Who is this?") 
     print("Welcome back " + input() +", what can I do for you?") 
     break 

    elif greeting.lower() != "hello": 
     print("Show some manners!") 

Ошибка

Traceback (most recent call last): 
File "courtney.py", line 23, in <module> 
greeting = input('') 
File "<string>", line 1, in <module> 
NameError: name 'hello' is not defined 
+1

Ваш терминал, вероятно, использует Python 2, поэтому, когда вы используете 'input', он бросает' NameError'. Попробуйте запустить с помощью 'raw_input', Python 2 эквивалентен Python 3' input.' В Python 2 'input' является эквивалентом' eval (input()) 'в Python 3 –

+0

@ juanpa.arrivillaga, вероятно, имеет лучшее предположение , Я просто запустил это в Python 3, и он, похоже, работал. Введите 'python -version' на терминале и посмотрите, будет ли он печатать 2. [something] вместо 3. [something] – Cody

ответ

0

вы работаете python3 IDLE и терминал установлен в python2.

В переменных окружения вашего компьютера, вы хотите изменить путь к месту установки вашего Python3 вместо питона 2.

Взгляните на картину, тот, который вы хотите изменить в PATH

Environmental Variables

Если вы не хотите, чтобы изменить переменные окружения, чтобы ваш терминал остается используя python2, то вы должны изменить свои входные и печать отчетов.

ниже код является реализация кода в Python 2.7:

print "Hello User!" 

request_list = [''] 

while True: 
    greeting = raw_input("What is your name? ") 

    if greeting.lower() == "hello": 
     print "Who is this?" 
     print "Welcome back " + greeting +", what can I do for you?" 
     break 

    elif greeting.lower() != "hello": 
     print "Show some manners!" 
0

Проблема заключается в том, что вы используете Python 2.x в вашем терминале. Если вы установили оба, вы должны использовать команду «python3» для запуска вашего кода вместо команды «python».

В python 3 'input' может принимать целое число или строку. В python2 'input' не может принимать строку. Только другие вещи. В python 2.x вы должны использовать 'raw_input', чтобы взять строку.

+0

На самом деле, в python 2.x вход может принимать все, даже некоторый код на Python (если моя память работает правильно). Это может привести к проблемам безопасности. –

+0

Да, вы частично правы. Это была скорее идея объяснить разницу, но я изменю ее. Но он не может взять все (без строк) –

+0

Ну, вход может принимать строки, если вы используете цитаты x) –

Смежные вопросы