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