[英]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)
數量 = 123
如果您需要提取浮點數:
s = "123.12"
num = float(s)
數量 = 123.12
您可以參考文檔: Datatypes #1
還有關於在 python 中轉換數字數據類型的好帖子: Parse String to Float or Int
另外,請閱讀這篇文章。 它將幫助您提出更清晰的問題。 我如何提出和回答家庭作業問題?
由於此線程上的每個人都建議您將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)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.