具体题目:如今两年偶像选秀节目风头正盛,吸引了许多喜欢唱跳、有明星梦想的少男少女参加,青春有你正是节目之一。青春有你采用计票机制,选手获得的票数越多,排名就越靠前。本案例要求编写程序,接收选手的姓名和票数,输出排序后的成绩

实验分析:

(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], "分", )

运行结果:

小邹邹
@小邹邹

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐