打印文件的最高、平均、最低分数
Print Highest, Average, Lowest score of a file
我正在尝试打印 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()
:
value = float(value)
如果需要提取整数:
s = "123"
num = int(s)
num = 123
如果需要提取浮点数:
s = "123.12"
num = float(s)
num = 123.12
可以参考文档:Datatypes #1
关于 python 中转换数字数据类型的 post 也很不错:Parse String to Float or Int
如何从字典中获取最大键/值参考:get max valueget max key
另外,请阅读这篇文章。它将帮助您提出更清晰的问题。
How do I ask and answer homework questions?
因为这个线程上的每个人都建议您应该将 int 更改为 float。关于你上面的评论。您使用
value=int(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)
我正在尝试打印 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()
:
value = float(value)
如果需要提取整数:
s = "123"
num = int(s)
num = 123
如果需要提取浮点数:
s = "123.12"
num = float(s)
num = 123.12
可以参考文档:Datatypes #1
关于 python 中转换数字数据类型的 post 也很不错:Parse String to Float or Int
如何从字典中获取最大键/值参考:get max valueget max key
另外,请阅读这篇文章。它将帮助您提出更清晰的问题。 How do I ask and answer homework questions?
因为这个线程上的每个人都建议您应该将 int 更改为 float。关于你上面的评论。您使用
value=int(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)