Я следую онлайн-руководству по созданию текстовых приключений.
У них есть действие, которое выглядит так:
<p>def you_quit(why):</p>
<p> print(f"{why}. You_quit!") </p>
<p> exit(0) </p>
Но когда я запускаю программу, я получаю недопустимую синтаксическую ошибку с маленькой морковкой, указывающей на вторую кавычку. Так:
<p>print(f"{why}. You_quit!") </p>
<p>------------------------------------^</p>
Я возился, но я не могу заставить код работать без ошибок, когда я добираюсь до этой строки. Я почти уверен, что это как-то связано с f, но руководство не объясняет назначение f.
Любая помощь будет оценена по достоинству, и если форматирование испорчено, это потому, что я на мобильном телефоне. Извиняюсь.
@Остин, спасибо! Я думал, что поймал их всех.
@Redpenrev сама функция в порядке. Это что-то до этого, что вызывает синтаксическую ошибку
Какую версию Python вы используете? f поддерживаются в более новых версиях (3.6+).
@gmds сначала я подумал об этом, потому что у меня была аналогичная синтаксическая ошибка в другом месте, где я забыл закрыть скобки в предыдущей строке, но в данном случае это буквально первые три строки моей программы.
@ Остин, на самом деле я не уверен. Независимо от того, какой из них был предварительно установлен на Mac примерно в 2015 году. Вероятно, 2.10, я на 90% уверен, что это не 3 или более поздняя версия.
@ Шон Фрэнсис Н. Балле, к сожалению, моя мама заставила меня все выключить, потому что уже поздно. Предполагая, что это не версия 3, а более ранняя версия: какова цель «f» и что она заменила в более ранних версиях? Я думаю, что я пытаюсь спросить, что я могу Google, чтобы выяснить, как решить мою ошибку?
Это каре, а не "пряник".
@tripleee хорошо! Спасибо!
@Redpenrev Беги import sys; sys.version_info или python --version.






Сделайте свой Def на def и не забудьте про отступ (четыре пробела) в питон.
Измените свой код на это:
def so(why):
print(f"{why}.You quit!")
exit(0)
И беги!
Чтобы запустить его, напишите:
so("You didn't try!")
Здесь вы устанавливаете значение why
Выход:
You didn't try! You quit!
Спасибо! Я попробую это и исследую так () больше!
@Redpenrev Всего наилучшего. ;)
Похоже, что версия, которую вы используете, и версия, которую использует руководство, отличаются. Очевидно, что руководство использует Python 3.6 или более позднюю версию, а поскольку вы работаете на Mac, вы используете Python 2.7. Судя по сообщению это, вы используете версию Python 2.7.10 (а не 2.10, как вы сказали в комментариях).
Чтобы решить вашу проблему, вам нужно будет использовать установку Python 3. Вы можете установить Python 3, используя Домашний.
brew install python3
После его установки вы можете запустить свой код, используя
python3 <your-script>.py
Однако, если вы намерены остаться с Python 2 (который не рекомендуется начиная с Поддержка Python 2.7 останется всего на несколько месяцев), вам придется использовать то, что я бы назвал классическими инструментами форматирования строк, как обсуждалось в ответ Яша.
В комментариях вы спросили
What's the purpose of 'f' and what did it replace in earlier versions?
Вкратце: f-строки предлагают более простой способ форматирования строк. Он не заменяет предыдущие инструменты форматирования строк.
f-струны пришел из ПКП 498. Это позволяет встраивать выражения в строковые литералы с минимальным синтаксисом. Проще говоря, это просто еще один способ форматирования строк, но с дополнительным преимуществом выполнения выражений внутри этих строк. Вы определяете f-строку, добавляя префикс f к строковому литералу.
Например, вы хотите вычислить площадь треугольника и распечатать ее. До версии 3.6 вы бы сделали что-то вроде
print('Area of a triangle: {}'.format((base * height) / 2))
С f-строками вы можете просто использовать
print(f'Area of a triangle: {(base * height) / 2}')
Всё намного проще!
По сути, f-строки просто обеспечивают более простой способ форматирования строк. PEP также заявляет, что не собирается заменять формат % и format(). Думаю, это для обратной совместимости.
Остерегайтесь функции автоматического использования заглавных букв в мобильной клавиатуре.
Def->def.