在范围之间创建一个随机的整数列表,并在列表中查找平均值,最小值和最大值

时间:2018-02-26 20:14:03

标签: python python-3.x list integer

我是编码的新手,仍在尝试学习python编码。 我正在尝试编写一个程序,生成5个随机数并存储在列表中。我的输出应该像这样结束:[2,34,23,5,22]

我试图从列表中找到平均值,最低值和最高值。我尝试了其他一些方法来找到答案,但我将列表中的最终数字作为我的最高,最低和平均数。任何人都可以帮我解决这个问题吗?

import random

def main():
    num = []
    for n in range(5):
        num = [(random.randint(1,100))]
    print(num)

    lowest = min(num)
    print("The lowest number is: ", lowest)

    highest = max(num)
    print("The highest number is: ", highest)

    total = 0.0
    for value in num:
        total += value

    average = total / len(num)
    print("The average is: " , average)


main()

3 个答案:

答案 0 :(得分:2)

您可以使用random.randint使用列表理解获取随机列表:

>>> import random
>>> range_start, range_end = 1, 100
>>> rand_list = [random.randint(range_start, range_end) for i in range(5)]
#                                       range(5) to generate 5 numbers ^

此处,random.randint(range_start, range_end)将返回range_startrange_end之间的随机整数,在本例中分别为1100。例如,我的列表如下:

>>> rand_list
[18, 18, 2, 3, 0]

对于查找平均值,请执行:

>>> sum(rand_list)/(len(rand_list)*1.0)
8.2                           #    ^ Needed in Python 2.x because
                              #      division of two `int` returns a integer value
                              #      in Python 2.x . Not needed in Python 3.x   

要在列表中查找最大值,请使用max

>>> max(rand_list)
18

要在列表中查找最小值,请使用min

>>> min(rand_list)
0

答案 1 :(得分:0)

您的问题出现在num的定义中。将num定义为以下列表理解,您的脚本可以正常工作:

num = [random.randint(1,100) for _ in range(5)]

定义失败的原因是因为num = [(random.randint(1,100))]只创建一个整数的列表。如果您希望循环执行此操作,可以按如下方式执行此操作:

for n in range(5):
    num.append(random.randint(1,100))

然而,如前所述,pythonic成语将使用列表理解。

答案 2 :(得分:0)

for n in range(5):
        num = [(random.randint(1,100))]
    print(num)

对于每个n,您都要将整个num列表替换为仅包含random.randint(1,100)的列表。