Я прохожу Изучите Python упражнение «Трудный путь» 24 , преобразуя все форматирование старого стиля (%), которое они использовали в книге, в мой предпочитаемый новый стиль (.format ()).
Как видно из приведенного ниже кода, я могу успешно распаковать значения кортежей, возвращаемые функцией, если назначу переменную "p". Но когда я использую это возвращаемое значение напрямую, он выдает TypeError.
def secret_formula(started):
jelly_beans = started * 500
jars = jelly_beans / 1000
crates = jars / 100
return jelly_beans, jars, crates
start_point = 10000
#Old style
print("We'd have %d beans, %d jars, and %d crates." % secret_formula(start_point))
#New style that works
print("We'd have {p[0]:.0f} beans, {p[1]:.0f} jars, and {p[2]:.0f} crates.".format(p=secret_formula(start_point)))
#This doesn't work:
print("We'd have {0:.0f} beans, {1:.0f} jars, and {2:.0f} crates.".format(secret_formula(start_point)))
Выдает ошибку:
Traceback (most recent call last):
File "ex.py", line 16, in <module>
print("We'd have {0:.0f} beans, {1:.0f} jars, and {2:.0f} crates.".format(secret_formula(start_point)))
TypeError: unsupported format string passed to tuple.__format__
- Может кто-нибудь объяснить, почему использование функции в .format () напрямую
не работа?
- Как преобразовать его в f-строку?