核心语法 · 10 道样题

Python 字符串练习题与答案

字符串题很快会暴露小错误:切片差一位、方法返回新字符串而不是修改原值,或者格式化输出少了一个空格。这十道题覆盖最重要的模式。

86 道题在完整题库中 · 21 道选择 · 9 道填空 · 56 道输出

这个主题考什么

  • 理解索引和切片,切片不包含结束位置。
  • 正确使用 split、join、strip 和 replace 等方法。
  • 用 f-string 构造可读输出,并预测精确字符。

常见错误

  • 忘记切片不包含结束索引。
  • 以为字符串方法会修改原字符串。字符串是不可变的。
  • 题目要求精确输出时忽略空格、换行或引号。
样题

样题

10

从完整题库中挑出的 10 道代表题。先自己作答,再展开答案。

  1. 选择题q0108

    1. 小明从「Python奶茶」这个店名里取前 3 个字做招牌,"Python奶茶"[0:3] 的结果是?

    1. Pyt
    2. Pyth
    3. hon奶茶
    4. yth
    显示答案

    答案

    A. Pyt

    解析: 切片含起点、不含终点,[0:3] 取下标 0、1、2,即 P、y、t;下标 3 已经是第四个字符,这是切片最常见的错法。

  2. 选择题q0119

    2. 判断对错: True 和 False 是 Python 的布尔值, 首字母必须大写。

    1. ✅ 正确
    2. ❌ 错误
    显示答案

    答案

    A. ✅ 正确

    解析: Python 的布尔字面量是首字母大写的 True 和 False。写成 true、false 只是普通名字,会抛 NameError。

  3. 选择题q0126

    3. 🧋 小明拆分订单字符串,'hello world'.split() 的结果是?

    1. ['hello','world']
    2. ['helloworld']
    3. ['hello world']
    4. ['hello',' ','world']
    显示答案

    答案

    A. ['hello','world']

    解析: 不传参数时 split() 把任意一段空白当作一个分隔符,并且会丢掉首尾空白,所以连续空格不会切出空串,这一点和 split(' ') 不同。

  4. 选择题q0150

    4. 执行 s = "abc"; s[0] = "A" 会怎样?

    1. 变成 Abc
    2. 抛出 TypeError
    3. 自动变成列表
    4. 只写入一次
    显示答案

    答案

    B. 抛出 TypeError

    解析: 字符串不可变,按项赋值会抛 TypeError。应改用切片、replace() 或 join 生成新字符串。

  5. 填空题q0110

    5. 小明格式化奶茶价格 f"{3.14159:.2f}" 元,输出是 ___

    显示答案

    答案

    3.14

    解析: :.2f 保留两位小数并舍入,3.14159 成为 3.14。格式只作用于冒号前的值,f-string 其余部分原样保留。

  6. 填空题q0127

    6. 🧋 小明拆分订单字符串,'1,2,3'.split(',') 返回 ___ 类型

    显示答案

    答案

    列表

    解析: split() 总是返回列表,哪怕只有一个字段;元素都是字符串,数字字段还要用 int() 或 float() 另行转换。

  7. 填空题q0185

    7. 把订单里的短横线替换成空格,横线填什么方法?

    order = '拿铁-大杯'
    print(order.____('-', ' '))
    显示答案

    答案

    replace

    解析: replace('-', ' ') 返回把每个连字符换成空格的新字符串。原 order 字符串不变,因为字符串不可变。

  8. 输出预测q0109

    8. 小明截取店名,下面代码会打印什么?

    print("Python奶茶"[:3])
    显示答案

    答案

    Pyt

    解析: [:3] 省略起点,从下标 0 开始、到 3 之前结束,取到 P、y、t;下标 6 的空格根本碰不到,结果是三个字母。

  9. 输出预测q0144

    9. 调试标签对编码 65 的字符使用 repr。会打印什么?

    print(f"{chr(65)!r}")
    显示答案

    答案

    'A'

    解析: chr(65) 生成字符 A,!r 使用 repr 表示,会给字符串加上引号。所以输出是带引号的 'A'。

  10. 输出预测q0168

    10. `is_pangram('7h3 qu1ck brown fox jumps ov3r 7h3 lazy dog')` 返回什么?

    from string import ascii_lowercase
    
    
    def is_pangram(sentence):
        return all(char in sentence.lower() for char in ascii_lowercase)
    
    print(is_pangram('7h3 qu1ck brown fox jumps ov3r 7h3 lazy dog'))
    显示答案

    答案

    False

    解析: 数字 7 和 3 顶替了字母,t 和 e 始终没出现,all() 返回 False。这种数字替代写法不算全字母句。

常见问题

为什么 s.strip() 没有改变 s?

字符串不可变。strip 返回一个新字符串;如果需要保留结果,要把它赋给变量。

怎样连接字符串列表?

使用分隔符.join(列表)。列表里的每一项都必须是字符串。

继续保持练习节奏。

完整题库会在这个浏览器里记住进度,支持按主题筛选,并包含每日一题和错题重练。

打开完整练习