如何将数字中的数字相加并将结果放入列表中

How to add the digits in a number and place the result in a list

(抱歉标题不好,我在总结时遇到了麻烦)所以我正在做一个项目,在这个项目中,必须获取一个完全随机数的列表,找到每个数字中的数字总和,并将该总和放在一个列表。这是我目前所拥有的:

import random
import math
list1 = [random.randint(1,1000000000000) for i in range(0,10)]
list2 = []
list3 = []
def open_command():
    for y in range(0,10):
        a = list1[y]
        z = len(str(a))
        for x in range(0, z):
            f = len(str(a))
            b = a*0.1
            c, w=(math.modf(b))
            d = int(c*10)
            list2.append(d)
            a = (a - d)/10
            if f == 0:
                total = sum(list2)
                list3.append(total)
                list2.clear()
    

open_command()
print(list3)

当我运行此代码时,list3 只显示一个空列表,但没有错误。我不明白,是 .append 不起作用吗?有人能解释一下这是怎么回事吗?

这是因为以下代码从未执行过。列表 3 永远不会被附加,列表 2 永远不会变得清晰。

if f == 0:
    total = sum(list2)
    list3.append(total)
    list2.clear()

您永远不会更改 a,因此它的长度 (f) 永远不会变为 0。因此,您永远不会附加任何内容。

但是你把事情搞得太复杂了:

list3 = [sum(int(char) for char in str(num)) for num in list1]

或者,如果您想保留基本概念:

def open_command():
    for number in list1:
        for char in str(number):
            list2.append(int(char))
        list3.append(sum(list2))
        list2.clear()
    return list3

使用地图,一张班轮

list_num = [123,456]
print([sum(list(map(int, list(str(num))))) for num in list_num])

输出:

[6, 15]