ошибка в интерактивном режиме Python?

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

>>> while True:
...   reply = raw_input('enter text:')
...   if reply == 'stop':
...     break
...   print reply
... print 'bye'
  File "<stdin>", line 6
    print reply
        ^
SyntaxError: invalid syntax
>>>

но он выполняется нормально, если сохранить как скрипт.

~ $cat test.py
#!/usr/bin/env python
# encoding=utf8

while True:
  reply = raw_input('enter text:')
  if reply == 'stop':
    break
  print reply
print 'bye'
~ $python test.py
enter text:19
19
enter text:456789
456789
enter text:$%^&*(
$%^&*(
enter text:TGHJKLO:P
TGHJKLO:P
enter text:#$%^&*()_
#$%^&*()_
enter text:stop
bye

это ошибка? или что-то еще, что я должен знать об интерактивном режиме Python?

~ $python -V
Python 2.6.6

person andy.why    schedule 24.04.2011    source источник
comment
возможный дубликат печати python, выполненной через некоторое время   -  person Ignacio Vazquez-Abrams    schedule 24.04.2011
comment
Отвечает ли это на ваш вопрос? печать python выполняется через некоторое время   -  person Jongware    schedule 29.01.2020


Ответы (1)


Я думаю, что когда вы вернетесь к первому столбцу отступа, его нужно оставить пустым, чтобы указать, что открытый вами блок теперь готов к интерпретации.

Если вы поместите это в функцию, вызовите ее после того, как она заработает правильно.

    In [66]: def fun():
   ....:     while True:
   ....:         reply = raw_input("enter text:")
   ....:         if reply == 'stop':
   ....:             break
   ....:         print reply
   ....:     print "bye"
   ....: 
person Lynch    schedule 24.04.2011
comment
Означает ли это, что каждый блок, возвращающийся в первый столбец, теперь готов к интерпретации в интерактивном режиме? Понятно. Спасибо. - person andy.why; 24.04.2011