我试图编写一个计算数字中位数的函数 - 没有string
操作。这是我的代码:
def count_digits(n):
count_list=[]
while (n>0):
n=n%10
i=n
count_list.append(i)
n=n/10
return len(count_list)
n=12345
print count_digits(n)
使用%
我得到最后的数字 - 以便将其添加到列表中。通过使用/
我从数字中抛出数字。
该脚本不起作用。对于每个n
i put,脚本只打印1
。
谢谢!
答案 0 :(得分:3)
您的代码有几个问题:
return
语句应该在循环之外。n = n % 10
语句会修改n
,因此无法获取其他数字。//
。在Python 3中,n / 10
将给出一个浮点数。0
视为具有0
位数。您需要检查n
是否为0
。以下是您的代码的更正版本:
def count_digits(n):
if n == 0:
return 1
count_list = []
while n > 0:
count_list.append(n % 10)
n = n // 10
return len(count_list)
此外,正如评论中所述,由于您的目标只是计算数字,因此您无需维护列表:
def count_digits(n):
if n == 0:
return 1
count = 0
while n > 0:
n = n // 10
count += 1
return count
答案 1 :(得分:2)
count_list
存储数字。
def count_digits(n):
count_list=[]
while (n>0):
count_list.append(n%10)
n-=n%10
n = n/10
return count_list
n=12345
print len(count_digits(n))
不使用列表
def count_digits(n):
count_list=0
while (n>0):
count_list+=1
n-=n%10
n = n/10
return count_list
n=12345
print count_digits(n)
答案 2 :(得分:2)
也许你可以试试这个,这是一个更简单的方法。没有列表涉及:)
def dcount(num):
count = 0
if num == 0:
return 1
while (num != 0):
num /= 10
count += 1
return count