具体题目:如今两年偶像选秀节目风头正盛,吸引了许多喜欢唱跳、有明星梦想的少男少女参加,青春有你正是节目之一。
青春有你采用计票机制,选手获得的票数越多,排名就越靠前。
本案例要求编写程序,接收选手的姓名和票数,输出排序后的成绩。
实验分析:
(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], "分", )
运行结果:
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)