实用脚本统计关门防守成功几次?

wen 实用脚本 1

本文目录导读:

实用脚本统计关门防守成功几次?

  1. 方案一:交互式手动输入(最简单,适合现场记录)
  2. 方案二:批量处理CSV文件(适合比赛录像后复盘)
  3. 使用方法建议
  4. 自定义扩展(可选)

我来帮你写一个统计“关门防守成功”次数的实用脚本,这里我理解“关门防守”(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)

使用方法建议

  1. 如果看比赛实录:用方案一,旁边开着电脑,按 yn 记录。
  2. 如果有技战术统计表:用方案二,把Excel数据导出为CSV后一键分析。

自定义扩展(可选)

如果你需要更详细的统计(例如区分“制造进攻犯规”和“迫使对手停球”),可以将代码中的 successful_closeouts 拆分成两个变量,并增加一个输入选项(a 代表进攻犯规,b 代表迫使传球失误)。

提示:直接在终端运行脚本(python 脚本名.py)即可使用,如果你用的是Excel,建议先另存为CSV格式再交给方案二脚本处理。

关门防守”指的是其他特定场景(比如足球的“关门防守”或者游戏中的特定技能),请补充说明,我可以进一步调整代码逻辑!

抱歉,评论功能暂时关闭!