#python #syntax
#python #синтаксис
Вопрос:
Я полагаю, что обнаружил ошибку в Cloud9 IDE, поскольку я получаю синтаксическую ошибку в следующем коде:
for x in optionMenu:
print x[0], x[1]
action = raw_input ("Please select an action: ")
if action == "1":
direction = directionMenu()
if direction == "East":
validAction = True
print "You raise the portcullis and enter the palace."
room2(character)
else:
print "You can't go that way!"
elif action == "2":
characterMenu(character)
elif action == "3":
if searched_yet1 == False:
skill_pass = skillCheck(1, character.search)
if skill_pass == True:
print "The double portcullis seems moveable with some effort."
searched_yet1 = True
else:
print "You fail to find anything worthy of note. "
searched_yet1 = True
else:
print "You have already attempted that action!"
elif action == "4":
if listened_yet1 == False:
skill_pass = skillCheck(5, character.listen)
if skill_pass == True:
print "Sounds coming from deep in the palace can be heard every few minutes."
listened_yet1 = True
else:
print "You fail to hear anything worth of note. "
listened_yet1 = True
else:
print "You have already attempted that action!"
Синтаксическая ошибка возникает в "elif action == "4":
. Я делаю что-то не так или я обнаружил ошибку в Cloud9 IDE? Я попытался отрегулировать интервал. Есть ли ошибка в приведенном выше операторе печати?
РЕДАКТИРОВАТЬ: версия Python 2.7.6, ошибка
File "/home/ubuntu/workspace/dungeonMap.py", line 63
elif action == "4":
^
SyntaxError: invalid syntax
Ответ №1:
Когда я изучаю ваш код, опубликованный здесь, строке elif action == 4:
предшествуют 4 пробела, а затем 2 табуляции. Смешивать пробелы и табуляции в Python — очень плохая идея. Я также вижу, что некоторые строки, такие как предыдущая, используют только пробелы для отступов.
Замените эти две вкладки, а также любые другие, пробелами и настройте вашу IDE на использование только пробелов при отступах. Посмотрите, решит ли это проблему.
Присмотревшись повнимательнее, я теперь вижу прямую проблему. Я считаю, что Python обрабатывает табуляцию как 8 пробелов, независимо от того, как она отображается в вашем редакторе. Учитывая это, ваша строка на две строки выше вашей проблемной строки является else:
но с отступом, чтобы завершить if action == "1":
строку, а не if searched_yet1 == False:
строку, которую вы намеревались. Затем Python видит вашу elif action == 4:
строку как an elif
без соответствующего предшествующего if
.
Опять же, замена всех этих табуляций пробелами, а затем правильное отображение отступов решит эту проблему и другие.
Комментарии:
1. Я понятия не имел, что табуляции и пробелы влияют на что-либо! Я слышал об этих вещах, но понятия не имел. Я перенастрою свою среду IDE
2. Если вы не знали, что отступы — очень важная часть синтаксиса Python, как вам удалось написать свой код до сих пор?
3. Ну, я не знал, что табуляции и пробелы — это разные вещи, я имею в виду.