Python数字位数统计结果为1而非全部,求问题原因及解决办法
问题分析
你的代码核心问题是**return count_no被放在了while循环内部**,第一次循环执行时,修改完num和count_no后就直接返回结果,导致只能统计1位,无法完成完整的位数遍历。
修正后的代码
class Solution(object): def calculate(self, num): # 处理数字为0的特殊情况 if num == 0: return 1 count_no = 0 while num > 0: num = num // 10 # 用整数除法替代普通除法,避免浮点数问题 count_no += 1 return count_no # 将return移到循环外部,确保循环完整执行 if __name__ == "__main__": p = Solution() no = 5675 print(p.calculate(no)) # 输出4
补充说明
- 把return语句移到while循环外,才能让循环持续执行到
num变为0,此时count_no就是正确的位数。 - 替换
/为//做整数除法,避免num变成浮点数(比如5675/10会得到567.5,虽然后续循环也能执行,但整数除法逻辑更严谨)。 - 增加了
num=0的判断,因为0的位数是1,原代码会返回0,不符合预期。
内容的提问来源于stack exchange,提问作者user20502753
相关产品推荐
相关产品推荐

