请问我这个代码哪里出错了啊
#1. 写一个函数get_digits(n),将参数n每个位置的数字分解出来并按顺序存放到列表中。#举例:get_digits(12345) ==>
def length(n):
str1 = str(n)
global length1
length1 = len(str1)
return length1
def get_digits(n):
if length1 == 1:
return
else:
for i in range(1, length1 + 1):
#将 n 中的每一位数取出来
list1.append(n // (10 ** (i - 1) % 10))
list1.reverse()
return list1
list1 = []
n = int (input ("请输入一个整数:"))
length(n)
result = get_digits(n)
# %s 可以接收任意类型的值
print ("%d --> %s" %(n, result))
运行结果如图,说的是除以0了 但是检查了一下没有发现除以0啊 开始第一次循环就是1
{:10_266:}大佬们快来{:10_254:} 本帖最后由 Twilight6 于 2020-8-1 23:27 编辑
yrhhh 发表于 2020-8-1 22:34
大佬们快来
你的代码可以在 for 循环里面测试下(10 ** (i - 1) % 10) 的值,会发现第二次就为 0 了
改成 ((n //10 ** (i - 1)) % 10)这样就好了:
#1. 写一个函数get_digits(n),将参数n每个位置的数字分解出来并按顺序存放到列表中。
#举例:get_digits(12345) ==>
def length(n):
str1 = str(n)
global length1
length1 = len(str1)
return length1
def get_digits(n):
if length1 == 1:
return
else:
for i in range(1, length1 + 1):
#将 n 中的每一位数取出来
list1.append((n //10 ** (i - 1)) % 10)
list1.reverse()
return list1
list1 = []
n = int (input ("请输入一个整数:"))
length(n)
result = get_digits(n)
# %s 可以接收任意类型的值
print ("%d --> %s" %(n, result))
yrhhh 发表于 2020-8-1 22:34
大佬们快来
额,你这种方法我真的没用过
我用的都是这个:
def get_digit(n: int) -> list:
return _2_ 发表于 2020-8-2 07:31
额,你这种方法我真的没用过
我用的都是这个:
感觉很高端的样子 {:5_99:} 好像还没学 Twilight6 发表于 2020-8-1 22:40
你的代码可以在 for 循环里面测试下(10 ** (i - 1) % 10) 的值,会发现第二次就为 0 了
改成这 ...
哦哦 懂了 原来是括号的问题 谢谢 yrhhh 发表于 2020-8-3 08:38
感觉很高端的样子好像还没学
没事,以后会学到的
换一种思路就会很简单{:10_256:} _2_ 发表于 2020-8-3 09:44
没事,以后会学到的
换一种思路就会很简单
果然大佬{:10_245:}
页:
[1]