我来为您编写一个统计红黄牌数量的Python案例,这个程序可以帮助统计不同球队的红黄牌情况。

class FootballMatch:
def __init__(self):
# 初始化各球队的红黄牌统计
self.teams = {}
def add_player_card(self, team_name, card_type):
"""
添加球员的牌
:param team_name: 球队名称
:param card_type: 'yellow' 或 'red'
"""
if team_name not in self.teams:
self.teams[team_name] = {'yellow': 0, 'red': 0, 'players': {}}
self.teams[team_name][card_type] += 1
def add_player_specific_card(self, team_name, player_name, card_type):
"""
添加具体球员的牌
:param team_name: 球队名称
:param player_name: 球员姓名
:param card_type: 'yellow' 或 'red'
"""
if team_name not in self.teams:
self.teams[team_name] = {'yellow': 0, 'red': 0, 'players': {}}
if player_name not in self.teams[team_name]['players']:
self.teams[team_name]['players'][player_name] = {'yellow': 0, 'red': 0}
self.teams[team_name][card_type] += 1
self.teams[team_name]['players'][player_name][card_type] += 1
def get_team_statistics(self, team_name):
"""获取特定球队的统计数据"""
if team_name in self.teams:
return self.teams[team_name]
return None
def compare_teams(self):
"""比较所有球队的红黄牌总数"""
print("\n=== 各球队红黄牌统计 ===")
print(f"{'球队':<15} {'黄牌':<8} {'红牌':<8} {'总牌数':<8}")
print("-" * 45)
team_stats = []
for team, stats in self.teams.items():
total_cards = stats['yellow'] + stats['red']
team_stats.append((team, stats['yellow'], stats['red'], total_cards))
# 按总牌数排序
team_stats.sort(key=lambda x: x[3], reverse=True)
for team, yellow, red, total in team_stats:
print(f"{team:<15} {yellow:<8} {red:<8} {total:<8}")
# 找出最多牌的球队
max_total = team_stats[0][3] if team_stats else 0
max_teams = [team for team, y, r, t in team_stats if t == max_total]
print("\n=== 红黄牌最多球队 ===")
for team in max_teams:
print(f"🏆 {team} - 总牌数: {max_total}张")
def print_player_statistics(self, team_name=None):
"""打印球员级别的统计数据"""
teams_to_show = [team_name] if team_name else list(self.teams.keys())
for team in teams_to_show:
if team in self.teams:
print(f"\n=== {team} 球员统计 ===")
print(f"{'球员':<15} {'黄牌':<8} {'红牌':<8} {'总牌数':<8}")
print("-" * 45)
players = sorted(self.teams[team]['players'].items(),
key=lambda x: x[1]['yellow'] + x[1]['red'],
reverse=True)
for player, cards in players:
total = cards['yellow'] + cards['red']
print(f"{player:<15} {cards['yellow']:<8} {cards['red']:<8} {total:<8}")
# 示例使用
def main():
# 创建比赛统计实例
match = FootballMatch()
# 模拟添加比赛数据
print("🏟️ 正在录入比赛数据...\n")
# 添加具体球员的牌
match.add_player_specific_card("西班牙", "罗德里", "yellow")
match.add_player_specific_card("西班牙", "加维", "yellow")
match.add_player_specific_card("西班牙", "拉波尔特", "red")
match.add_player_specific_card("法国", "登贝莱", "yellow")
match.add_player_specific_card("法国", "姆巴佩", "yellow")
match.add_player_specific_card("法国", "特奥", "red")
match.add_player_specific_card("法国", "琼阿梅尼", "yellow")
match.add_player_specific_card("德国", "基米希", "yellow")
match.add_player_specific_card("德国", "吕迪格", "yellow")
match.add_player_specific_card("德国", "穆西亚拉", "yellow")
match.add_player_specific_card("德国", "诺伊尔", "yellow")
match.add_player_specific_card("英格兰", "贝林厄姆", "yellow")
match.add_player_specific_card("英格兰", "凯恩", "red")
match.add_player_specific_card("英格兰", "赖斯", "yellow")
# 显示所有球队的统计
match.compare_teams()
# 显示具体某支球队的球员统计
match.print_player_statistics("西班牙")
match.print_player_statistics("法国")
# 也可以添加一些补充说明
print("\n📊 统计说明:")
print("- 黄牌:警告")
print("- 红牌:罚出场")
print("- 根据统计,总牌数最多的球队在比赛中表现更为激进")
if __name__ == "__main__":
main()
代码特点:
- 数据结构:使用字典存储球队和球员的牌数统计
- 功能完整:支持球队级别和球员级别的统计
- 排序功能:自动按总牌数排序,找出最多的球队
- 可扩展性:可以轻松添加更多球员和球队数据
输出示例:
=== 各球队红黄牌统计 ===
球队 黄牌 红牌 总牌数
-------------------------------------------------
德国 4 0 4
法国 3 1 4
英格兰 2 1 3
西班牙 2 1 3
=== 红黄牌最多球队 ===
🏆 德国 - 总牌数: 4张
🏆 法国 - 总牌数: 4张
这个程序可以根据实际需要修改,比如添加比赛轮次、日期等更多维度的统计功能。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播