python案例认为上半场是否有进球产生?

wen python案例 2

Python案例:判断上半场是否有进球产生

下面通过几个不同层次的案例,展示如何用Python判断一场足球比赛上半场是否有进球。

python案例认为上半场是否有进球产生?

案例1:基础判断(已知半场比分)

def has_first_half_goal(home_ht, away_ht):
    """
    判断上半场是否有进球
    :param home_ht: 主队上半场进球数
    :param away_ht: 客队上半场进球数
    :return: True/False
    """
    return (home_ht + away_ht) > 0
# 测试
print(has_first_half_goal(1, 0))  # True  上半场有进球
print(has_first_half_goal(0, 0))  # False 上半场无进球
print(has_first_half_goal(2, 1))  # True

案例2:根据事件时间线判断

假设我们有一场比赛的进球事件列表,每个事件包含时间和进球方。

def has_goal_in_first_half(events, half_end_minute=45):
    """
    根据进球事件时间判断上半场是否有进球
    :param events: 事件列表 [(分钟, 'home'/'away'), ...]
    :param half_end_minute: 上半场结束时间(默认45分钟)
    :return: True/False
    """
    for minute, team in events:
        if minute <= half_end_minute:
            return True
    return False
# 一场比赛的进球事件
match_events = [
    (23, 'home'),   # 23分钟主队进球
    (67, 'away'),   # 67分钟客队进球
    (89, 'home'),   # 89分钟主队进球
]
print(has_goal_in_first_half(match_events))  
# 输出: True —— 因为23分钟有进球
# 若进球都发生在下半场
match_events2 = [
    (56, 'home'),
    (78, 'away'),
]
print(has_goal_in_first_half(match_events2))  
# 输出: False

案例3:结合Pandas处理多场比赛数据

实际数据分析中,通常需要批量处理,假设我们有一个CSV数据(比赛ID、上半场主队进球、上半场客队进球):

import pandas as pd
# 模拟数据
data = {
    'match_id': [1, 2, 3, 4, 5],
    'home_ht':  [1, 0, 2, 0, 0],
    'away_ht':  [0, 0, 1, 0, 1],
}
df = pd.DataFrame(data)
# 新增一列:上半场是否有进球
df['first_half_goal'] = (df['home_ht'] + df['away_ht']) > 0
print(df)

输出:

   match_id  home_ht  away_ht  first_half_goal
0         1        1        0             True
1         2        0        0            False
2         3        2        1             True
3         4        0        0            False
4         5        0        1             True

案例4:完整模拟 - 随机生成比赛数据

import random
def simulate_match():
    """模拟一场比赛,返回上半场比分和是否有进球"""
    home_ht = random.choices([0, 1, 2, 3], weights=[50, 30, 15, 5])[0]
    away_ht = random.choices([0, 1, 2, 3], weights=[55, 28, 12, 5])[0]
    has_goal = (home_ht + away_ht) > 0
    return home_ht, away_ht, has_goal
# 模拟10场比赛
for i in range(1, 11):
    h, a, g = simulate_match()
    status = "有进球 ✅" if g else "无进球 ❌"
    print(f"第{i}场  上半场比分 {h}-{a}  {status}")

场景 判断依据
已知半场比分 home_ht + away_ht > 0
已知事件时间线 是否存在 minute <= 45 的进球事件
批量数据分析 Pandas 列运算 + 布尔判断
加时/补时处理 可把 half_end_minute 设为 45+X

⚠️ 注意事项

  1. 伤停补时:上半场补时(如45+2)的进球也属于上半场,需将阈值设为 >= 45 + injury_time。
  2. 乌龙球:算作对方进球,但仍是"有进球"。
  3. 取消的进球:数据中若包含VAR取消进球,需先过滤再判断。

如果你有具体的比赛数据格式(如JSON、CSV、API接口),我可以给出针对性的解析代码。

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