如今两年偶像选秀节目风头正盛,吸引了许多喜欢唱跳、有一颗明星梦想的少年少女参加,青春有你正是节目之一。青春有你采用计票机制,选手获得的 100青春有你票数越多,排名就越靠前。本实例要求编写程序,接收选手的姓名和票数,输出排序后的成绩。
时间: 2024-09-26 09:04:47 浏览: 124
在Python中,你可以创建一个字典来存储每个选手的信息,然后使用内置的`sorted()`函数或者`collections`模块的`defaultdict`和`heapq`模块来实现按照票数降序排序。以下是一个简单示例:
```python
import heapq
def sort_idol_scores():
# 创建一个空的字典来存储选手信息
idols = {}
while True:
# 接收用户输入的选手名和票数,直到用户停止输入
name = input("请输入选手名(输入'quit'结束):")
if name.lower() == 'quit':
break
votes = int(input("请输入票数:"))
# 添加到字典中,如果没有则初始化票数为0
idols[name] = idols.get(name, 0) + votes
# 使用heapq模块实现堆排序,堆顶总是票数最多的
sorted_idols = heapq.nlargest(len(idols), idols.items(), key=lambda x: x[1])
# 输出排序后的结果
print("排序后的选手及票数:")
for i, (name, votes) in enumerate(sorted_idols, start=1):
print(f"{i}. {name}: {votes} 票")
sort_idol_scores()
```
运行这个程序,每次输入一名选手的名称和票数,最后会显示一个由高票到低票的排行榜。
阅读全文