本文目录导读:

我来帮你写一个统计转身过人次数的Python案例,这通常用于篮球、足球等运动数据分析。
基础版本:手动输入数据
def count_turnover_moves():
"""统计球员转身过人次数"""
# 创建球员数据字典
players = {
'球员A': {'转身次数': 0, '过人次数': 0},
'球员B': {'转身次数': 0, '过人次数': 0}
}
print("=== 转身过人次数统计系统 ===")
print("请输入比赛数据(输入'结束'退出)")
print("格式:球员名 操作(转身/过人)")
print("示例:球员A 转身")
print("-" * 40)
while True:
data = input("请输入数据:").strip()
if data == '结束':
break
try:
parts = data.split()
if len(parts) != 2:
print("格式错误!请输入:球员名 操作")
continue
player_name, action = parts
if player_name not in players:
print("球员不存在,请重新输入")
continue
if action == '转身':
players[player_name]['转身次数'] += 1
elif action == '过人':
players[player_name]['过人次数'] += 1
else:
print("操作类型错误(应为'转身'或'过人')")
continue
print(f"已记录:{player_name} - {action}")
except Exception as e:
print(f"输入错误:{e}")
# 输出统计结果
print("\n" + "="*50)
print("统计结果:")
print("="*50)
for player, stats in players.items():
print(f"\n{player}:")
print(f" 转身次数:{stats['转身次数']}")
print(f" 过人次数:{stats['过人次数']}")
print(f" 总数:{stats['转身次数'] + stats['过人次数']}")
# 比较谁多
print("\n" + "="*50)
print("对比结果:")
p1_turns = players['球员A']['转身次数']
p2_turns = players['球员B']['转身次数']
p1_dribbles = players['球员A']['过人次数']
p2_dribbles = players['球员B']['过人次数']
print(f"转身次数对比:球员A({p1_turns}) vs 球员B({p2_turns})")
if p1_turns > p2_turns:
print("→ 球员A转身次数更多")
elif p1_turns < p2_turns:
print("→ 球员B转身次数更多")
else:
print("→ 转身次数相同")
print(f"过人次数对比:球员A({p1_dribbles}) vs 球员B({p2_dribbles})")
if p1_dribbles > p2_dribbles:
print("→ 球员A过人次数更多")
elif p1_dribbles < p2_dribbles:
print("→ 球员B过人次数更多")
else:
print("→ 过人次数相同")
# 运行程序
if __name__ == "__main__":
count_turnover_moves()
进阶版本:随机数据生成与可视化
import random
import matplotlib.pyplot as plt
from collections import defaultdict
class PlayerStats:
"""球员统计数据类"""
def __init__(self, name):
self.name = name
self.turns = 0
self.dribbles = 0
def add_turn(self):
self.turns += 1
def add_dribble(self):
self.dribbles += 1
def total_moves(self):
return self.turns + self.dribbles
def simulate_match():
"""模拟一场比赛数据"""
players = {
'球员A': PlayerStats('球员A'),
'球员B': PlayerStats('球员B')
}
# 模拟比赛时间(10分钟,每分钟随机产生操作)
print("\n模拟比赛数据生成中...")
for minute in range(1, 11):
# 每个球员在这一分钟可能产生1-3次操作
for player_name, player in players.items():
operations = random.randint(1, 3)
for _ in range(operations):
if random.random() < 0.4: # 40%概率是转身
player.add_turn()
else: # 60%概率是过人
player.add_dribble()
print(f"第{minute}分钟数据更新...")
return players
def visualize_stats(players):
"""可视化统计数据"""
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(12, 5))
names = list(players.keys())
turns = [players[name].turns for name in names]
dribbles = [players[name].dribbles for name in names]
totals = [players[name].total_moves() for name in names]
# 转身次数对比
ax1.bar(names, turns, color=['blue', 'red'])
ax1.set_title('转身次数对比')
ax1.set_ylabel('次数')
for i, v in enumerate(turns):
ax1.text(i, v + 0.5, str(v), ha='center')
# 过人次数对比
ax2.bar(names, dribbles, color=['green', 'orange'])
ax2.set_title('过人次数对比')
ax2.set_ylabel('次数')
for i, v in enumerate(dribbles):
ax2.text(i, v + 0.5, str(v), ha='center')
plt.tight_layout()
plt.show()
return fig
def analyze_and_compare(players):
"""分析和比较结果"""
print("\n" + "="*60)
print("比赛统计报告")
print("="*60)
# 详细统计
for name, player in players.items():
print(f"\n{player.name}:")
print(f" ├─ 转身次数: {player.turns}")
print(f" ├─ 过人次数: {player.dribbles}")
print(f" └─ 总操作: {player.total_moves()}")
print(f" 转身占比: {player.turns/player.total_moves()*100:.1f}%")
# 对比分析
print("\n" + "="*60)
player_names = list(players.keys())
p1, p2 = player_names[0], player_names[1]
# 转身对比
print(f"\n转身对比:")
if players[p1].turns > players[p2].turns:
print(f"🏆 {p1}转身更多({players[p1].turns} vs {players[p2].turns})")
elif players[p1].turns < players[p2].turns:
print(f"🏆 {p2}转身更多({players[p2].turns} vs {players[p1].turns})")
else:
print(f"🤝 转身次数相同({players[p1].turns})")
# 过人对比
print(f"\n过人对比:")
if players[p1].dribbles > players[p2].dribbles:
print(f"🏆 {p1}过人更多({players[p1].dribbles} vs {players[p2].dribbles})")
elif players[p1].dribbles < players[p2].dribbles:
print(f"🏆 {p2}过人更多({players[p2].dribbles} vs {players[p1].dribbles})")
else:
print(f"🤝 过人次数相同({players[p1].dribbles})")
# 综合评分
print("\n综合评分:")
for name, player in players.items():
score = player.turns * 1.5 + player.dribbles # 转身权重1.5
print(f"{name}: {score}分")
# 主程序
def main():
print("="*60)
print("🏀 转身过人次数统计系统 🏀")
print("="*60)
choice = input("\n选择模式:\n1. 手动输入数据\n2. 模拟比赛数据\n请选择(1/2):")
if choice == '1':
count_turnover_moves()
elif choice == '2':
players = simulate_match()
visualize_stats(players)
analyze_and_compare(players)
else:
print("无效选择!")
if __name__ == "__main__":
main()
简洁版本:简单统计比较
def simple_comparison():
"""简单版本:快速统计比较"""
# 使用字典存储数据
data = {
'球员A': {'转身': [], '过人': []},
'球员B': {'转身': [], '过人': []}
}
# 记录比赛事件(示例数据)
match_events = [
('球员A', '转身', 5), # 第5分钟
('球员B', '过人', 8),
('球员A', '过人', 12),
('球员B', '转身', 15),
('球员A', '转身', 20),
('球员A', '过人', 25),
('球员B', '过人', 30),
('球员B', '转身', 35),
('球员A', '转身', 38),
('球员B', '过人', 42),
]
# 统计数据
for player, action, minute in match_events:
data[player][action].append(minute)
# 输出结果
print("=== 比赛统计 ===")
for player in data:
turns = len(data[player]['转身'])
dribbles = len(data[player]['过人'])
print(f"{player}: 转身{turns}次, 过人{dribbles}次")
# 显示时间点
print(f" 转身时间点: {data[player]['转身']}")
print(f" 过人时间点: {data[player]['过人']}")
# 比较结果
p1_turns = len(data['球员A']['转身'])
p2_turns = len(data['球员B']['转身'])
print("\n=== 对比结果 ===")
if p1_turns > p2_turns:
print("球员A转身更多")
elif p2_turns > p1_turns:
print("球员B转身更多")
else:
print("转身次数相同")
# 运行
if __name__ == "__main__":
simple_comparison()
使用方法
- 手动输入模式:运行程序,输入"球员A 转身"或"球员B 过人"等命令
- 模拟模式:自动生成随机比赛数据并可视化
- 简单比较:使用预置数据进行快速比较
这些代码都包含了完整的统计、比较和输出功能,你可以根据实际需求选择使用。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播