yrhhh 发表于 2020-8-1 22:29:59

请问我这个代码哪里出错了啊

#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

yrhhh 发表于 2020-8-1 22:34:23

{:10_266:}大佬们快来{:10_254:}

Twilight6 发表于 2020-8-1 22:40:03

本帖最后由 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))

_2_ 发表于 2020-8-2 07:31:29

yrhhh 发表于 2020-8-1 22:34
大佬们快来

额,你这种方法我真的没用过
我用的都是这个:
def get_digit(n: int) -> list:
    return

yrhhh 发表于 2020-8-3 08:38:42

_2_ 发表于 2020-8-2 07:31
额,你这种方法我真的没用过
我用的都是这个:

感觉很高端的样子 {:5_99:} 好像还没学

yrhhh 发表于 2020-8-3 08:41:54

Twilight6 发表于 2020-8-1 22:40
你的代码可以在 for 循环里面测试下(10 ** (i - 1) % 10) 的值,会发现第二次就为 0 了

改成这 ...

哦哦 懂了 原来是括号的问题 谢谢

_2_ 发表于 2020-8-3 09:44:26

yrhhh 发表于 2020-8-3 08:38
感觉很高端的样子好像还没学

没事,以后会学到的
换一种思路就会很简单{:10_256:}

yrhhh 发表于 2020-8-3 10:27:14

_2_ 发表于 2020-8-3 09:44
没事,以后会学到的
换一种思路就会很简单

果然大佬{:10_245:}
页: [1]
查看完整版本: 请问我这个代码哪里出错了啊