2017-03-10 45 views
0

我創建了一個讀取.txt文件的程序,並在其中附加了一個等級列表。當我嘗試從該列表中獲取最小值和最大值時,即使列表包含大量數字,它也會返回相同的值。'min'和'max'函數從數字的.txt文件返回相同的值

.txt文件的格式是這樣的:

name 
grade 
name 
grade 

這裏是我的代碼:

def main(): 

    #open gradebook 
    gradebook_file = open ('gradebook.txt', 'r') 
    name = gradebook_file.readline() 
    grade = float (gradebook_file.readline()) 
    numbers = [] 
    for lines in gradebook_file: 
     numbers.append (grade) 

    _min = min (numbers) 
    _max = max (numbers) 

    #define variable to read contents of gradebook 
    contents = gradebook_file.read() 

    #print contents 
    print (contents) 
    print ('The minimum average grade was a(n) ' + str (_min) + '.') 
    print ('The maximum average grade was a(n) ' + str (_max) + '.') 

    #close the gradebook 
    gradebook_file.close() 

#call main 
main() 
+2

在你長達一小時的調試會話中,你有沒有嘗試過'print(numbers)'? –

+0

你正在閱讀的只有1個等級和1個名字,我正在修改你的代碼。 – Ambitions

回答

3
grade = float (gradebook_file.readline()) 
numbers = [] 
for lines in gradebook_file: 
    numbers.append (grade) 

將轉換爲第二線浮動,並重覆上的其餘部分文件重新添加相同的值。

你得到一個具有相同值的清單,所以min(numbers) == max(numbers)

快速修復讀取一個線路輸出兩個(奇數之一),並跳過名稱:

numbers = [float(line) for i,line in enumerate(gradebook_file) if i%2] 

末注:當您已經閱讀文件後做contents = gradebook_file.read(),它讀取什麼:你已經用盡了文件生成器。

+0

有人可以解釋downvote?如果我的回答是錯誤的,我會糾正或刪除它(已經刪除+3票的答案,所以這不是問題) –

+0

堆棧溢出最近得到了ornery。我沒有看到任何值得倒下的東西。 –

+0

@JohnColeman謝謝。我懷疑有人正在考慮OP應該自己調試,問題不好,應答者應該受到懲罰。我知道。在這些情況下,我試圖超級有用,並且超越了微不足道的答案,嘗試改進OP代碼,而不是用一些糟糕的代碼來快速修復它。 –