Почему строковый модуль python F не работает? - PullRequest
1 голос
/ 01 июля 2019

Я делаю приключенческую игру на python 3.7.3 и использую F-строки для некоторых своих операторов печати. При запуске его в терминале и возвышенном тексте строки F выдают ошибку.

import time
from time import sleep
import sys

def printfast(str):
    for letter in str:
        sys.stdout.write(letter)
        sys.stdout.flush()
        time.sleep(0.04)

name = input("\nWhat is your name?\n\n")

printfast(f("You are the mighty hero {name}. In front of you, there is a grand palace, containing twisting marble spires and spiraling dungeons.\n")

Ответы [ 3 ]

0 голосов
/ 01 июля 2019

f-строки создаются не с помощью функции, это тип строки, который вы обозначаете с помощью f'' (аналогично b'' или r'')

Поэтому попробуйте использовать:

printfast(f"You are the mighty hero {name}. In front of you, there is a grand palace, containing twisting marble spires and spiraling dungeons.\n")
0 голосов
/ 01 июля 2019

Вы делаете это неправильно.f это не функция, это скорее синтаксический идентификатор.В то время как обычные кавычки " указывают начало обычной строки (или конец строки любого типа), токен f" указывает, в частности, начало строки формата.Та же идея применима к необработанным строкам, обозначенным r", или двоичным строкам, обозначенным b".

Вместо

f("You are...")

до

f"You are..."
0 голосов
/ 01 июля 2019

В f("You ...) вы вызываете функцию с именем f со строкой в ​​качестве входного параметра, и у вас нет такой функции, поэтому возникает ошибка.

Вам нужно опустить заключающие скобки (), чтобы сделать его f-строкой:

f"You are the mighty hero {name}. In front of you, there is a grand palace, containing twisting marble spires and spiraling dungeons.\n"
...