打印文件的最高,平均,最低分数

时间:2016-09-29 15:48:29

标签: python max average type-conversion min

我正在尝试在python中打印文件的最高,平均和最低分数。但我一直在收到错误

Johnny-8.65
Juan-9.12
Joseph-8.45
Stacey-7.81
Aideen-8.05
Zack-7.21
Aaron-8.31

我的 results.txt 文件如下所示:

func1={}
with open('results.txt','r') as f:
    for line in f:
        name,value=line.split('-')
        value=float(value)
        if name in func1.keys():
           func1[name].append(value)
        else:
            func1[name]=[value]

#compute average: 
for name in func1:

    average=sum(func1[name])/len(func1[name])
    print("{} : {}".format(name,average))

我的代码看起来像这样

select QUIZ_ID,
       QUIZ_NAME,
       QUIZ_TOTAL_SCORE,
       QUIZ_MINIMUM_SCORE,
       START_DATE,
       END_DATE,
       ACTIVE_FLAG      
from QUIZ;

3 个答案:

答案 0 :(得分:0)

您在文件中提供的值不是int类型。 对于您的方法,您可以使用float()

value = float(value)

如果需要提取整数:

s = "123"
num = int(s)
  

num = 123

如果需要提取浮点数:

s = "123.12"
num = float(s)
  

num = 123.12

您可以参考文档:Datatypes #1

还有关于在python中转换数字数据类型的好文章:Parse String to Float or Int

如何从字典中获取最大键/值,请参阅:get max value get max key

另外,请阅读这篇文章。它会帮助您提出更清晰的问题。 How do I ask and answer homework questions?

答案 1 :(得分:0)

正如此主题中的每个人都建议您将 int 更改为 float 。关于你上面的评论。你用

value=int(float) ! 

浮动应该在括号外。喜欢这个

value=float(value).

我运行代码,它对我有用。

答案 2 :(得分:0)

试试这个:

scores={}
highest_score=0.0
highest=''
lowest_score=100.0
lowest=''
average=0.0
sums=0.0

files=open("results.txt","r").readlines()
for lines in files[0:]:
    line=lines.split("-")
    scores[line[0]]=line[1].strip()

for key,value in scores.items():
    if float(value)<lowest_score:
        lowest_score=float(value)
        lowest=key

    if float(value)>highest_score:
        highest_score=float(value)
        highest=key

    sums=sums+float(value)

print "highest score:",highest_score," of ",highest
print "lowest score:",lowest_score," of ",lowest
print "average: ",sums/len(scores)