我是编码的新手,仍在尝试学习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()
答案 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_start
和range_end
之间的随机整数,在本例中分别为1
和100
。例如,我的列表如下:
>>> 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)
的列表。