python字典成績最高分數 比較字典中的分數

2021-10-11 20:42:35 字數 1472 閱讀 8533

我不認為你把你認為的細節扯出來了。我要在什麼地方再檢查一遍。在

您的第乙個提示是keyerror: 1。這意味著,您已經為鍵1簽入了乙個dictionary,但它不存在(令人困惑,但它不是錯誤型別1,只是值1是導致錯誤的原因)。看著返回的行:if students[1] > students[2] & students[1] > students[3]:它將來自學生。這意味著students是乙個字典,1不是其中的鍵。在

其次,你沒有正確使用那些迴圈。檢查如何使用它的乙個很好的技巧是使用print語句呼叫函式。e、 gfor z in students.keys():

for x in students.items():

print(z, x)

# then comment out the rest of this loop

根據您給我們的前三行示例資料,將返回:

^$為什麼?因為您要用students.keys()遍歷每個學生的名字,對於每個學生,您將再次迴圈遍歷每個學生,並用students.items()提供鍵和值。我會花點時間弄清楚,因為這實際上是你最大的問題。在

你得到鑰匙錯誤的原因是什麼?因為您只使用students[...]檢查原始詞典。在

一旦你解決了這個問題,你就會遇到第三個問題。乙個indexerror,因為您使用whatever_you_are_checking[3]訪問3個元素score陣列的第4個元素。因為陣列的第乙個元素是索引0,第二個是1,第三個是{}。計算機科學家從0開始計數。在

所以。最終,您需要:只在學生身上繞了一圈。你只需要檢查每個名字一次

當你做檢查的時候要看分數,而不是學生陣列

以0為基數,而不是以1為基數進行比較

基本上,類似於:for z in students.keys():

if students[z][0] > students[z][1] and students[z][0] > students[z][2]:

print("...")

以下是不必要的,但只是一些我想展示的東西,因為python非常酷。在正如您在split語句中發現的那樣,您可以一次性將返回從列表或元組分解為多個變數。您可以使用此選項使for迴圈的工作更輕鬆:for student_name, score in students.items():

# or event

for student_name, (score1, score2, score3) in students.items():

print(student_name, score1, score2, score3)

#: brian 94.0 89.0 92.0

在乙個語句中進行多次比較是一件事。。。對你來說很有用。在# for example:

5 < 10 > 7 # will return true

# so use this like:

if score2 < score1 > score3:

# score 1 is the highest

輸出最高分數的學生姓名

描述 輸入學生的人數,然後再輸入每位學生的分數和姓名,求獲得最高分數的學生的姓名。輸入第一行輸入乙個正整數n n 100 表示學生人數。接著輸入n行,每行格式如下 分數 姓名 分數是乙個非負整數,且小於等於100 姓名為乙個連續的字串,中間沒有空格,長度不超過20。資料保證最高分只有一位同學。輸出 ...

1147 最高分數的學生姓名

輸入學生的人數,然後再輸入每位學生的分數和姓名,求獲得最高分數的學生的姓名。第一行輸入乙個正整數n n 100 表示學生人數。接著輸入n行,每行格式如下 分數 姓名 分數是乙個非負整數,且小於等於100 姓名為乙個連續的字串,中間沒有空格,長度不超過20。資料保證最高分只有一位同學。獲得最高分數同學...

題目 最高分數的學生姓名

輸入學生的人數,然後再輸入每位學生的分數和姓名,求獲得最高分數的學生的姓名。第一行輸入乙個正整數n n 100 表示學生人數。接著輸入n行,每行格式 分數 姓名 分數是乙個非負整數,且小於等於100 姓名為乙個連續的字串,中間沒有空格,長度不超過20。資料保證最高分只有一位同學。獲得最高分數同學的姓...