|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
# 写一个函数get_digits(n),将参数n分解出每个位的数字
#并按顺序存放到列表中。举例:get_digits(12345) ==> [1, 2, 3, 4, 5]
def get_digits(num):
code1=[10,100,1000,10000,100000,1000000,10000000]
code2=[]
if num<10:
bei_chushu=code1(len(num)-2) #判断输入的数有几位,来选择对谁取余数,2位,code[0],3位对code[1]
code2.append((num-num%bei_chushu)//bei_chushu)
return get_digits(num-num%bei_chushu)
code2.append(num-num%bei_chushu)
return code2
number=int(input("enter an interger:"))
result=get_digits(number)
print(result)
你的程序中,当num<10的时候,bei_chushu才被定义并赋值,若num>=10,bei_chushu是没有定义的。
你把问题想复杂了。何必从前向后计算,直接从个位开始不就可以了?那样就不用判断输入的num是几位数了。
list有两个函数是常用来添加元素的,你用的是append,是向后追加;还有一个insert,可以向任何位置添加。
这个题目,完全可以从个位开始,然后每次都用insert想最前面添加不就可以了?
- #迭代方法
- def get_digits(num):
- s=[]
- if num==0:
- s=[0]
- while num:
- s.insert(0,num%10)
- num=num//10
- return s
- #递归方法
- def get_digit(n):
- s=[]
- if n>10:
- s=get_digit(n//10)
- s.append(n%10)
- else:
- s.append(n)
- return s
-
- print(get_digits(0))
- print(get_digits(9))
- print(get_digits(12345))
- print(get_digit(0))
- print(get_digit(9))
- print(get_digit(12345))
复制代码
|
|