Python 如何将变量设置范围内的所有数字相加?

Python 如何将变量设置范围内的所有数字相加?,python,sum,Python,Sum,我必须使用求和函数,但它对我不起作用。以下是我目前的代码: def main(): print('This program will total all the numbers in a range.') num1 = (int(input('Enter a number.'))) num2 = (int(input('Enter another number (smaller than the first one).'))) for i in range

我必须使用求和函数,但它对我不起作用。以下是我目前的代码:

def main():

    print('This program will total all the numbers in a range.')


    num1 = (int(input('Enter a number.')))
    num2 = (int(input('Enter another number (smaller than the first one).')))

    for i in range(num1 - num2 + 1):

        print(i + num2)
    print(sum(range(num1, num2 + 1)))

main()

总数总是错得太多,我想不出必须把它改正过来

解决方案

def main():
    print("\nThis program will total all the numbers in a range.")

    num_1 = int(input("Enter a number: "))
    num_2 = int(input("Enter another number: "))
    something = [num_1, num_2]

    max_num = max(something)
    min_num = min(something)
    new_list = list(range(min_num, max_num+1))

    current_sum = min_num
    for i in new_list[1:]:
        print(f"{current_sum} + {i} = ", end='')
        current_sum += i
        print(f"{current_sum}")

    print(f"\nSum of all numbers in range: {current_sum}")

while True:
    main()
如果您找到两个
输入
中的
min
max
,则用户无需按正确顺序输入

对于一般过程,您只需为用户指定的
范围内的每个数字指定一个运行总和

或者,您也可以使用此代码来代替使用
max
&
min

    """Replacing min/max with sorted

    max_num = max(something)
    min_num = min(something)
    new_list = list(range(min_num, max_num+1))

    current_sum = min_num
    """

    something = sorted(something)
    new_list = list(range(something[0], something[1]+1))

    current_sum = new_list[0] 
输出

乐趣

def main():
    print("\nThis program will total all the numbers in a range.")

    num_1 = int(input("Enter a number: "))
    num_2 = int(input("Enter another number: "))
    something = [num_1, num_2]

    max_num = max(something)
    min_num = min(something)
    new_list = list(range(min_num, max_num+1))

    current_sum = min_num
    for i in new_list[1:]:
        print(f"{current_sum} + {i} = ", end='')
        current_sum += i
        print(f"{current_sum}")

    print(f"\nSum of all numbers in range: {current_sum}")

while True:
    main()
运行了0到1000000:)

更新

对循环中的
print
语句进行修饰,使其呈现出您最初寻找的运行总体外观

current\u sum
0
更改为
minu num
,然后在
new\u列表[1://code>处开始循环。这不会影响总和,但会消除显示
0+x=x
print
语句


使用
sorted
方法添加,以替代使用
max
min

如果num1大于num2,则应执行
范围(num2,num1+1)
。提供一些示例输出,只要第一个数字小于第二个数字,最后一行中num1大于num2,那么编写的代码就可以正常工作。它不会创建您期望的数字列表,因此总和将始终为零。正如@Kota Mori所建议的,您需要交换参数。
499995500010 + 999996 = 499996500006
499996500006 + 999997 = 499997500003
499997500003 + 999998 = 499998500001
499998500001 + 999999 = 499999500000
499999500000 + 1000000 = 500000500000

Sum of all numbers in range: 500000500000