第一个早上,Maya 七点打开姑妈的咖啡摊,第一位客人要的是一张小票,不是一段解释。她手里有一个名字、一个价格,还有几行代码,要把它们变成客人一眼能看清的字。print() 里到底是哪一部分在决定长相?
每个 Python 程序都要先产生一个看得见的结果。print() 是检查变量、验证想法和展示输出最简单的方式。本课你会学习字符串、分隔符和 f-string,用它们拼出清楚的提示信息。 你还会排版一张多列收据,并检查看不见的空白字符。
print() 是一个函数
把一个或多个值传给 print(),Python 会把它们转成文字并写到屏幕上。默认情况下,多个值之间用空格分隔,行尾会换行。你可以用 sep 改变分隔符,用 end 改变行尾。
print("拿铁", 4.5)
print("拿铁", 4.5, sep=": ")
print("加载中", end="...")
print("完成")分隔符与行尾
字符串需要引号
字符串就是引号里的文字。单引号和双引号都可以,但两端必须一致。三引号可以让字符串跨越多行。如果文字里有英文撇号,可以用双引号包住,或者用反斜杠转义。
name = "Maya"
message = 'It\'s Python'
print(name)
print(message)创建字符串
f-string 插入变量
在左引号前加 f,再把表达式放进花括号,就能把变量嵌进文字。这是组合文本和变量最清楚的方式。像 .2f 这样的格式说明符可以让金额保留两位小数。
name = "Maya"
price = 4.5
print(f"你好,{name}!")
print(f"总计:{price:.2f} 元")更易读的格式化输出
排版一行收据
真实输出通常是一张表,而不是一个值。格式说明符可以设置最小宽度并对齐:< 左对齐,> 右对齐,.2f 固定两位小数。列宽不必完全相同,但保持一致,收据才容易读。
name = "Latte"
qty = 2
price = 4.5
line_total = qty * price
print(f"{name:<8} {qty:>2} x {price:>5.2f} = {line_total:>6.2f}")
print(f"{'TOTAL':<8} {'':>2} {'':>5} {line_total:>6.2f}")宽度、对齐和固定小数位
先检查原始输出,再猜格式
print() 会隐藏空字符串、空格和换行之间的区别;repr() 会把这些字符显示出来,len() 会数出长度。输出不对时,先检查原始值,比反复猜格式更快。
message = " Latte \n"
print(repr(message))
print(len(message))
print(repr(message.strip()))
print(message.strip().split())repr() 会暴露隐藏字符
返回值,而不只是打印
print() 只负责把文字写出来,返回值是 None;return 则把值交回给调用者。只要一个函数会被使用第二次,这个区别就很重要。只会打印的函数只能给人看,会返回值的函数才能被测试、拼接或写进 JSON。如果你在期望得到文字的地方看到了 None,先检查函数是不是只打印而没有返回。
def label(name):
return f"商品:{name}"
text = label("拿铁")
print(text)
print(label("茶"), end=" | ")
print(len(text))返回的字符串可以继续使用
本课要点
- print() 可以接收多个值,默认在末尾换行。
- sep 控制多个值之间的文字,end 控制这一行结束后追加什么。
- 字符串两端引号要匹配,多行文字可以用三引号。
- f-string 可以直接把变量和表达式嵌入文本。
- 格式说明符能对齐列;repr() 能暴露 print() 隐藏的空白字符。
- print() 是给人看的,return 是把值交给程序的其他部分。
常见错误
- 忘记右引号,或者单引号和双引号混用。
- 直接用 + 把字符串和数字相加,没有先转换类型。
- 在 f-string 里只写变量名、不写花括号,结果变量名被原样打印。
- 把 repr() 当成另一种 print(),忘了它会显示引号和转义字符。
- 调用一个只会打印的函数,却期望它把值返回。
打印一张两行小票:每行包含商品名和价格,用短横线分隔。
动手试试
改改变量、先预测输出,再运行代码。第一次点击“运行代码”时会下载 Python 运行时,可能需要几秒钟。
练习本课
12 道题,作答后立即看到解释。