Python整数位数统计程序问题:0的位数错误及单复数输出修正
整数位数计算程序的问题解答
问题1:输入“0”时位数为0的原因
你的代码逻辑是靠循环把数字反复除以10,每除一次计数加1,直到数字变成0才停止循环。但输入0的时候,初始的num就是0,循环条件num != 0直接不成立,循环根本没执行,计数变量count始终保持初始值0,所以输出了0位数——但实际上0应该被算作1位数。
问题2:根据位数输出单数/复数形式
加个条件判断就能实现:等算出正确的位数后,若位数是1则输出digit,其他情况输出digits。
修正后的完整代码
num = int(input()) # 先处理0的特殊情况,初始计数设为1 count = 1 if num == 0 else 0 temp = num while temp != 0: temp //= 10 count += 1 # 根据计数选择对应的单位形式 unit = 'digit' if count == 1 else 'digits' print(f"{count} {unit}")
代码说明
- 单独处理0的情况,直接把初始计数设为1,避免循环不执行导致的计数错误
- 用临时变量
temp做循环计算,保留原输入的num(也可以直接修改num,用临时变量只是更清晰) - 通过条件表达式判断计数是1还是大于1,自动选择单数或复数单位
内容的提问来源于stack exchange,提问作者V Fried
相关产品推荐
相关产品推荐

