本文目录导读:

我来帮你创建一个统计快发任意球尝试次数的Python案例。
方案1:基础版(简单统计)
class FreeKickCounter:
def __init__(self):
self.attempts = [] # 存储每次尝试的记录
self.total_attempts = 0
self.successful_attempts = 0
self.failed_attempts = 0
def add_attempt(self, is_successful=False, description=""):
"""添加一次快发任意球尝试"""
self.total_attempts += 1
if is_successful:
self.successful_attempts += 1
else:
self.failed_attempts += 1
# 记录详细信息
attempt_record = {
'number': self.total_attempts,
'success': is_successful,
'description': description
}
self.attempts.append(attempt_record)
return f"第{self.total_attempts}次尝试已记录"
def get_statistics(self):
"""获取统计数据"""
return {
'总计次数': self.total_attempts,
'成功次数': self.successful_attempts,
'失败次数': self.failed_attempts,
'成功率': f"{self.successful_attempts/self.total_attempts*100:.1f}%" if self.total_attempts > 0 else "0%"
}
def display_statistics(self):
"""显示统计数据"""
print("=" * 50)
print("快发任意球统计")
print("=" * 50)
stats = self.get_statistics()
for key, value in stats.items():
print(f"{key}: {value}")
print("=" * 50)
# 使用示例
def main():
counter = FreeKickCounter()
# 模拟一些尝试
counter.add_attempt(True, "快速发出,射门得分")
counter.add_attempt(False, "被裁判阻止")
counter.add_attempt(True, "传给队友,形成单刀")
counter.add_attempt(False, "发球违例")
counter.add_attempt(True, "快速发出,制造威胁")
counter.display_statistics()
# 显示详细记录
print("\n详细记录:")
for attempt in counter.attempts:
status = "✓" if attempt['success'] else "✗"
print(f"{attempt['number']}. [{status}] {attempt['description']}")
main()
方案2:进阶版(带时间记录和场景分析)
import time
from datetime import datetime
from collections import Counter
class AdvancedFreeKickCounter:
def __init__(self):
self.attempts = []
def add_attempt(self, result, location="", time_point="", notes=""):
"""
添加一次尝试记录
result: 'success' 或 'fail'
location: 发球位置
time_point: 比赛时间段
"""
attempt = {
'timestamp': datetime.now(),
'result': result,
'location': location,
'time_point': time_point,
'notes': notes,
'id': len(self.attempts) + 1
}
self.attempts.append(attempt)
return f"记录成功 (ID: {attempt['id']})"
def get_total_attempts(self):
return len(self.attempts)
def get_success_rate(self):
if not self.attempts:
return 0
successes = sum(1 for a in self.attempts if a['result'] == 'success')
return (successes / len(self.attempts)) * 100
def get_location_analysis(self):
"""按位置分析"""
locations = Counter()
for attempt in self.attempts:
locations[attempt['location']] += 1
return dict(locations)
def get_time_analysis(self):
"""按时间段分析"""
time_stats = Counter()
for attempt in self.attempts:
time_stats[attempt['time_point']] += 1
return dict(time_stats)
def generate_report(self):
"""生成完整报告"""
print("\n" + "="*60)
print("快发任意球完整分析报告")
print("="*60)
print(f"总尝试次数: {self.get_total_attempts()}")
print(f"成功率: {self.get_success_rate():.1f}%")
# 位置分析
print("\n按位置统计:")
for location, count in self.get_location_analysis().items():
print(f" {location}: {count}次")
# 时间分析
print("\n按时间段统计:")
for time_point, count in self.get_time_analysis().items():
print(f" {time_point}: {count}次")
# 显示详细记录
print("\n详细记录:")
for attempt in self.attempts:
result = "✓成功" if attempt['result'] == 'success' else "✗失败"
print(f" ID:{attempt['id']:2d} | {result} | 位置:{attempt['location']} | 时间:{attempt['time_point']} | 备注:{attempt['notes']}")
print("="*60)
# 使用示例
def advanced_main():
counter = AdvancedFreeKickCounter()
# 添加一些示例数据
counter.add_attempt('success', '前场右路', '上半场', '快速发球,队友跟进射门')
counter.add_attempt('fail', '中场', '下半场', '被裁判判罚')
counter.add_attempt('success', '前场左路', '上半场', '直接射门命中')
counter.add_attempt('success', '前场中路', '补时阶段', '快速配合成功')
counter.add_attempt('fail', '后场', '上半场', '发球失误')
counter.add_attempt('success', '前场左路', '下半场', '传中制造威胁')
counter.generate_report()
advanced_main()
方案3:交互式版本
def interactive_counter():
"""交互式快发任意球统计程序"""
attempts = []
def display_menu():
print("\n" + "="*40)
print("快发任意球统计系统")
print("="*40)
print("1. 添加成功尝试")
print("2. 添加失败尝试")
print("3. 查看统计")
print("4. 查看详细记录")
print("5. 清空所有记录")
print("0. 退出")
return input("请选择操作: ")
while True:
choice = display_menu()
if choice == '1':
desc = input("请输入成功描述: ")
attempts.append({'result': 'success', 'desc': desc})
print("已记录一次成功尝试!")
elif choice == '2':
desc = input("请输入失败描述: ")
attempts.append({'result': 'fail', 'desc': desc})
print("已记录一次失败尝试!")
elif choice == '3':
total = len(attempts)
if total == 0:
print("\n还没有尝试记录")
continue
success = sum(1 for a in attempts if a['result'] == 'success')
fail = total - success
rate = (success / total) * 100
print(f"\n📊 统计结果:")
print(f"总尝试: {total}次")
print(f"成功: {success}次")
print(f"失败: {fail}次")
print(f"成功率: {rate:.1f}%")
elif choice == '4':
if not attempts:
print("\n暂无记录")
continue
print("\n详细记录:")
for i, attempt in enumerate(attempts, 1):
result = "✓" if attempt['result'] == 'success' else "✗"
print(f"{i:2d}. [{result}] {attempt['desc']}")
elif choice == '5':
attempts.clear()
print("已清空所有记录")
elif choice == '0':
print("感谢使用,再见!")
break
else:
print("无效选择,请重试")
# 运行交互式程序
# interactive_counter()
# 或者直接运行示例
if __name__ == "__main__":
print("方案1运行结果:")
main()
print("\n" + "="*50)
print("方案2运行结果:")
advanced_main()
使用建议
- 基础版适用于简单的统计需求
- 进阶版适合需要详细分析(位置、时间段等)的场景
- 交互式版本适合实时手动记录
你可以根据实际需求选择使用哪个版本,如果需要更多自定义功能(如导出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直播