You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在达到特定打击次数时调用列表中的函数?

问题修正与实现方案

你的代码存在两处关键问题,以下是修正后的索引调用实现逻辑:

第一步:修正函数列表定义

当前代码里的draw_order = [draw_head(), draw_body(), ...]会立即执行所有函数,而非将函数对象存入列表。要存储函数引用,需去掉括号:

# 仅保存函数对象,不立即执行
draw_order = [draw_head, draw_body, draw_bothlegs, draw_botharms]

第二步:用索引实现按打击次数调用函数

场景1:按累计打击次数触发对应函数

如果需求是累计打击数strikes达到1-4时,依次调用列表中的函数:

# 初始化全局累计打击数
strikes = 0

def strikecount():
    global strikes
    strikes += 1
    
    # 防止索引越界,仅在有效范围内调用
    if 1 <= strikes <= len(draw_order):
        # 打击数1对应索引0,以此类推,通过索引调用函数
        draw_order[strikes - 1]()

场景2:按传入的strikenum参数触发对应函数

如果需求是根据传入的strikenum值直接调用对应位置的函数:

draw_order = [draw_head, draw_body, draw_bothlegs, draw_botharms]

def strikecount(strikenum):
    global strikes
    strikes += 1
    
    # 校验参数是否在有效范围内
    if 1 <= strikenum <= len(draw_order):
        draw_order[strikenum - 1]()

关键说明

  • 列表索引从0开始,所以打击次数1对应索引0,用数值-1完成转换即可匹配正确的函数位置。
  • 添加范围判断是为了避免出现索引越界报错。

内容的提问来源于stack exchange,提问作者Christopher Chang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 03:57:16