0

所以我有这个:

def main():
    num = input("Enter a number:")
    total = 0
    for digit in str(num):
        total += int(digit)
    print(total)
main()

它的作用是获取字符串中的数字并将它们加在一起(321 的输出为 6)。我需要做的是做一个 for in range 循环,取范围内的所有数字,取它们的数字,然后将总和添加到一个全新的总数中。基本上做第一个函数的工作,但有多个数字(例如,输入 10 和 15 将加在一起 ​​1(10: 1 + 0), 2(11: 1+1), 3(12: 1+2), 4 (13: 1+3)、5(14: 1+4) 和 6 (15: 1+5)。1+2+3+4+5+6=21。因此在范围内输入 10 和 15 将输出为 21。

4

2 回答 2

1

这就是你要找的

def main():
    num1 = str(input("Enter a number:"))
    num2=str(input("Ebter another number:  "))
    numbers=""
    total=0
    if int(num2)-int(num1)>=0:
        for i in range(int(num1),int(num2)+1):
          numbers+=str(i)

    elif int(num2)-int(num1) <0:
     for i in range(int(num2),int(num1)+1):
      numbers+=str(i)

    for digit in numbers:
        total += int(digit)
    print(total)

main()

因此,您要做的是从用户那里获得两个数字,然后将两个数字以及它们之间的数字连接到变量 中numbers。但是要获得它们之间的数字,您必须确定哪个更大才能进行for i in range()循环。之后它应该是不言自明的-我只是循环遍历字符串数字并将其中的每个元素转换为整数,然后将总数相加数量。

于 2013-10-30T09:31:16.350 回答
1

你快到了。

def digitSum(x):
    return sum(int(digit) for digit in str(x)):

print sum(digitSum(x) for x in range(10,15))

或单线:

print sum(sum(int(digit) for digit in str(x)) for x in range(10,15))

否则,您可以修改现有代码以重用您的主要功能。这里它只是简单地将 10 个输入相加,但您也可以有一些停止条件:

def digitSum(num):
    total = 0
    for digit in str(num):
        total += int(digit)
    return total

def sumOfSums(n1, n2):
    total = 0
    for num in range(n1, n2+1):
        total += digitSum(num)
    return total

def main():
    n1 = input("Enter the first number in range: ")
    n2 = input("Enter the last number in range: ")
    print sumOfSums(int(n1), int(n2))

main()

简短的变体(使循环变平,即在一行中是 Python 的一个很棒的特性,它不仅是一种美学的东西,而且我想你以后会学到它):

n1 = input("Enter the first number in range: ")
n2 = input("Enter the last number in range: ")
print sum(sum(int(digit) for digit in str(x)) for x in range(int(n1), int(n2)))
于 2013-10-30T05:58:54.287 回答