我来帮你创建一个统计反越位成功形成单刀次数的Python案例,这个案例会模拟足球比赛中的反越位情况:

import random
from datetime import datetime
class 反越位统计系统:
def __init__(self, 比赛名称="友谊赛"):
self.比赛名称 = 比赛名称
self.反越位尝试次数 = 0
self.反越位成功次数 = 0
self.单刀形成次数 = 0
self.事件记录 = []
def 记录反越位尝试(self, 进攻方, 防守方, 时间):
"""记录一次反越位尝试"""
self.反越位尝试次数 += 1
事件 = {
'时间': time,
'进攻方': 进攻方,
'防守方': 防守方,
'类型': '反越位尝试'
}
self.事件记录.append(事件)
def 判断反越位成功(self):
"""模拟判断反越位是否成功"""
# 模拟成功率约60%
return random.random() < 0.6
def 判断形成单刀(self):
"""模拟判断是否形成单刀"""
# 模拟从反越位成功到形成单刀的成功率约70%
return random.random() < 0.7
def 模拟进攻回合(self, 进攻方, 防守方, 时间):
"""模拟一次进攻回合"""
print(f"\n🕐 第{时间}分钟 - {进攻方}进攻")
# 是否尝试反越位
if random.random() < 0.3: # 30%的进攻会尝试反越位
self.记录反越位尝试(进攻方, 防守方, 时间)
print(f"⚽ 尝试反越位...")
if self.判断反越位成功():
self.反越位成功次数 += 1
print("✅ 反越位成功!")
if self.判断形成单刀():
self.单刀形成次数 += 1
print("🎯 形成单刀机会!")
# 单刀进球概率
if random.random() < 0.5: # 50%的进球率
print("⚽ 球进了!!")
return '进球'
else:
print("❌ 单刀被扑出")
return '单刀未进'
else:
print("⏹️ 被后卫追上,未能形成单刀")
return '未能形成单刀'
else:
print("🚫 反越位失败,越位了")
return '越位'
else:
print("↩️ 选择阵地进攻")
return '未尝试反越位'
def 生成比赛报告(self, 回合数=20):
"""生成详细比赛分析报告"""
print("\n" + "="*50)
print(f"📊 {self.比赛名称} - 反越位分析报告")
print("="*50)
# 获取统计数据
stats = self.获取统计数据()
print(f"\n📈 进攻总回合数: {回合数}")
print(f"🔄 反越位尝试次数: {self.反越位尝试次数}")
print(f"✅ 反越位成功率: {stats['反越位成功率']:.1%}")
print(f"🎯 形成单刀次数: {self.单刀形成次数}")
print(f"⚽ 单刀转化进球数: {stats['进球次数']}")
return stats
def 获取统计数据(self):
"""获取统计结果"""
进球次数 = sum(1 for e in self.事件记录 if '进球' in e.get('类型', ''))
反越位成功率 = self.反越位成功次数 / self.反越位尝试次数 if self.反越位尝试次数 > 0 else 0
单刀转化率 = 进球次数 / self.单刀形成次数 if self.单刀形成次数 > 0 else 0
return {
'反越位尝试次数': self.反越位尝试次数,
'反越位成功次数': self.反越位成功次数,
'反越位成功率': 反越位成功率,
'单刀形成次数': self.单刀形成次数,
'进球次数': 进球次数,
'单刀转化率': 单刀转化率
}
def 可视化统计(self):
"""用简单图表展示统计结果"""
import matplotlib.pyplot as plt
统计 = self.获取统计数据()
类别 = ['反越位尝试', '反越位成功', '形成单刀', '进球']
数据 = [
统计['反越位尝试次数'],
统计['反越位成功次数'],
统计['单刀形成次数'],
统计['进球次数']
]
plt.figure(figsize=(10, 6))
# 柱状图
plt.subplot(1, 2, 1)
颜色 = ['#FF6B6B', '#4ECDC4', '#45B7D1', '#96CEB4']
plt.bar(类别, 数据, color=颜色, width=0.5)
plt.title(f'反越位数据统计 - {self.比赛名称}')
plt.ylabel('次数')
# 添加数值标签
for i, v in enumerate(数据):
plt.text(i, v + 0.5, str(v), ha='center')
# 饼图
plt.subplot(1, 2, 2)
if 统计['反越位尝试次数'] > 0:
sizes = [统计['反越位成功次数'], 统计['反越位尝试次数'] - 统计['反越位成功次数']]
labels = ['成功', '失败']
colors = ['#4ECDC4', '#FF6B6B']
plt.pie(sizes, labels=labels, colors=colors, autopct='%1.1f%%',
startangle=90)
plt.title('反越位成功率')
plt.tight_layout()
plt.show()
def 模拟完整比赛():
"""模拟一场完整的比赛"""
系统 = 反越位统计系统("世界杯半决赛")
# 模拟45分钟的上半场
print("🏟️ 比赛开始!")
print("比赛双方:西班牙 vs 德国")
上半场进球 = 0
下半场进球 = 0
# 模拟上半场(每2分钟一个进攻回合)
print("\n🕐 上半场开始!")
for 分钟 in range(1, 46, 1):
if random.random() < 0.2: # 20%的概率每分钟有一次进攻
if random.random() < 0.5:
进攻方 = "西班牙"
防守方 = "德国"
else:
进攻方 = "德国"
防守方 = "西班牙"
结果 = 系统.模拟进攻回合(进攻方, 防守方, 分钟)
if 结果 == '进球':
上半场进球 += 1
print(f"⚽ 比分 - 西班牙 {上半场进球 + 下半场进球}")
print("\n🏁 上半场结束!")
print(f"📊 比分:西班牙 vs 德国")
# 模拟下半场
print("\n🕐 下半场开始!")
for 分钟 in range(46, 91, 1):
if random.random() < 0.2:
if random.random() < 0.5:
进攻方 = "西班牙"
防守方 = "德国"
else:
进攻方 = "德国"
防守方 = "西班牙"
结果 = 系统.模拟进攻回合(进攻方, 防守方, 分钟)
if 结果 == '进球':
下半场进球 += 1
print(f"⚽ 比分 - 西班牙 {上半场进球} : {下半场进球} 德国")
print("\n🏁 全场比赛结束!")
# 生成最终报告
报告 = 系统.生成比赛报告()
print("\n💡 详细分析:")
print(f"- 总反越位成功次数:{报告['反越位成功次数']}")
print(f"- 形成单刀次数:{报告['单刀形成次数']}")
print(f"- 单刀进球转化率:{报告['单刀转化率']:.1%}")
if 报告['单刀形成次数'] > 0:
print(f"\n📌 {系统.比赛名称}中,反越位成功形成单刀的机会有 {系统.单刀形成次数} 次!")
return 报告
# 运行模拟
if __name__ == "__main__":
# 方式1:自动模拟一场比赛
print("="*50)
print("🏆 反越位单刀机会统计分析")
print("="*50)
# 方式2:手动输入数据
print("\n📝 您也可以手动输入反越位数据")
系统2 = 反越位统计系统("自定义统计")
想要手动输入 = input("\n是否手动输入数据?(y/n): ").lower() == 'y'
if 想要手动输入:
print("\n请输入反越位相关数据:")
尝试次数 = int(input("反越位尝试次数:"))
成功次数 = int(input("反越位成功次数:"))
单刀次数 = int(input("单刀形成次数:"))
系统2.反越位尝试次数 = 尝试次数
系统2.反越位成功次数 = 成功次数
系统2.单刀形成次数 = 单刀次数
报告 = 系统2.生成比赛报告()
print(f"\n📊 统计结果:")
print(f"反越位成功率:{报告['反越位成功率']:.1%}")
print(f"形成单刀次数:{报告['单刀形成次数']}")
else:
# 自动模拟
自动统计 = 模拟完整比赛()
这个程序的主要功能:
-
📊 核心统计功能:
- 记录反越位尝试次数
- 统计反越位成功率
- 计算形成单刀的次数
- 跟踪进球转化率
-
🎮 比赛模拟:
- 自动模拟比赛进程
- 每次进攻随机判断是否尝试反越位
- 记录每次反越位的结果
-
📈 数据分析:
- 生成详细的比赛报告
- 直观显示统计数据
- 提供可视化图表(需matplotlib)
-
💡 使用方法:
- 可以自动模拟整场比赛
- 也可以手动输入真实比赛数据
运行结果会显示每轮进攻的反越位情况,并最终统计出反越位成功形成单刀的总次数,你可以调整参数来适应不同的统计需求。
版权声明: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直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播