Python 3.x 通过在文件中输入值来计算平均值,代码会产生错误的输出

Python 3.x 通过在文件中输入值来计算平均值,代码会产生错误的输出,python-3.x,Python 3.x,''此简单程序将使用文件''计算平均值' 您正在打开一个文件进行写入,然后从中读取,并将其分配给变量numbers。然而,这个变量不是一个列表,尽管当您对ln in numbers执行操作时,将其视为一个列表 此外,您应该使用\n 根据我对您代码的理解,您希望: 获取用户输入,并将其写入文件 从文件中读取数字 根据这些数字计算平均值 有一个statistics模块,其功能是mean,它将为您完成计算部分。剩下的,你可以(应该)像上面的三个要点那样构建,比如: from statistics

''此简单程序将使用文件''计算平均值'


您正在打开一个文件进行写入,然后从中读取,并将其分配给变量
numbers
。然而,这个变量不是一个列表,尽管当您对ln in numbers执行
操作时,将其视为一个列表

此外,您应该使用
\n

根据我对您代码的理解,您希望:

  • 获取用户输入,并将其写入文件
  • 从文件中读取数字
  • 根据这些数字计算平均值
有一个
statistics
模块,其功能是
mean
,它将为您完成计算部分。剩下的,你可以(应该)像上面的三个要点那样构建,比如:

from statistics import mean

def inputnumbers(itterations, filename):
    with open(filename, 'w') as openfile:
        while itterations > 0:
            try:
                value=int(input("value->"))
            except ValueError:
                print('Numbers only please')
                continue   
            openfile.write(str(value) + '\n')
            itterations -= 1

def getaveragefromfile(filename):
    numbers = []
    with open(filename, 'r') as openfile:
        for line in openfile.readlines():
            numbers.append(int(line.replace('\n','')))
    return mean(numbers)

def main():
    filename = r'c:\testing\my_data.txt'
    itterations = int(input('how many numbers:'))
    inputnumbers(itterations, filename)
    average = getaveragefromfile(filename)
    print(average)

if __name__ == '__main__':
    main()

“代码产生错误的输出”到底是怎么回事?您应该提供示例输入和输出。请注意,在每次截断文件的迭代中都会打开该文件。为什么你要写入文件并立即从中读取?@DeepSpace,如果我输入值,例如:2、4、7、5。输出总是第三个数字。在这个例子中是7。谢谢请参阅我的其余评论。
from statistics import mean

def inputnumbers(itterations, filename):
    with open(filename, 'w') as openfile:
        while itterations > 0:
            try:
                value=int(input("value->"))
            except ValueError:
                print('Numbers only please')
                continue   
            openfile.write(str(value) + '\n')
            itterations -= 1

def getaveragefromfile(filename):
    numbers = []
    with open(filename, 'r') as openfile:
        for line in openfile.readlines():
            numbers.append(int(line.replace('\n','')))
    return mean(numbers)

def main():
    filename = r'c:\testing\my_data.txt'
    itterations = int(input('how many numbers:'))
    inputnumbers(itterations, filename)
    average = getaveragefromfile(filename)
    print(average)

if __name__ == '__main__':
    main()