我有这个 pygame 代码,它有一些函数,我希望能够将函数 apple1() 和 apple2() 放在列表中而不会被立即调用,然后能够从列表中调用它。

这是我试过的:

 #for all the apple
 def apple1():
   pygame.draw.rect(screen,COLOR.GREEN, [ posR,posU, apblock, apblock])

 def apple2():
   pygame.draw.rect(screen,COLOR.RED, [ posiR,posiU, apblock, apblock])

 def random_apple():
   array = [apple1(),apple2()]
   i = random.randrange(0,1)

   x = array[i]
   return x

 def time_apple():
     while time == True:
        random_apple()
        time.sleep(5)

最佳答案

从他们的名字中删除括号。

另外,我认为您要么想要使用 randrange(0,2) 要么 randint(0,1)

def random_apple():
   array = [apple1,apple2]
   i = random.randrange(0,2)

   x = array[i]
   return x()

编辑:
对于稍微更 Pythonic 的解决方案,不需要 random_apple 函数,您可以考虑:
# import as needed
import random
import pygame
import time

#for all the apple
def apple1():
  pygame.draw.rect(screen,COLOR.GREEN, [ posR,posU, apblock, apblock])

def apple2():
  pygame.draw.rect(screen,COLOR.RED, [ posiR,posiU, apblock, apblock])

def time_apple():
  while time == True:
    random.choice([apple1, apple2])()
    time.sleep(5)

关于python - 如何将我的函数插入数组而不被调用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55615792/

10-12 02:32