1
.问题描述
根据
N
名运动员得分,找到相对等级和获得最高分前
3
名的人,分别
获得金牌、银牌和铜牌。
N
是正整数,并且不超过
10 000
。所有运动员
的成绩都保证是独一无二的。
2
.问题示例
输入
[5
,
4
,
3
,
2
,
1]
,输出
["Gold
Medal"
,
"Silver
Medal"
,
"Bronze Medal"
,
"4"
,
"5"]
,前
3
名运动员得分较高,根据得分
依次获得金牌、银牌和铜牌。对于后两名运动员,根据分数输出相对等
级。
3
.代码实现
class Solution:
def sortscore(self,nums):
score = {} ##定义一个空字典
for i in range(len(nums)):
score[int(nums[i])] = i ##将下表和对应的分数储存在字典里
soscores = []
for i in nums:
soscores.append(int(i))
soscores = sorted(soscores,reverse = True) ##降序
answer = [0] * len(nums) ##重复,初始化为零
for i in range(len(nums)):
index = str(i + 1) ##排名
if i == 0:
index = "Gold Medal"
if i == 1:
index = "Silver Medal"
if i == 2:
index = "Bronze Medal"
answer[score[soscores[i]]] = index
return answer
def change(strings):
ans = ""
ranges = "0123456789"
for i in strings:
if i in ranges:
ans += i
return ans
if __name__ == "__main__":
nums = input()
solution = Solution()
print(solution.sortscore(change(nums)))
4
.运行结果
输入:
[5,4,3,2,1]
输出:
['Gold Medal', 'Silver Medal', 'Bronze Medal', '4', '5']