存储`for`循环输出的数字,并将它们全部加起来?

时间:2016-02-02 04:05:14

标签: python

我想存储整数并返回总和,使用random.randint()作为随机值。

代码如下所示:

import random

val = int(input('How many numbers?: '))

for i in range(val):
    print(random.randint(1,99))

我需要将整数打印到控制台,然后对它们求和并返回最终总和。

示例:

How many numbers?: 4
84
50
35
35
Final number: 204

我也需要它来为无数的数字工作。

3 个答案:

答案 0 :(得分:2)

使用列表存储数字。 使用sum()添加它们。 使用join()将其打印出来。

import random

val = int(input('How many numbers?: '))

numbers = [random.randint(1,99) for i in range(val)]
print('\n'.join(str(i) for i in numbers))
print('Final number: {}'.format(sum(numbers)))

示例输出:

How many numbers?: 5
60
70
51
65
18
Final number: 264

您将无法为无限系列的随机数提供总和,也无法存储它们。

答案 1 :(得分:2)

现在你没有跟踪你在val中打印的数字。

为了跟踪和总结所有数字,您需要将它们存储在一个数组中。

import random

val = int(input('How many numbers?: '))
#random number is stored as val

for i in range(val):
#this will run from 1-val
    print(random.randint(1,99))
    #these numbers are simply being printed, not stored

所以我们可以做的是存储数字,然后打印它们

sum=0
for i in range(val):
    num=(random.randint(1,99))
    sum=sum+num
    print"random number:", num
print"The total sum is:", sum

答案 2 :(得分:0)

此解决方案仅涉及无终点处理,问题的其他方面已经有了很好的解决方案。

无法总结无限数量的数字,但您可以继续生成数字,直到程序收到KeyboardInterrupt

nums = []
try:
    while True:
        nums.append(random.randint(1,99))
except KeyboardInterrupt:
    pass

total = sum(nums)
amount_finished = len(nums)

或者为了支持您可以使用的潜在但非必要的限制:

str_limit = input("enter the limit (accepts 'inf') ")
if str_limit=="inf":
    limit = float("inf")
    print ("you will need to stop the program with a KeyboardInterrupt")
else:
    limit = int(str_limit)

nums = []
try:
    while limit>0:
        nums.append(random.randint(1,99))
        limit-=1
except KeyboardInterrupt:
    pass

total = sum(nums)
amount_finished = len(nums)