鱼C论坛

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

[已解决]python第二版 28讲第3题解析看不懂

[复制链接]
发表于 昨天 00:49 | 显示全部楼层 |阅读模式

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

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

x
3. 请问下面代码执行的结果是 A 还是 B 抑或是 C 呢(为了你可以更容易地计数,下面使用 * 表示空格)?
print(x)
print(x.expandtabs(2))                                                                                   
print(x.expandtabs(5))
print(x.expandtabs(10))


A:
Hello****FishC
Hello**ishC
Hello*****FishC
Hello**********FishC


B:
Hello***FishC
Hello*FishC
Hello*****FishC
Hello*****FishC


C:
Hello***FishC
Hello*FishC
Hello*****FishC
Hello**********FishC


答:B。
答案为什么是b,看星号数5跟10的返还结果是一样的,包括我在idle上试也是一样的。题的解析附有图片,5的输出,是两个单词之间有五个空格。而10的输出是按照开头算起,把第一个单词也算作空格数。这是为什么
最佳答案
昨天 00:50
关于expandtabs()方法的详细解析

这个问题关键在于理解 str.expandtabs(n) 的工作机制:

1. \t(制表符)的替换规则是:
   - 从字符串开头开始计数字符
   - 每 n 个字符为一个制表位
   - 遇到 \t 时,补充 n - (当前字符数 % n) 个空格

原题分析(假设x = "Hello\tFishC")


  1. 原始字符串:H e l l o \t F i s h C (共5个字符后接\t)
  2.                 ↑ 第5个字符位置
复制代码


1. 执行 x.expandtabs(5)
   - 当前字符数:5
   - 需要补充空格数:5 - (5 % 5) = 5
   - 结果:"Hello" + 5空格 + "FishC"

2. 执行 x.expandtabs(10)
   - 当前字符数:5
   - 需要补充空格数:10 - (5 % 10) = 5
   - 结果:"Hello" + 5空格 + "FishC"

为什么选项B正确?

观察选项B的两种输出:

  1. Hello*FishC       (expandtabs(2))
  2. Hello*****FishC   (expandtabs(5))
  3. Hello*****FishC   (expandtabs(10))
复制代码


当参数为5和10时结果相同,这是因为:
  • 在位置5处,两种参数都需要补充5个空格
  • 只有当字符数超过参数值时,不同参数才会产生差异


验证建议
可以在Python中运行这个测试代码:

  1. x = "Hello\tFishC"
  2. print(repr(x.expandtabs(5)))   # 'Hello     FishC'
  3. print(repr(x.expandtabs(10)))  # 'Hello     FishC'
  4. print(len(x.expandtabs(5)))    # 15
  5. print(len(x.expandtabs(10)))   # 15
复制代码


这说明虽然参数不同,但在当前字符位置下计算结果相同,最终输出长度一致,符合选项B的描述。

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

使用道具 举报

发表于 昨天 00:50 | 显示全部楼层    本楼为最佳答案   
关于expandtabs()方法的详细解析

这个问题关键在于理解 str.expandtabs(n) 的工作机制:

1. \t(制表符)的替换规则是:
   - 从字符串开头开始计数字符
   - 每 n 个字符为一个制表位
   - 遇到 \t 时,补充 n - (当前字符数 % n) 个空格

原题分析(假设x = "Hello\tFishC")


  1. 原始字符串:H e l l o \t F i s h C (共5个字符后接\t)
  2.                 ↑ 第5个字符位置
复制代码


1. 执行 x.expandtabs(5)
   - 当前字符数:5
   - 需要补充空格数:5 - (5 % 5) = 5
   - 结果:"Hello" + 5空格 + "FishC"

2. 执行 x.expandtabs(10)
   - 当前字符数:5
   - 需要补充空格数:10 - (5 % 10) = 5
   - 结果:"Hello" + 5空格 + "FishC"

为什么选项B正确?

观察选项B的两种输出:

  1. Hello*FishC       (expandtabs(2))
  2. Hello*****FishC   (expandtabs(5))
  3. Hello*****FishC   (expandtabs(10))
复制代码


当参数为5和10时结果相同,这是因为:
  • 在位置5处,两种参数都需要补充5个空格
  • 只有当字符数超过参数值时,不同参数才会产生差异


验证建议
可以在Python中运行这个测试代码:

  1. x = "Hello\tFishC"
  2. print(repr(x.expandtabs(5)))   # 'Hello     FishC'
  3. print(repr(x.expandtabs(10)))  # 'Hello     FishC'
  4. print(len(x.expandtabs(5)))    # 15
  5. print(len(x.expandtabs(10)))   # 15
复制代码


这说明虽然参数不同,但在当前字符位置下计算结果相同,最终输出长度一致,符合选项B的描述。

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-3 13:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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