Python 体育竞技分析

自顶向下

代码:

import random
def printIntro():
    print("这个程序模拟量个选手A和B的某种竞技比赛")
    print("程序运行需要A和B的能力值(以0到1之间的小数表示)")

def getInputs():
    a = eval(input("请输入选手A的能力值(0-1): "))
    b = eval(input("请输入选手B的能力值(0-1): "))
    n = eval(input("模拟比赛的场次: "))
    return a, b, n

def printSummary(winsA, winsB):
    n = winsA + winsB
    print("竞技分析开始, 共模拟{}场比赛".format(n))
    print("选手A获胜{}场比赛, 占比{:0.1%}".format(winsA, winsA/n))
    print("选手B获胜{}场比赛, 占比{:0.1%}".format(winsB, winsB/n))

def gameOver(a, b):
    return a == 15 or b == 15
    
def simOneGame(probA, probB):
    scoreA, scoreB = 0, 0
    serving = "A"
    while not gameOver(scoreA, scoreB):
        if serving == "A":
            if random.random() < probA:
                scoreA += 1
            else:
                serving = "B"
        else:
            if random.random() < probB:
                scoreB += 1
            else:
                serving = "A"
    return scoreA, scoreB

def simNGames(n ,probA, probB):
    winsA, winsB = 0, 0
    for i in range(n):
        scoreA, scoreB = simOneGame(probA, probB)
        if scoreA > scoreB:
            winsA += 1
        else:
            winsB += 1
    return winsA, winsB

def main():
    printIntro()
    probA, probB, n = getInputs()
    winsA, winsB = simNGames(n, probA, probB)
    printSummary(winsA, winsB)
main()

 输出:

这个程序模拟量个选手A和B的某种竞技比赛
程序运行需要A和B的能力值(以0到1之间的小数表示)
请输入选手A的能力值(0-1): 0.45
请输入选手B的能力值(0-1): 0.50
模拟比赛的场次: 1000
竞技分析开始, 共模拟1000场比赛
选手A获胜370场比赛, 占比37.0%
选手B获胜630场比赛, 占比63.0%

 

### Python 体育竞技数据分析 示例 #### 数据准备 为了进行有效的体育竞技分析,通常需要收集关于运动员表现的各种指标。这些数据可能来自官方统计、传感器记录或其他可靠来源。 ```python import pandas as pd # 假设有一个CSV文件包含了篮球比赛中每位球员的表现数据 data = pd.read_csv('basketball_players_performance.csv') print(data.head()) ``` #### 描述性统计分析 了解数据的基本特征对于后续更深入的建模至关重要。描述性统计可以帮助识别异常值并理解变量之间的关系[^1]。 ```python summary_stats = data.describe() print(summary_stats) correlation_matrix = data.corr() print(correlation_matrix) ``` #### 可视化探索 图形化的展示有助于发现潜在模式或趋势。这里使用`matplotlib`和`seaborn`来创建一些基本图表以辅助解释数据特点。 ```python import matplotlib.pyplot as plt import seaborn as sns plt.figure(figsize=(8,6)) sns.scatterplot(x='points', y='assists', hue='team', data=data) plt.title('Points vs Assists by Team') plt.show() plt.figure(figsize=(8,6)) sns.boxplot(x='position', y='rebounds', data=data) plt.title('Rebounds Distribution Across Positions') plt.show() ``` #### 构建预测模型 假设目标是从已知的历史数据中训练一个简单的线性回归模型,用于估计未来某场比赛的成绩。这一步骤涉及选择合适的特征作为输入,并定义清晰的目标输出量[^3]。 ```python from sklearn.model_selection import train_test_split from sklearn.linear_model import LinearRegression from sklearn.metrics import mean_squared_error X = data[['minutes_played', 'field_goals_made']] y = data['total_points'] X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) model = LinearRegression().fit(X_train, y_train) predictions = model.predict(X_test) mse = mean_squared_error(y_test, predictions) print(f'Mean Squared Error: {mse:.2f}') ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值