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

Python 打印文件的最高、平均、最低分数,python,max,average,type-conversion,min,Python,Max,Average,Type Conversion,Min,我试图用python打印文件的最高、平均和最低分数。但我总是出错 ValueError: invalid literal for int() with base 10. 我的results.txt文件如下所示: Johnny-8.65 Juan-9.12 Joseph-8.45 Stacey-7.81 Aideen-8.05 Zack-7.21 Aaron-8.31 我的代码是这样的 func1={} with open('results.txt','r') as f: for li

我试图用python打印文件的最高、平均和最低分数。但我总是出错

ValueError: invalid literal for int() with base 10.
我的results.txt文件如下所示:

Johnny-8.65
Juan-9.12
Joseph-8.45
Stacey-7.81
Aideen-8.05
Zack-7.21
Aaron-8.31
我的代码是这样的

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

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

如果需要提取整数:

s = "123"
num = int(s)
num=123

如果需要提取浮点数:

s = "123.12"
num = float(s)
num=123.12

您可以参考以下文档:

还有一篇关于在python中转换数字数据类型的文章:

如何从字典中获取最大键/值请参阅:

另外,请阅读本文。它将帮助你提出更清楚的问题。

正如此线程中的每个人建议您将int更改为float。关于你的上述评论。你用

value=int(float) ! 
Float应该在括号外。像这样

value=float(value).
我运行了代码,它对我有效。

试试这个:

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)
scores={}
最高分数=0.0
最高=“”
最低分数=100.0
最低=“”
平均值=0.0
总和=0.0
文件=打开(“results.txt”、“r”).readlines()
对于文件[0:]中的行:
行=行。拆分(“-”)
分数[第[0]]=第[1]行。条带()
对于键,以分数表示的值。项()
如果浮动(值)最高_分数:
最高分数=浮动(值)
最高=键
总和=总和+浮动(值)
打印“最高分数:”,最高分数,“of”,最高
打印“最低分数:”,最低分数,“of”,最低
打印“平均:”,总和/长度(分数)

是的,
8.65
不是一个int。它是一个浮点。
8.65
不是一个intI将第5行改为float而不是value,我得到了这个错误。回溯(最后一次调用):文件“C:/Users/Trent/Desktop/CreativeProgrammingChapter4.py”,第5行,在value=int(float)或float TypeError:int()参数中必须是字符串,像object或number这样的字节,而不是'type'>>>是的,因为
int(float)
试图将
float
type对象转换为int。有几个用户编辑了您的问题,试图让问题更清楚。请查看并确保编辑没有破坏原始代码的格式。在python中,缩进非常重要。如果它看起来不像您的原始代码,请记住格式化代码块需要缩进4空格,因此我将其更改为value=float(),它确实打印名称,但它只是在名称旁边打印0.00,而不是实际打印正确的内容?没有,我用它来打印文件中的数字,但是我很难让它打印最高和最低的数字以及平均值。如何在评论中发布我的代码,以便向您展示我的代码?好的,我已经用我现在更新的代码编辑了我的主要问题。谢谢你,我已经这样做了,它现在正在打印值。我只需要让它打印最高、平均和最低值。
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)