SyntaxError в функции печати в python - PullRequest
0 голосов
/ 30 марта 2019

Я слежу за онлайн-руководством по созданию текстовых приключений.

У них есть действие, которое выглядит следующим образом:

<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.

Буду признателен за любую помощь, и если форматирование испорчено, я на мобильном телефоне.Сожалею.

Ответы [ 2 ]

0 голосов
/ 30 марта 2019

Похоже, что версия, которую вы используете, и руководство, отличаются.Очевидно, что в руководстве используется Python 3.6 или более поздней версии, и, поскольку вы работаете на Mac, вы используете Python 2.7.Исходя из этого поста, используемая вами версия, вероятно, Python 2.7.10 (а не 2.10, как вы сказали в комментариях).

Для решения вашей проблемы вам потребуетсяиспользуйте установку Python 3. Вы можете установить Python 3, используя Homebrew .

brew install python3

После установки вы можете запустить свой код, используя

python3 <your-script>.py

Однако, если вы намереваетесь остаться с Python 2 (что не рекомендуется, поскольку Python 2.7 будет иметь только несколько месяцев поддержки ), вам придется использовать то, что я бы назвал классическими инструментами форматирования строк, как обсуждалось в ответ Яша .


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

Какова цель 'f' и что она заменила в более ранних версиях?

TL; DR: f-строки предлагают более простой способ форматирования строк.Он не заменяет предыдущие инструменты форматирования строк.

f-строки взяты из PEP 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().Я считаю, что это для обратной совместимости.

0 голосов
/ 30 марта 2019

Сделайте ваши Def в def и не забудьте отступ (четыре пробела) в Python .

Измените свой код на это:

def so(why):
    print(f"{why}.You quit!")
    exit(0)

И запустите его!
Чтобы запустить его, напишите:

so("You didn't try!")

Здесь вы устанавливаете значение why

Вывод:

Вы не пробовали!Вы ушли!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...