You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python digit格式化规则及PCAP认证练习题解析

Python 百分号风格整数格式化逻辑(PCAP考题解析)

首先明确%d整数格式化的硬规则,所有运行结果都严格遵循以下逻辑:

  • %d是整数类型占位符,无论传入参数是整数还是浮点数,都会先直接截断小数部分取整(注意是直接丢弃小数,哪怕小数部分是0.99也不会进位,和四舍五入逻辑完全不同),再执行后续格式化操作。
  • %d占位符的完整格式为 %[填充标记][最小宽度]d:
    • 最小宽度:指定格式化后数字部分的最小字符长度,如果数字本身转成字符串后的长度大于等于这个值,宽度和填充规则全部失效,直接输出数字原始字符串即可。
    • 填充标记:只有写0的时候生效,代表数字长度不足最小宽度时,在数字左侧补0凑够长度;如果不写0,默认在左侧补空格凑长度。
    • 格式串里不在%占位符范围内的字符,全部原样输出,不参与格式化逻辑。

各选项正误判断


选项1

代码对比:

print("-%07d"%555.55)
print("%7d"%555.55)

输出计算:

  • 第一行:555.55截断取整为555,%07d要求数字部分最小宽度7、补0,555长度为3,补4个0得到0000555,加上前面原样输出的-,最终输出为-0000555。
  • 第二行:555.55截断取整为555,%7d要求数字部分最小宽度7、默认补空格,555长度为3,补4个空格得到 555,且格式串没有前置-,最终输出为 555。
    两个输出完全不同,该选项错误。

选项2

原题代码对比:

print("-%07d"%555.55)
print("-07d"%555)

注:结合正确标注判断,这里存在明显排版疏漏:第二行格式串"-07d"中没有%占位符,执行时会直接抛出TypeError,不可能和第一行输出相等。实际应为漏写了占位符起始标记%,修正后第二行代码为print("-%07d"%555),按修正后的逻辑判断:
输出计算:

  • 第一行:输出为-0000555(计算逻辑同选项1第一行)。
  • 第二行:传入参数是整数555,%d直接取555做格式化,同样得到数字部分0000555,加前置-,最终输出为-0000555。
    两个输出完全一致,该选项正确。

选项3

代码对比:

print("-%02d"%555.55)
print("-%2d"%555.55)

输出计算:

  • 第一行:555.55截断取整为555,数字本身长度为3,已经大于指定的最小宽度2,因此宽度、补0规则全部失效,直接输出-555。
  • 第二行:555.55截断取整为555,数字长度3大于指定宽度2,补空格规则失效,直接输出-555。
    两个输出完全一致,该选项正确。

选项4

代码对比:

print("-%02d"%555.55)
print("-%02d"%555)

输出计算:

  • 第一行:555.55截断取整为555,宽度2小于数字长度3,规则失效,输出-555。
  • 第二行:传入整数555,转字符串长度3大于宽度2,规则失效,输出-555。
    两个输出完全一致,该选项正确。

内容的提问来源于stack exchange,提问作者Achilles

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 21:00:56