Python字典:选手统计票数和姓名进行排序

Python字典:选手统计票数和姓名进行排序,第1张

具体题目:如今两年偶像选秀节目风头正盛,吸引了许多喜欢唱跳、有明星梦想的少男少女参加,青春有你正是节目之一。


青春有你采用计票机制,选手获得的票数越多,排名就越靠前。


本案例要求编写程序,接收选手的姓名和票数,输出排序后的成绩


实验分析:

(1)上面描述的选手的姓名与票数是一一对应的关系,因此可通过字典保存像这种关系的数据。


(2)按“选择的票数越多,排名越靠前”描述,此处需要比较字典中保存的票数,票数最高的选手位列第1名,票数最少的选手位列最后一名,可借助列表的sort()方法进行排序


代码如下: 

第一种:

player_info = {}
li = []
print('输入quit表示选手成绩录入完毕')
while True:
    name = input("请输入选手名称:\n")
    if name == 'quit':
        break
    score = float(input("请输入选手票数:\n"))
    player_info[name] = score
items = player_info.items()
for j in items:
    li.append([j[1], j[0]])
# 转换为list类型,进行排序
li.sort()
# 获取选手索引
count = len(li) - 1
# 输出排名
for i in range(1, len(li) + 1):
    print(f"第{i}名:{li[count][1]},成绩为{li[count][0]}分")
    count -= 1

第二种:

print("输入quit表示录入完毕:")
dict={}
for i in range(1,50):
    key=input("请输入选手的姓名:\n")
    if key=="quit":
       break
    value=int(input("请输入选手的票数:\n"))
    dict[key]=value
result = sorted(dict.items(), key=lambda x: x[1], reverse=True)
print("第一名:", result[0][0], "成绩为:", result[0][1], "分", )
print("第二名:", result[1][0], "成绩为:", result[1][1], "分", )
print("第二名:", result[2][0], "成绩为:", result[2][1], "分", )

运行结果:

@小邹邹

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/567542.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-09
下一篇 2022-04-09

发表评论

登录后才能评论

评论列表(0条)

保存