如何让函数返回任何整数,例如负数?
def num_digits(n):
count = 0
while n:
count = count + 1
n = abs(n) / 10
return count
我首先在第2号问题上工作。即使我把abs(n)放在代码行中的while,我仍然得到一个无限循环,我仍然不明白为什么。我想如果我可以得到我的n值始终为正,并输入-24,它会将其转换为24并仍然计算值的数量。
问题1,我不知道从哪里开始,我试过:
def num_digits(n):
count = 0
while n:
if n == 0:
count = count + 1
n = n / 10
return count
我忘了添加我使用有限的工具,因为我还在学习python。我已经完成了迭代,正在研究while循环和计数器。我还没有打破,虽然我知道它的作用。
答案 0 :(得分:1)
如果有疑问,蛮力总是可用的:
def num_digits(n):
if n == 0:
return 1
if n < 0:
return num_digits(abs(n))
count = 0
while n:
count = count + 1
n = n / 10
return count
首先处理特殊情况,然后你只需处理常规情况。
如果你想避免条件限制,我建议只在开头使用abs(n)
一次,并在0的情况下使用无限循环+中断:
def num_digits(n):
n = abs(n)
count = 0
while True:
count = count + 1
n = n / 10
if n == 0:
break
return count
对于更实用的解决方案,您可以计算字符串中的位数(类似于len(str(n))
的正整数)或取log
基数10,这是计算数字的数学方法
答案 1 :(得分:-1)
def num_digits(n):
if n == 0:
return 0
return math.floor(math.log10(math.abs(n)))