萌新请教大佬,为啥会一直计算
想实现一个函数,如f(123 )返回值为【1,2,3】list1 = []
def f(n):
b =len(str(n))
list1.append(int(n/(10**b)))
b = b - 1
if b > 0:
f(n)
else:
return(list1.reverse())
f(123){:10_269:} 问题很多
1. list1.reverse()没有返回值 你应该返回的是list1
2. n没有重新赋值这会导致最后list1是
你这代码不好改 一改就是重写了不过建议用while循环 def f(n):
list1 = []
b =len(str(n))
while b > 0:
b = b - 1
list1.append(int(n/(10**b))%10)
return(list1)
print(f(123))修复 本帖最后由 jackz007 于 2021-11-7 19:34 编辑
楼主的方法:
list1 = []
def f(n):
b = len(str(n)) - 1
while b >= 0:
list1 . append(n // 10 ** b)
n %= 10 ** b
b -= 1
f(123)
print(list1)
其实不用那么复杂,请参考下面的代码:
循环的方法:
list1 = []
def f(n):
while n:
list1 . insert(0 , n % 10)
n //= 10
f(123)
print(list1)
递归的方法:
list1 = []
def f(n):
if n:
f(n // 10)
list1 . append(n % 10)
f(123)
print(list1) {:5_103:}看来问题已经解决了 kogawananari 发表于 2021-11-7 18:19
问题很多
1. list1.reverse()没有返回值 你应该返回的是list1
2. n没有重新赋值这会导致最后list ...
好的好的,谢谢,我懂了
jackz007 发表于 2021-11-7 18:33
楼主的方法:
其实不用那么复杂,请参考下面的代码:
谢谢大佬! kogawananari 发表于 2021-11-7 18:22
修复
谢谢大佬!
页:
[1]