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

如何用for循环精简Pygame数字按键代码?能否给pygame.K_传变量?

解决Pygame数字按键判断的代码简化问题

关于pygame.K_*能否传入变量的问题

可以通过Python的getattr()函数动态获取pygame模块中的K_1到K_9常量。这些按键常量本质是pygame模块下的属性,我们可以通过字符串拼接生成属性名,再用getattr()获取对应的值,以此实现“用变量动态调用”的效果。

用for循环简化重复代码

基于上述方法,你可以用for循环遍历1到9的数字,动态获取每个数字对应的按键常量,统一判断按键状态并赋值。简化后的代码如下:

keys = pygame.key.get_pressed()
for num in range(1, 10):
    # 动态获取对应按键常量,比如num=1时,获取pygame.K_1
    key_const = getattr(pygame, f"K_{num}")
    if keys[key_const]:
        numList[cell_num] = str(num)

这段代码和原逻辑完全一致,但大幅减少了重复代码。如果担心多个数字键同时按下导致的冲突,可在赋值后添加break退出循环,确保只响应一个按键:

keys = pygame.key.get_pressed()
for num in range(1, 10):
    key_const = getattr(pygame, f"K_{num}")
    if keys[key_const]:
        numList[cell_num] = str(num)
        break  # 找到按下的按键后立即退出循环

内容的提问来源于stack exchange,提问作者Lucas Gutheim

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 10:54:51