本文目录导读:

我可以为您提供一个实用的Python脚本,用于统计两支球队(或更多球队)的红黄牌数量并比较哪队更多。
完整脚本
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
红黄牌统计与比较脚本
功能:统计并比较不同球队的红黄牌数量
"""
import json
import sys
from collections import defaultdict
class RedCardStats:
def __init__(self):
self.teams = defaultdict(lambda: {"yellow": 0, "red": 0})
def add_yellow(self, team_name, count=1):
"""添加黄牌"""
self.teams[team_name]["yellow"] += count
print(f"✅ 已为 {team_name} 添加 {count} 张黄牌")
def add_red(self, team_name, count=1):
"""添加红牌"""
self.teams[team_name]["red"] += count
print(f"🔴 已为 {team_name} 添加 {count} 张红牌")
def remove_yellow(self, team_name, count=1):
"""移除黄牌"""
if team_name in self.teams:
self.teams[team_name]["yellow"] = max(0, self.teams[team_name]["yellow"] - count)
print(f"➖ 已为 {team_name} 移除 {count} 张黄牌")
else:
print(f"⚠️ 球队 {team_name} 不存在")
def remove_red(self, team_name, count=1):
"""移除红牌"""
if team_name in self.teams:
self.teams[team_name]["red"] = max(0, self.teams[team_name]["red"] - count)
print(f"➖ 已为 {team_name} 移除 {count} 张红牌")
else:
print(f"⚠️ 球队 {team_name} 不存在")
def get_total_score(self, team_name):
"""获取球队总处罚分(用于比较)"""
if team_name in self.teams:
# 红牌计分更高,但这里主要看数量比较
return self.teams[team_name]["red"], self.teams[team_name]["yellow"]
return 0, 0
def compare_teams(self, team1, team2):
"""比较两支球队的处罚情况"""
if team1 not in self.teams or team2 not in self.teams:
missing = [t for t in [team1, team2] if t not in self.teams]
return f"⚠️ 缺少球队数据: {', '.join(missing)}"
t1 = self.teams[team1]
t2 = self.teams[team2]
# 计算加权分(红牌权重更高,用3倍分)
t1_score = t1["red"] * 3 + t1["yellow"]
t2_score = t2["red"] * 3 + t2["yellow"]
print("\n" + "="*50)
print(f"📊 球队对比结果")
print("="*50)
print(f"🏳️ {team1}:红牌 {t1['red']} 张,黄牌 {t1['yellow']} 张")
print(f"🏳️ {team2}:红牌 {t2['red']} 张,黄牌 {t2['yellow']} 张")
print(f"加权分(红牌×3 + 黄牌):{team1} {t1_score} vs {team2} {t2_score}")
if t1['red'] > t2['red']:
result = f"🔴 {team1} 红牌更多({t1['red']} vs {t2['red']})"
elif t2['red'] > t1['red']:
result = f"🔴 {team2} 红牌更多({t2['red']} vs {t1['red']})"
elif t1['yellow'] > t2['yellow']:
result = f"🟡 {team1} 黄牌更多({t1['yellow']} vs {t2['yellow']})"
elif t2['yellow'] > t1['yellow']:
result = f"🟡 {team2} 黄牌更多({t2['yellow']} vs {t1['yellow']})"
else:
result = "🤝 两队红黄牌完全持平"
print(f"结果:{result}")
print("="*50)
# 返回加权比较结果
if t1_score > t2_score:
return f"{team1} 处罚更多"
elif t2_score > t1_score:
return f"{team2} 处罚更多"
else:
return "两队处罚持平"
def display_all_teams(self):
"""显示所有球队数据"""
if not self.teams:
print("📭 暂无球队数据")
return
print("\n" + "="*60)
print(f"📋 所有球队红黄牌统计(共 {len(self.teams)} 支球队)")
print("="*60)
print(f"{'球队':<15} {'红牌':<6} {'黄牌':<6} {'加权分':<8}")
print("-"*40)
# 按加权分排序显示
sorted_teams = sorted(
self.teams.items(),
key=lambda x: x[1]["red"]*3 + x[1]["yellow"],
reverse=True
)
for team, stats in sorted_teams:
score = stats["red"]*3 + stats["yellow"]
red_icon = "🔴" if stats["red"] > 0 else "⚪"
yellow_icon = "🟡" if stats["yellow"] > 0 else "⚪"
print(f"{team:<15} {red_icon} {stats['red']:<4} {yellow_icon} {stats['yellow']:<4} {score:<8}")
print("="*60)
def save_to_json(self, filename="red_card_stats.json"):
"""保存数据到JSON文件"""
try:
with open(filename, 'w', encoding='utf-8') as f:
json.dump(dict(self.teams), f, ensure_ascii=False, indent=2)
print(f"💾 数据已保存到 {filename}")
except Exception as e:
print(f"❌ 保存失败: {e}")
def load_from_json(self, filename="red_card_stats.json"):
"""从JSON文件加载数据"""
try:
with open(filename, 'r', encoding='utf-8') as f:
data = json.load(f)
for team, stats in data.items():
self.teams[team] = stats
print(f"📂 已从 {filename} 加载数据")
except FileNotFoundError:
print(f"⚠️ 文件 {filename} 不存在")
except Exception as e:
print(f"❌ 加载失败: {e}")
def main():
stats = RedCardStats()
while True:
print("\n" + "="*50)
print("🏆 足球红黄牌统计工具")
print("="*50)
print("1. 添加黄牌")
print("2. 添加红牌")
print("3. 移除黄牌")
print("4. 移除红牌")
print("5. 显示所有球队统计")
print("6. 比较两支球队")
print("7. 保存数据")
print("8. 加载数据")
print("9. 退出")
print("="*50)
choice = input("请选择操作: ").strip()
if choice == '1':
team = input("球队名称: ").strip()
count = int(input("黄牌数量: ") or 1)
stats.add_yellow(team, count)
elif choice == '2':
team = input("球队名称: ").strip()
count = int(input("红牌数量: ") or 1)
stats.add_red(team, count)
elif choice == '3':
team = input("球队名称: ").strip()
count = int(input("移除黄牌数量: ") or 1)
stats.remove_yellow(team, count)
elif choice == '4':
team = input("球队名称: ").strip()
count = int(input("移除红牌数量: ") or 1)
stats.remove_red(team, count)
elif choice == '5':
stats.display_all_teams()
elif choice == '6':
team1 = input("第一支球队: ").strip()
team2 = input("第二支球队: ").strip()
result = stats.compare_teams(team1, team2)
print(f"\n📌 最终判定: {result}")
elif choice == '7':
filename = input("保存文件名(默认 red_card_stats.json): ").strip() or "red_card_stats.json"
stats.save_to_json(filename)
elif choice == '8':
filename = input("加载文件名(默认 red_card_stats.json): ").strip() or "red_card_stats.json"
stats.load_from_json(filename)
elif choice == '9':
print("👋 再见!")
break
else:
print("⚠️ 无效选择,请重新输入")
# 快速示例用法(一行命令模式)
def quick_compare(team1_data, team2_data):
"""
快速比较两个球队的数据
参数格式: {"team1": {"red": 1, "yellow": 2}, "team2": {"red": 0, "yellow": 3}}
"""
stats = RedCardStats()
for team, data in team1_data.items():
stats.teams[team] = data
for team, data in team2_data.items():
stats.teams[team] = data
stats.display_all_teams()
if __name__ == "__main__":
# 如果提供了命令行参数,直接比较
if len(sys.argv) > 1:
# 命令行模式: python script.py team1 red1 yellow1 team2 red2 yellow2
if len(sys.argv) >= 7:
stats = RedCardStats()
stats.teams[sys.argv[1]] = {"red": int(sys.argv[2]), "yellow": int(sys.argv[3])}
stats.teams[sys.argv[4]] = {"red": int(sys.argv[5]), "yellow": int(sys.argv[6])}
stats.compare_teams(sys.argv[1], sys.argv[4])
stats.display_all_teams()
else:
print("命令行用法: python script.py 球队1 红牌数 黄牌数 球队2 红牌数 黄牌数")
else:
main()
使用方法
交互模式(推荐)
直接运行脚本,进入交互菜单:
python script.py
命令行快速比较
python script.py "阿根廷" 1 2 "法国" 0 3
Python代码中直接使用
from script import RedCardStats
stats = RedCardStats()
stats.add_red("巴西", 2)
stats.add_yellow("德国", 3)
stats.add_red("德国", 1)
# 比较
stats.compare_teams("巴西", "德国")
核心功能
- 添加/移除红黄牌
- 比较两支球队(红牌优先级更高,加权分 = 红牌×3 + 黄牌)
- 显示所有球队排名
- 数据持久化(保存/加载JSON)
- 判断结果明确显示哪队红黄牌更多
运行示例
$ python script.py
🏆 足球红黄牌统计工具
==================================================
1. 添加黄牌
2. 添加红牌
...
输入数据后可立即看到:
- 每队的红黄牌数量
- 红牌优先的比较结果
- 加权积分排名
扩展建议
- 可以修改红牌权重(如改成2倍或5倍)
- 添加球队分组/联赛支持
- 增加图表可视化
- 支持CSV/Excel导出
这个脚本简单实用,适合记录和比较足球比赛中各队的纪律处罚情况。
版权声明: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直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播