我必须创建一个程序,该程序读取板子长度的文本文件。我必须找到并打印这些长度的平均值。然后,我必须打印一个长度表以及它们与平均值的差。然后我需要计算> 0.10的差异。
到目前为止,我已经能够找到木板的平均值,并且我能够计算出大于0.10的差异量。但是我无法弄清楚如何将长度和差异添加到列表中,以便能够打印每个长度及其旁边的差异。
代码:
dif = 0
total = 0
count = 0
avg = 0
difcount = 0
boards = []
with open("boards.txt", "r") as fo:
for line in fo:
length = float(line)
total += length
count += 1
avg = total/count
dif = length - float(avg)
if dif > float(0.10):
difcount += 1
print("Average:", round(avg,2))
for line in fo:
print(length, dif)
print("Number of boards > 0.10 from average:", difcount)
输出:
average: 7.97
Number of boards > 0.10 from average:3
我不知道如何打印长度和差异表
Length Difference
# #
# #
# and so on
答案 0 :(得分:1)
您的计算顺序不正确。在知道输入平均值之前,您不能做任何差异。目前,第一块木板无法标记,因为此时的avg
仅仅是第一块木板的长度。
您需要分步骤处理:
在第三步中,您应该有一个轻松的时间来产生输出。
你能从那里拿走吗?
答案 1 :(得分:0)
当您尝试打印长度变量时,我认为您的长度变量没有实例化。
您可以创建一个元组数组来保存您的length
和dif
:
for line in fo:
boards.append((length, dif))
for item in boards:
print(item)
那样,您在阅读文本文件后就会拥有它们。
答案 2 :(得分:0)
Prune的答案是正确的,我认为您没有正确计算平均值。
我认为您应该首先遍历所有木板并将其长度存储在列表中
board_lengths = []
with open("boards.txt", "r") as fo:
for line in fo:
board_lengths.append(float(line))
完成此操作后,您可以汇总列表以创建您的意思
import numpy as np
mean_board_length = np.mean(board_lengths)
您可以找到然后发现差异
differences = [l - mean_board_length for l in board_lengths]
以及差异大于0.1的次数
times = np.sum([d>0.1 for d in differences])