人人都能学编程
English 开始学习
课程 2 · Python 入门第 6 课 / 共 14 课免费阅读

字符串方法与 f-string · Python 从零开始

怎样方便地修改、查找和排版文字?

课程目录

为什么需要它

真实的输入很乱:多余的空格、乱七八糟的大小写。输出也要好读:「Ada scored 95 points」,而不是一堆逗号和 +。字符串自带很多清理和查找用的方法 Method,f-string 让排版变得很轻松。

直觉理解

方法就是属于某个值的函数,用点号调用:值.方法()。

方法作用例子
.upper() / .lower()转大写 / 小写"Hi".upper() → "HI"
.strip()去掉两端的空格" hi ".strip() → "hi"
.replace(a, b)把所有 a 换成 b"cat".replace("c", "b") → "bat"
.count(x)x 出现了几次"banana".count("a") → 3

方法返回的是一个新字符串,原来的字符串不会变(字符串是不可变的 Immutable)。

"an" in "banana" 问的是「里面有没有……」,结果是 True 或 False。

f-string 以 f 开头,把值写在 { } 里:f"{name} is {age}"。花括号里可以写任何表达式:f"{age + 1}"。

定义

方法 Method

A method is a function attached to a value, called with dot notation such as text.upper().
方法是附属于某个值的函数,用点号调用,比如 text.upper()。

f-string 格式化字符串

An f-string is a string literal prefixed with f in which expressions inside braces are evaluated and inserted.
f-string 是以 f 开头的字符串,花括号里的表达式会被计算并插入到字符串中。

示例

清理乱糟糟的输入

动手试试

方法可以连着调用:每一个都作用在上一个的结果上。

msg = "  Hello World  "
clean = msg.strip().lower()
print(clean)
print(clean.count("o"), "world" in clean)
print(msg)
逐步执行
  1. L2strip() 去掉两端的空格,lower() 再转成小写。clean = 'hello world'
  2. L4有两个 o;而且包含 "world"。2 True
  3. L5msg 本身没有变:方法返回的是新字符串。

用 f-string 排版

动手试试

对比两行 print:输出一样,但 f-string 更好读。

name = "Ada"
score = 95
print(name + " scored " + str(score) + " points")
print(f"{name} scored {score} points")
print(f"Next time: {score + 5}")
逐步执行
  1. L3用 + 的话,数字要先用 str() 转换。
  2. L4用 f-string,{score} 会自动插进去。
  3. L5花括号里可以写任何表达式。Next time: 100

常见错误

忘了写 f

没有 f 的 "{name}" 会把花括号原样打印出来。要写 f"{name}"。

以为原字符串会变

只写 name.upper() 看不出任何效果。要把结果存起来或打印出来:name = name.upper()。

小测验

1. 这段代码会输出什么?

print("banana".replace("a", "o"))
  1. A
    bonono
  2. B
    bonana
  3. C
    banana
查看答案

答案:A

replace 会替换所有的 "a"。

2. 这段代码会输出什么?

x = 3
print(f"x={x * 2}")
  1. A
    x=6
  2. B
    x=3 * 2
  3. C
    x={x * 2}
查看答案

答案:A

花括号里的表达式会被计算:3 × 2 = 6。

动手练习

3 道练习,分三层:先预测程序的输出,再按新需求改程序,最后从零写一个。代码在浏览器里运行,提交马上判题。

  1. 预测输出方法实战

    准确写出程序的输出。

  2. 改需求整齐的问候

    用户输入的名字带着多余的空格和奇怪的大小写。用 .strip() 和 .capitalize()(首字母大写,其余小写)清理名字,再用 f-string 打印问候:Hello, Ada!

  3. 从零写大喊并计数

    读入一个单词。第一行打印它的全大写形式,第二行打印字母 a 在里面出现了几次(a 和 A 都算)。

在互动课里练这一课

打开互动课,这些例子都能直接改、直接运行,练习题提交马上判题。免费开始,不用注册。

互动课按顺序解锁:前面的课还没学,会先带你到课程地图。

本课术语

术语中文英文定义
Method方法A function attached to a value, called with a dot.
f-stringf-string 格式化字符串A string starting with f whose {expressions} are evaluated and inserted.
Immutable不可变Describes values, like strings, that cannot be changed after they are created.
inin 成员运算An operator that checks whether a value is contained in another, giving True or False.