是否可以在元组中存储的函数列表中循环?

2024-05-08 21:57:23 发布

您现在位置:Python中文网/ 问答频道 /正文

基本上,我正在创建一个游戏:连接4。我希望人工智能检查水平和垂直,如果用户即将赢得每一次移动是作出。实际情况是,它应该一次只执行一个检查,因为无论如何你不能同时执行两个动作。你知道吗

因此,我创建了两个check函数。一个用于水平检查,一个用于垂直检查。i、 电子邮件:

假设player counter是'X',AI counter是'O'

def horizonal_check():
    if 'XXX'= True: 
        AI='XXXO'

我实际游戏中的if语句比这更复杂,但本质上,这是它检查的内容,然后允许AI在适当的位置放置自己的计数器,阻止我获胜。你知道吗

def vertical_check():
    if 'XXX' = True: 
        AI = 'XXXO'

这实现了与上述函数相同的策略,但唯一的区别是,它检查一行中3个计数器的垂直组合,而不是水平组合。你知道吗

所以我真正想做的是将这两个check函数存储在一个元组中,然后使用for循环遍历每一个。这样可以确保一次只运行一个检查。这是我的for循环:

Checks = (horizontal_check(), vertical_check()) # Checks stored in a tuple

for c in Checks:
    return c 

我希望这个for循环一次遍历元组中的每个单独检查。但似乎不起作用。人工智能什么都不做


Tags: 函数true游戏forifdefcheckcounter
2条回答

您当前正在创建一个元组,其中分别包含两个函数调用NoneNone的返回值,而不是函数本身。你知道吗

添加功能:

Checks = (horizontal_check, vertical_check) # Checks stored in a tuple

然后叫他们:

for c in Checks:
    c()

此外,我怀疑这是一个微不足道的例子,但仍然:

  • 你的函数名不匹配。你知道吗
  • 'XXX' = True是不允许的(至少在if中),应该是'XXX' == True。你知道吗
  • returnfor循环中:这是一个不-不

很难说,但我想你想要这个

Checks = (horizontal_check, vertical_check) # do not call the function here...

return any(c() for c in Checks) #call it as you loop through ...

相关问题 更多 >

    热门问题