本文目录导读:

我来帮你写一个统计“关门防守成功”次数的实用脚本,这里我理解“关门防守”(Closeout Defense)通常指:当进攻球员突破时,防守球员提前站到突破路线上(制造进攻犯规或迫使对方停球/失误)的防守动作。
由于你的需求比较泛,我提供一个通用且可配置的Python脚本,你可以根据自己记录数据的方式(手动输入或CSV文件)来统计次数。
交互式手动输入(最简单,适合现场记录)
这个脚本会循环询问每次防守回合,你只需输入 Y(成功关门)或 N(失败),最后自动结算。
# -*- coding: utf-8 -*-
"""
统计"关门防守"成功次数脚本
使用方式:运行后,根据提示输入每次防守的结果。
输入 y 或 Y 表示成功关门,输入 n 或 N 表示失败,输入 q 退出并显示统计。
"""
def main():
total_attempts = 0 # 总尝试关门次数
successful_closeouts = 0 # 成功关门并防住对手的次数
print("=" * 40)
print(" 关门防守(Closeout)统计器")
print("=" * 40)
print("指令说明:")
print(" y / Y = 关门成功(迫使对手停球/失误/进攻犯规)")
print(" n / N = 关门失败(被对手突破)")
print(" q / Q = 退出并查看统计结果")
print("-" * 40)
while True:
try:
user_input = input("本次防守结果 (y/n/q): ").strip().lower()
except (EOFError, KeyboardInterrupt):
print("\n检测到退出,正在生成报表...")
break
if user_input == 'q':
break
elif user_input == 'y':
total_attempts += 1
successful_closeouts += 1
print(f" ✅ 记录成功(第 {total_attempts} 次尝试)")
elif user_input == 'n':
total_attempts += 1
print(f" ❌ 记录失败(第 {total_attempts} 次尝试)")
else:
print(" ⚠️ 输入无效,请输入 y, n 或 q")
continue
# 输出统计报表
print("\n" + "=" * 40)
print(" 📊 比赛统计报表")
print("=" * 40)
print(f" 总关门尝试次数: {total_attempts} 次")
print(f" 成功关门次数: {successful_closeouts} 次")
print(f" 失败次数: {total_attempts - successful_closeouts} 次")
if total_attempts > 0:
success_rate = (successful_closeouts / total_attempts) * 100
print(f" 关门成功率: {success_rate:.1f}%")
else:
print(" 关门成功率: 暂无数据")
print("=" * 40)
if __name__ == "__main__":
main()
批量处理CSV文件(适合比赛录像后复盘)
如果你已经有一份包含每次防守记录的CSV文件(defense_log.csv),脚本会直接读取并计算。
CSV文件格式示例(第一行是表头):
时间,对手球员,是否关门成功(1/0) 第一节3分40秒,球员A,1 第一节2分10秒,球员B,0 第二节1分30秒,球员A,1
Python批量统计脚本:
import csv
def analyze_closeout(csv_file_path):
"""
从CSV文件中统计关门防守成功的次数
期望CSV有一列名为'是否关门成功(1/0)',值为1(成功)或0(失败)
"""
successful = 0
failed = 0
total = 0
try:
with open(csv_file_path, 'r', encoding='utf-8') as file:
reader = csv.DictReader(file) # 使用字典读取器,方便通过列名访问
for row in reader:
# 尝试获取成功列(兼容不同表头写法)
result_value = row.get('是否关门成功(1/0)') or row.get('是否成功') or row.get('result')
if result_value is None:
print("⚠️ 未找到包含成功状态的列,请检查列名")
return
total += 1
try:
# 如果是数字 1/0 或者是 'Y'/'N' 字符
if str(result_value).strip().lower() in ['1', 'y', 'true', '成功']:
successful += 1
else:
failed += 1
except:
print(f"⚠️ 无法解析第 {total} 行数据: {result_value}")
except FileNotFoundError:
print(f"❌ 未找到文件: {csv_file_path}")
return
# 输出结果
print("=" * 40)
print(" 📊 批量统计报表")
print("=" * 40)
print(f" 分析文件: {csv_file_path}")
print(f" 总防守回合: {total} 次")
print(f" 关门成功: {successful} 次")
print(f" 关门失败: {failed} 次")
if total > 0:
print(f" 成功率: {successful / total * 100:.1f}%")
print("=" * 40)
if __name__ == "__main__":
# 使用示例:请将文件路径换成你的实际路径
file_path = "defense_log.csv" # 修改为你的CSV文件路径
analyze_closeout(file_path)
使用方法建议
- 如果看比赛实录:用方案一,旁边开着电脑,按
y或n记录。 - 如果有技战术统计表:用方案二,把Excel数据导出为CSV后一键分析。
自定义扩展(可选)
如果你需要更详细的统计(例如区分“制造进攻犯规”和“迫使对手停球”),可以将代码中的 successful_closeouts 拆分成两个变量,并增加一个输入选项(a 代表进攻犯规,b 代表迫使传球失误)。
提示:直接在终端运行脚本(python 脚本名.py)即可使用,如果你用的是Excel,建议先另存为CSV格式再交给方案二脚本处理。
关门防守”指的是其他特定场景(比如足球的“关门防守”或者游戏中的特定技能),请补充说明,我可以进一步调整代码逻辑!
版权声明: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直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播