บทนำ
การหาผลรวมของตัวเลขแต่ละหลัก (digit sum) ของทุกตัวเลขในลิสต์ เช่น 23 → 2+3=5 สามารถทำได้โดยแปลงเป็นสตริง แล้ววนบวกแต่ละตัวอักษร
ตัวอย่างโค้ด
numbers = [11, 23, 41, 62, 89, 0, 10]
print("ลิสต์:", numbers)
digit_sums = []
for num in numbers:
# แปลงเป็นสตริง วนบวกแต่ละ digit
digit_sum = sum(int(d) for d in str(num))
digit_sums.append(digit_sum)
print("ผลรวมหลักแต่ละตัว:", digit_sums)
ผลลัพธ์
ลิสต์: [11, 23, 41, 62, 89, 0, 10] ผลรวมหลักแต่ละตัว: [2, 5, 5, 8, 17, 0, 1]
คำอธิบาย
str(num)แปลงตัวเลขเป็นสตริง "23"for d in str(num)วนแต่ละตัวอักษร '2', '3'int(d)แปลงกลับเป็นตัวเลขsum(...)บวกทั้งหมด
รูปแบบ List Comprehension
digit_sums = [sum(int(d) for d in str(num)) for num in numbers] print(digit_sums) # [2, 5, 5, 8, 17, 0, 1]
การประยุกต์: Digital Root (รากดิจิตอล)
def digital_root(n):
while n >= 10:
n = sum(int(d) for d in str(n))
return n
print([digital_root(n) for n in numbers]) # [2, 5, 5, 8, 8, 0, 1]