鱼C论坛

 找回密码
 立即注册
查看: 96|回复: 1

零基础入门学习python(最新版)28讲课后习题

[复制链接]
发表于 2025-4-23 18:20:00 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
第5题 >>> "I love FishC.com".translate(str.maketrans("love", "1234", "love"))这里不是把"love"这个字符串给忽略吗?为什么解析说是把'l'、'o'、'v'、'e' 4 个字符给忽略了,如果要忽略这4个字符,不应该 "I love FishC.com".translate(str.maketrans("love", "1234",'l'、'o'、'v'、'e ))这样写吗?我的答案是"I FishC.c2m"
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2025-4-23 18:22:43 | 显示全部楼层
关于字符串translate方法的解答

你的理解有部分偏差,我来分步解释:

  • str.maketrans的三个参数作用
    - 前两个参数是字符替换映射(必须等长)
    - 第三个参数是要删除的字符集合(每个字符独立处理)
  • 原代码解析
    代码: "I love FishC.com".translate(str.maketrans("love", "1234", "love"))

    生成转换表时:
    1. 前两个参数建立映射:l→1 / o→2 / v→3 / e→4
    2. 第三个参数覆盖前两个映射,强制将 l/o/v/e 映射为 None(即删除)
  • 实际执行过程
    原字符串每个字符处理:
    I → 保留
    空格 → 保留
    l → 删除
    o → 删除
    v → 删除
    e → 删除
    后续字符中的 o → 删除


    最终结果应为:
    I  FishC.cm(两个空格来自原字符串的空格保留)
  • 为什么不是"I FishC.c2m"
    你期望的 "2" 来自 o→2 的替换,但第三个参数会覆盖替换映射,所有 l/o/v/e 只执行删除不执行替换


验证代码:

  1. s = "I love FishC.com"
  2. table = str.maketrans("love", "1234", "love")
  3. print(s.translate(table))  # 输出:I  FishC.cm
复制代码


总结要点
  • 删除参数是字符集合,不是子字符串匹配
  • 当替换映射与删除字符冲突时,删除优先级更高
  • 原题结果中的 "2" 不存在,说明你的测试可能有误


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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-10 02:01

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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