前导零计数(Counting leading zeros)函数处理0000返回3而非4的原因咨询
问题原因说明
你当前遇到的返回结果不符合预期的问题,核心是整数类型不保留前导零的特性导致的,完整执行逻辑拆解如下:
- 首先可以确定你传入的参数
a是字符串类型的"0000":因为Python中不允许直接写数字类型的0000,会直接抛出语法错误,只有字符串类型可以存储带前导零的0000。 - 执行
int(a)时,字符串"0000"会被转换为整数0,整数本身不存在前导零的概念,所有前导零都会在转换时被丢弃。 - 执行
str(int(a))时,整数0会被转换为字符串"0",该字符串的长度为1。 - 最后执行
len(a) - len(str(int(a)))时,原字符串长度为4,4减1得到结果3,也就是你实际拿到的返回值。
如果你的需求是统计字符串的前导零个数,全零字符串返回总长度,可以用如下写法实现:
return len(a) - len(a.lstrip('0'))
该写法对a = "0000"的执行结果为4,符合你的预期。
内容的提问来源于stack exchange,提问作者ChristAHFER
相关产品推荐
相关产品推荐

