gpt4 book ai didi

python - 从列表问题运行函数

转载 作者:行者123 更新时间:2023-11-30 23:25:48 26 4
gpt4 key购买 nike

我想知道如何从列表中运行函数,并使用随机模块调用它们,但我似乎无法让它工作,有人可以帮忙吗?下面是一个示例。

import random
def word1():
print "Hello"
def word2():
print "Hello again"

wordFunctList = [word1, word2]

def run():
printWord = random.randint(1, len(wordFunctList))-1
wordFunctList[printWord]
run()
run()

所以我想在无限循环中执行此操作,但我得到的输出是

Hello
Hello again

那么程序就没有做任何其他事情吗?谁能帮我?顺便说一句,我正在使用 pythonista 应用程序。我也是一个编程NOOB。我最近刚刚开始使用 python。

我问这个问题的全部原因是因为我正在制作一个基于文本的世界生成器,并且我想为生物群落定义函数,然后在世界生成时从列表中随机调用它们。

最佳答案

我会这样做:

import random

def word1():
print "Hello"

def word2():
print "Hello again"

wordFunctList = [word1, word2]

def run():
# Infinite loop, instead of recursion
while True:
# Choose the function randomly from the list and call it
random.choice(wordFunctList)()

run()

阅读this answer 。它解释了为什么应该避免尾递归并使用无限循环。

关于random.choice(wordFunctList)()的说明:

wordFunctList 是一个包含函数对象的列表:

>>> print wordFunctList
[<function word1 at 0x7fcb1f453c08>, <function word2 at 0x7fcb1f453c80>]

random.choice(wordFunctList) 选择函数并返回它:

>>> random.choice(wordFunctList)
<function word2 at 0x7f9ce040dc80>

random.choice(wordFunctList)() 调用返回的函数:

>>> print random.choice(wordFunctList)()
Hello again # Outputs during the function call
None # Returned value

使用额外的括号 (random.choice(wordFunctList)()()),您调用的是函数的返回值,即 None,但是 None 不可调用,这就是您收到错误的原因。

关于python - 从列表问题运行函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22801459/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com