需要忽略python中数字计数功能的前导零
Posted
技术标签:
【中文标题】需要忽略python中数字计数功能的前导零【英文标题】:Need to ignore leading zeros for digit count function in python 【发布时间】:2018-11-09 22:04:26 【问题描述】:.123
被转换为 0.123
作为字符串,所以我的计数出现在 (0,0,1)
而不是 (0,0,0)
。我需要忽略前导 0,但 我不知道如何。
def digit_count(n):
n=str(int(n))
even_count=0
odd_count=0
zero_count=0
for i in n:
if int(i)%10 ==0:
zero_count +=1
elif int(i) % 2 ==0:
even_count += 1
elif int(i) %2 !=0:
odd_count +=1
return(even_count,odd_count,zero_count)
【问题讨论】:
你能把数字乘以 10 再转换成字符串吗?n.strip("0")
?
0.00005
呢?
乘法不起作用,因为我只想计算小数点左边的数字
JK n=n.lstrip("0") 成功了。非常感谢你们:)
【参考方案1】:
一个 hacky 解决方案:
def digit_count(n):
if isinstance(n, float) and str(n).split('.')[0]=='0':
return (0,0,0)
else:
n=str(int(n))
even_count=0
odd_count=0
zero_count=0
for i in n:
if int(i)%10 ==0:
zero_count +=1
elif int(i) % 2 ==0:
even_count += 1
elif int(i) %2 !=0:
odd_count +=1
return(even_count,odd_count,zero_count)
【讨论】:
只计算小数点左边的位数【参考方案2】:def digit_count( n ) :
## convert number to string
n = str( int(n))
## declare counts
even_count, zero_count = 0,0
for i in n :
i = int(i)
## case when n = 0.1231
if len(n) == 1 and i == 0:
return (0,0,0)
## case when n contains 0
elif i == 0:
zero_count += 1
## case when n contains even
elif i != 0 and i%2 == 0 :
even_count += 1
return ( even_count, len(n) - even_count- zero_count, zero_count )
digit_count( 123059.9 )
>> (1,4,1)
digit_count( 0.123 )
>> (0,0,0)
【讨论】:
【参考方案3】:对于 python 3 解决方案,这样的事情怎么样?
def digit_count(n):
n=list(str(int(n))); #turn into a list array
if n[-1] == "0": #get the first item (leading zeroes).
n[-1] = ""; #delete it.
n=''.join(n); #rejoin as a new string.
even_count = odd_count = zero_count = 0; #I cleaned this up too.
for i in n:
if int(i)%10 == 0:
zero_count += 1
elif (int(i) % 2 == 0) ^ (int(i) %2 == 0): #I cleaned this up I hope you don't mind.
even_count += 1
return(even_count,odd_count,zero_count)
print(digit_count(.123));
【讨论】:
以上是关于需要忽略python中数字计数功能的前导零的主要内容,如果未能解决你的问题,请参考以下文章