我试图找到范围内数字的平均值(即找到 1-1000 范围内所有数字的平均值)。我编写了以下代码来执行此操作,但由于 if 语句
,在运行时,代码会生成多个数字。然后我尝试使用 while-loop
代替,但是当我输入 break
语句时,它生成了与 if 语句相同的
产生。有什么方法可以使用 list
if 语句
并获得 1 个平均值?谢谢!
mylist =[]
def ave_data(x, y):
for line in filename:
for number in line.split():
if int(number) > x and int(number) < y:
mylist.append(int(number))
print(sum(mylist)/len(mylist))
最佳答案
由于 if 语句,它不是。您只需将 print(..)
放在 for
循环的 if
中。通过将它移到外部 for
之外,它将打印整个文件的平均值:
def ave_data(x, y):
mylist = [] # move inside
for line in filename:
for number in line.split():
if int(number) > x and int(number) < y:
mylist.append(int(number))
print(sum(mylist)/len(mylist)) # for the entire file.
您还可以将 mylist
变量移动到更好的内部函数。否则它是一个全局变量,其他函数可以改变它。此外,第二次运行将取两个文件的平均值。
话虽这么说,你把事情搞得太复杂了。您可以简单地使用:
def ave_data(x, y):
mylist = [int(number) for line in filename for number in line.split()
if x < int(number) < y]
print(sum(mylist)/len(mylist)) # for the entire file.
关于python - 平均-Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45194037/