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()