本文目录导读:

我可以帮你编写一个统计脚后跟传球成功次数的Python程序,不过需要先明确具体的数据格式和分析方法。
基于事件日志的统计
如果有一段足球比赛的事件日志数据:
# 示例数据:每行包含事件类型、球员、结果等
events = [
{"type": "pass", "method": "heel", "result": "success", "player": "Messi", "minute": 23},
{"type": "pass", "method": "regular", "result": "success", "player": "Ronaldo", "minute": 25},
{"type": "pass", "method": "heel", "result": "fail", "player": "Messi", "minute": 30},
{"type": "pass", "method": "heel", "result": "success", "player": "Iniesta", "minute": 45},
{"type": "pass", "method": "heel", "result": "success", "player": "Messi", "minute": 67},
]
def count_heel_passes(events):
"""统计脚后跟传球成功次数"""
successful_heels = 0
total_heels = 0
for event in events:
if event["type"] == "pass" and event["method"] == "heel":
total_heels += 1
if event["result"] == "success":
successful_heels += 1
print(f"第{event['minute']}分钟 {event['player']} 脚后跟传球成功")
print(f"\n脚后跟传球总数: {total_heels}")
print(f"成功次数: {successful_heels}")
print(f"成功率: {successful_heels/total_heels*100:.1f}%")
return successful_heels
# 执行统计
result = count_heel_passes(events)
简单的计数器版本
def simple_heel_counter():
"""交互式统计脚后跟传球"""
successful = 0
total = 0
print("请输入每次脚后跟传球的结果 (成功=s, 失败=f, 退出=q):")
while True:
user_input = input("本次传球结果: ").lower().strip()
if user_input == 'q':
break
elif user_input == 's':
successful += 1
total += 1
print("✓ 成功!")
elif user_input == 'f':
total += 1
print("✗ 失败")
else:
print("无效输入,请输入 s/f/q")
print(f"\n统计结果:")
print(f"总传球次数: {total}")
print(f"成功次数: {successful}")
if total > 0:
print(f"成功率: {successful/total*100:.1f}%")
return successful
# 运行简单计数器
simple_heel_counter()
从CSV文件读取数据
import csv
from collections import Counter
def analyze_heel_passes_from_csv(filename):
"""
从CSV文件分析脚后跟传球
CSV格式: 时间,球员,传球方式,结果
例: 23,Messi,heel,success
"""
heel_attempts = []
successful_heels = []
player_stats = Counter()
try:
with open(filename, 'r', encoding='utf-8') as file:
reader = csv.reader(file)
header = next(reader) # 跳过表头
print(f"CSV列名: {header}")
for row in reader:
if len(row) >= 4:
minute, player, method, result = row[0], row[1], row[2], row[3]
if method.lower() == 'heel':
heel_attempts.append(row)
player_stats[player] += 1
if result.lower() == 'success':
successful_heels.append(row)
except FileNotFoundError:
print(f"未找到文件: {filename}")
return 0
print(f"\n脚后跟传球统计:")
print(f"总尝试次数: {len(heel_attempts)}")
print(f"成功次数: {len(successful_heels)}")
if heel_attempts:
print(f"成功率: {len(successful_heels)/len(heel_attempts)*100:.1f}%")
print(f"\n各球员脚后跟传球次数:")
for player, count in player_stats.most_common():
print(f" {player}: {count}次")
return len(successful_heels)
# 使用示例
# analyze_heel_passes_from_csv('matches.csv')
从比赛数据中提取
def analyze_match_data(match_data):
"""
从比赛数据中分析脚后跟传球
match_data: 包含所有事件的列表
"""
heels = [
event for event in match_data
if event.get('pass_type') == 'heel'
]
successful = [
event for event in heels
if event.get('outcome') == 'complete'
]
print(f"这场比赛共有 {len(heels)} 次脚后跟传球")
print(f"其中成功 {len(successful)} 次")
# 可选:按时间分析
print("\n时间分布:")
for event in successful:
minute = event.get('minute', 0)
quarter = "上半场" if minute <= 45 else "下半场" if minute <= 90 else "加时"
print(f" {quarter} {minute}分钟 - {event.get('player')}")
return len(successful)
# 示例数据
match = [
{'pass_type': 'heel', 'outcome': 'complete', 'minute': 12, 'player': 'Messi'},
{'pass_type': 'regular', 'outcome': 'complete', 'minute': 15},
{'pass_type': 'heel', 'outcome': 'incomplete', 'minute': 30, 'player': 'Neymar'},
{'pass_type': 'heel', 'outcome': 'complete', 'minute': 55, 'player': 'Messi'},
]
analyze_match_data(match)
使用建议
- 确定数据来源:是实时输入、日志文件、CSV还是比赛数据集
- 明确统计维度:只统计成功次数,还是需要成功率、球员分布等
- 添加可视化(可选):
import matplotlib.pyplot as plt
def visualize_heel_passes(events): """可视化脚后跟传球数据""" players = [e['player'] for e in events if e['method'] == 'heel'] results = [e['result'] for e in events if e['method'] == 'heel']
# 统计
success_count = results.count('success')
fail_count = results.count('fail')
# 饼图
plt.figure(figsize=(8, 6))
plt.pie([success_count, fail_count],
labels=['成功', '失败'],
autopct='%1.1f%%',
colors=['green', 'red'])
plt.title('脚后跟传球成功率')
plt.show()
**请告诉我:**
1. 你的数据是什么样的格式?
2. 数据来源是哪里?(实时摄像头、比赛录像记录、文本文件等)
3. 除了成功次数,还需要什么统计指标?
我可以根据你的具体需求定制更合适的代码方案。