我最近才开始编码,而且有点粗糙。我最近得到了一项任务,希望我创建一个从1-1000生成100个数字的数字生成器。之后我需要找到列表中最小和最大数字的平均值。我找到平均值时遇到了麻烦,所以如果你能帮助我就会很棒!
我的代码:
import random
for i in range(100):
y = random.randint(1, 1000)
print(y)
def mean(values):
length = len(values)
total_sum = 0
for i in range(length):
total_sum += values[i]
total_sum = sum(values)
average = total_sum/length
return average
x = [y]
n = mean(x)
print (n)
答案 0 :(得分:3)
问题是你生成一个随机值(y),然后扔掉它。
相反,您需要保留生成的值列表
values = []
for i in range(100):
y = random.randint(1, 1000)
values.append(y)
可以更紧凑地写为
values = [random.randint(1, 1000) for i in range(100)]
接下来,您正在复制工作:
# this finds the sum
total_sum = 0
for i in range(length):
total_sum += values[i]
# this *also* finds the sum (and overwrites your previous result)
total_sum = sum(values)
您可以使用min()
和max()
找到最小和最大的值;然后整个事情就变成了
values = [random.randint(1, 1000) for i in range(100)]
smallest = min(values)
largest = max(values)
average = (smallest + largest) / 2
答案 1 :(得分:2)
首先,得到你的一百个数字:
nums = [random.randint(1, 1000) for _ in range(100)]
如果要包含1001
,请使用range
作为1000
的第二个参数。
接下来,平均最小和最大:
avg = (max(nums) + min(nums)) / 2.
编辑:我在计算平均值时将2
更改为2.
,因此Python会将表达式计算为float而不是int。否则Python会进行整数除法,它基本上将平均值舍入到最接近的int。
答案 2 :(得分:0)
也许你可以试试:
In [1]: import random
In [2]: random_nums = [random.randint(1,1000) for _ in xrange(100)]
In [3]: len(random_nums)
Out[3]: 100
In [4]: random_nums_mean = (max(random_nums) + min(random_nums)) / 2
In [5]: random_nums_mean
Out[5]: 500
希望它有所帮助。
答案 3 :(得分:0)
Python易于编写和阅读。
你可以平均使用max
和min
(每次从列表返回最大值,最小值)
from random import randint
# it's generate 100 random number, it's called list comprehension.
random_numbers = [randint(1, 1000) for _ in range(100)]
average = (max(random_numbers) + min(random_numbers)) / 2