簡體   English   中英

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

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM