初學者到這裏編程,需要你的指導。Python練習:計算每個學生的最低和最高分數。
我從一些免費的在線課程學習python,然後遇到這個特定的練習,我已經解決了,但令我困惑的是,有兩種不同的方式產生不同的結果。所以在這裏不用..
問題: 使用文本文件studentdata.txt(如下圖所示)編寫計算每個學生的最低和最高分數的程序。打印出他們的名字。
studentdata.txt:
joe 10 15 20 30 40
bill 23 16 19 22
sue 8 22 17 14 32 17 24 21 2 9 11 17
grace 12 28 21 45 26 10
john 14 32 25 16 89
我的最後一次嘗試:
xFile = open("studentdata.txt", "r")
for xLine in xFile:
xList = xLine.split()
min = 100
max = 0
for x in xList[1:]:
if int(x) > max:
max = int(x)
for x in xList[1:]:
if int(x) < min:
min = int(x)
print(xList[0],"\tmin: ",min,"\tmax: ",max)
xFile.close()
結果:
joe min: 10 max: 40
bill min: 16 max: 23
sue min: 2 max: 32
grace min: 10 max: 45
john min: 14 max: 89
然後我將它比作由網站提供的給定答案(我把它改寫在我的風格):
xFile = open("studentdata.txt", "r")
for xLine in xFile:
xList = xLine.split()
print(xList[0],"\tmin: ",min(xList[1:]),"\tmax: ",max(xList[1:]))
xFile.close()
哪個更簡單,bu t將其產生略微不同的(但重要)結果:
joe min: 10 max: 40
bill min: 16 max: 23
sue min: 11 max: 9
grace min: 10 max: 45
john min: 14 max: 89
注意,爲結果告是不同的。 '自動'版本不會產生正確的結果。這是怎麼發生的?
謝謝。
的自動版本(因爲你創造它)並比較它們作爲字符串,價值觀,併爲字符串9比11「大」 - 納米秒之前@ niemmi回答了;-) – Dilettant
這很清楚。謝謝!然而,我試圖修改最後的命令:print(xList [0],「\ tmin:」,min(int(xList [1:])),「\ tmax:」,max(int(xList [1:])) )),收到此錯誤:TypeError:int()參數必須是字符串或數字,而不是'list'..顯然最大/最小值不支持'list'模式。所以第一個(手動)答案是正確的。我怎樣才能簡化這個?謝謝 – NunNo
啊不,你不能把一個字符串列表作爲int的參數賦予int,int列表是你在列表中讀取時必須做的;-)你可以使用min和最大INTS的名單上 - 樣本分鐘([INT(X)爲X中的Xlist [1:]) – Dilettant