鱼C论坛

 找回密码
 立即注册
查看: 255|回复: 6

[快问快答] 第028讲:字符串(II)

[复制链接]
发表于 2025-12-23 12:45:45 | 显示全部楼层 |阅读模式
购买主题 已有 1 人购买  本主题需向作者支付 5 鱼币 才能浏览
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2025-12-26 20:45:10 | 显示全部楼层
@FishC 执行以下代码后,输出结果是?

s = "hello"
s.replace("l", "L")
print(s)

A. hello
B. heLLo
C. heLlo
D. HeLLo
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-12-26 20:45:28 | 显示全部楼层
zyxhgg 发表于 2025-12-26 20:45
@FishC 执行以下代码后,输出结果是?

s = "hello" ...


字符串在 Python 中是不可变的,replace 方法会返回一个新的字符串,而不会修改原始字符串。

因此,代码中的 s.replace("l", "L") 虽然返回了 "heLLo",但原始变量 s 的值并没有改变,仍然是 "hello"。

执行 print(s) 会输出原始字符串:

  1. hello
复制代码


所以正确答案是 A. hello。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-12-30 17:39:15 | 显示全部楼层
@FishC 下面代码执行后,\t 最终会被替换成几个空格?

s = 'ab\tcd'
print(s.expandtabs(4))

A. 1个
B. 2个
C. 4个
D. 8个
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-12-30 17:39:37 | 显示全部楼层
dongqing1 发表于 2025-12-30 17:39
@FishC 下面代码执行后,\t 最终会被替换成几个空格? ...


问题分析:

字符串 s = 'ab\tcd' 中的 \t 是制表符(Tab)。
方法 expandtabs(4) 会将制表符替换为空格,使得替换后的字符串在视觉上对齐到“制表位”。
制表位的计算方式是从字符串开头算起,每 4 个字符为一个制表位。

计算过程:
  • 字符串 'ab\tcd' 中,\t 前面有两个字符 'ab'
  • 下一个制表位是 4 的倍数,即位置 4
  • 当前位置是 2,距离下一个制表位还有 2 个字符。
  • 因此,\t 会被替换为 2 个空格。


代码验证:

  1. s = 'ab\tcd'
  2. print(repr(s.expandtabs(4)))
复制代码

输出结果:

  1. 'ab  cd'
复制代码

可见 \t 被替换为两个空格。

所以正确答案是 B. 2个。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2026-3-2 09:55:19 | 显示全部楼层
@FishC 执行以下代码后,输出结果是?

s = '---==---=='
print(s.rfind('==', 0, 7))

A. 3
B. 4
C. 8
D. -1
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2026-3-2 09:56:19 | 显示全部楼层
xiaobin9095 发表于 2026-03-02 09:55
@FishC 执行以下代码后,输出结果是?

s = '---==- ...

执行以下代码后,输出结果是?

s = '---==---=='
print(s.rfind('==', 0, 7))

A. 3
B. 4
C. 8
D. -1


输出结果是 A. 3

详细解释如下:

字符串 s = '---==---==' 的索引位置如下:


  1. 字符: -   -   -   =   =   -   -   -   =   =
  2. 索引: 0   1   2   3   4   5   6   7   8   9
复制代码


方法 s.rfind('==', 0, 7) 的作用是:在切片 s[0:7](即索引 0 到 6)中,从右向左搜索子串 ==' 最后一次出现的位置,并返回其起始索引(若未找到则返回 -1)。

切片 s[0:7] 的字符为:---==--(索引 0 至 6)。其中,==' 仅出现在索引 3 和 4 处(起始索引为 3)。因此,rfind 返回 3

注意:虽然整个字符串在索引 8 和 9 处也有 ==',但由于搜索范围限制在索引 0 到 6,所以不会被包含。

因此,正确答案是 A. 3。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-3-11 13:47

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表