跳转到主要内容
模块 1 · 第 4 课(共 4)课程中的4/36~8 min
模块课程(4/4)

打印和 f 字符串

向用户传达某些信息(或查看内部发生了什么 我们的程序)我们使用内置的 print(...) 函数。作曲 来自多个值的文本,现代且首选的语法是 f 字符串。

print(...)

Python
print("Ciao, mondo!")           # Ciao, mondo!
print("a", "b", "c")            # a b c       (separati da spazio)
print(2 + 2)                    # 4
print("riga 1", "riga 2")       # riga 1 riga 2

print 可以接受任意数量的参数:它将它们用空格连接起来(通过 默认)并在末尾添加换行符。您可以使用以下命令更改两者 sep 和 end 参数:

Python
print("a", "b", "c", sep="-")   # a-b-c
print("senza newline", end="")  # niente \n dopo

f-string:现代插值

f-string 是以 f 为前缀的字符串:在大括号 {...} 内 您可以插入任何 Python 表达式,该表达式将被计算并插入到 结果:

Python
nome = "Ada"
anni = 30
print(f"Mi chiamo {nome} e ho {anni} anni.")
# Mi chiamo Ada e ho 30 anni.

在大括号内你可以放置调用、操作、对象访问——它是 各方面的Python代码:

Python
prezzo = 12.5
quantita = 3
print(f"Totale: {prezzo * quantita:.2f} €")
# Totale: 37.50 €

冒号后面的 :.2f 是一个 格式规范:在本例中“两位小数 数字,定点”。最有用的格式规范:

  • :.Nf — N 个十进制数字 (f"{pi:.4f}" → 3.1416)。
  • :N / :>N / :<N / :^N — 宽度 N,右/左/中心对齐。
  • :_ 或 :, — 千位分隔符 (f"{1000000:,}" → 1,000,000)。

替代语法(供参考)

在 f 字符串(Python 3.6 中引入)之前,使用了两种形式: 您仍然会在旧代码中遇到:

Python
# stile .format() — verboso ma esplicito
"{} ha {} anni".format("Ada", 30)

# stile %-formatting — molto vecchio
"%s ha %d anni" % ("Ada", 30)

对于新代码,始终使用 f-string:更短、更易读、更快。

使用 f 字符串进行高级格式化

F 字符串直接在花括号内支持丰富的格式规范。例如,要格式化精确到小数点后两位的十进制数,您可以编写:

Python
price = 19.99
print(f"Price: {price:.2f} $")

:.2f 说明符指示我们想要表示精确到小数点后两位的浮点数。

自己尝试一下

锻炼#python.m1.l4.e1
尝试:0加载中...

给定“name = 'Ada'”和“age = 30”,用 f 字符串构建字符串“Ada ha 30 anni”并将其分配给“line”。评估“线”。

正在加载编辑器...
显示提示

语法:f“某事{变量}某事其他”

3 次尝试后可用的解决方案

复习练习

锻炼#python.m1.l4.e2
尝试:0加载中...

使用 print() 打印从“pi = 3.14159”开始的字符串“pi greco vale 3.14”,使用格式规范为 2 位小数的 f 字符串。

正在加载编辑器...
显示提示

格式规范位于大括号内的冒号后面:{pi:.2f}。

3 次尝试后可用的解决方案

额外的挑战

锻炼#python.m1.l4.e3
尝试:0加载中...

Given a variable `price` set to `19.99`, use an f-string to construct the string `'Price: 19.99 €'` and store it in `receipt_line`. Finally, evaluate the variable.

正在加载编辑器...
显示提示

使用 f"Price: {price} €" 并将结果分配给receipt_line。

3 次尝试后可用的解决方案