2014-12-19 2 views
1

У меня возникло чувство, что я буду чувствовать себя глупо, когда ответы вернутся, но я действительно смущен.Синтаксическая ошибка Python с назначением

Я сократил код питона (2.6.4) к следующим:

k = 0 
if k == 1: 
    k = 0 
else: 
    k = 1 
k = 3 

я получаю ошибку синтаксиса в k = 3. Что мне не хватает.

+1

Невозможно воспроизвести. Работает отлично, как написано. – CoryKramer

+2

, пожалуйста, отредактируйте свой вопрос и добавьте ** полный текст ** ошибки – MattDMo

+0

Вы вставляете это в интерактивный интерпретатор? Если это так, вам нужно добавить * новые строки * после любого составного оператора верхнего уровня, поэтому после 'k = 1'. –

ответ

2

Вы должны использовать интерактивный интерпретатор. Вам нужны пустая строка перед тем k = 3:

>>> k = 0 
>>> if k == 1: 
... k = 0 
... else: 
... k = 1 
... k = 3 
    File "<stdin>", line 5 
    k = 3 
    ^
SyntaxError: invalid syntax 
>>> 
>>> k = 0 
>>> if k == 1: 
... k = 0 
... else: 
... k = 1 
... 
>>> k = 3 

Это говорит Python, что if...else заявление закончено.

Обратите внимание, что это необходимо только в интерпретаторе. Python не обращает внимания на вертикальное пространство, подобное этому при чтении нормальных исходных файлов.

+0

Интересно, я этого не знал. Я попробовал это, как вы сказали, и все прошло отлично. Источником проблемы является файл python на веб-сервере (apache). В коде есть немного больше, но с дополнительной строкой или без дополнительной строки интерпретатор просто поручается. Я не знаю, является ли это проблемой синтаксиса или нет. – doug

+0

ОК, я понял, да, я чувствую себя глупо. Вот пример: dict = {'l': 'test', 'm': 'test_again'} для ключа в dict: if key == 'l': dict ['k'] = 'test_also ' Это действительно не нравится изменять размер словаря. – doug

+0

Вы не можете изменить размер словаря, итерации по нему. Это затягивает протокол итераций Python. Вместо этого вам нужно сделать новый словарь из значений в старом. – iCodez

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