gpt4 book ai didi

Python:调用位于另一个被调用函数内的函数时出现问题

转载 作者:太空宇宙 更新时间:2023-11-04 00:01:25 24 4
gpt4 key购买 nike

我正在尝试调用一个包含在另一个函数中的函数。我知道每个内部函数都是单独工作的,因为我在将它们组合到 rollDice() 中之前对它们进行了测试。

当我尝试运行代码时,它始终告诉我基本上每个变量(d20d10 等)都是未定义的,即使我有 rollDice() 函数运行。

如何让我的内部函数 (d6(roll6)) 输出在 rollDice(roll) 函数之后分配给它的值?

def diceRoll(roll):

def d20(roll20):
import random

roll20 = random.randint(1,20)

print("The roll is ", roll20)

return roll20

def d12(roll12):
import random

roll12 = random.randint(1,12)

print("The roll is ", roll12)

return roll12


def d6(roll6):
import random

roll6 = random.randint(1,6)

print("The roll is ", roll6)

return roll6

####### example of other part of code

def generateDungeon():
diceRoll(roll)

numberOfRooms = roll6

print("The roll was: ", roll6)

if numberOfRooms > 1:
print("There are ", numberOfRooms, "rooms in this dungeon.")

else:
print("There is only 1 room in this dungeon.")

return numberOfRooms

最佳答案

通过执行外部函数,您不会执行任何内部函数。无论如何,它们的变量超出范围。

如果你真的想在一个函数中使用一个函数(顺便说一下,在这种情况下这是不必要的),你可以通过使用闭包使你的代码更加简洁。此外,只需在顶部导入一次包会更容易:

import random

def diceRoll(roll):
def helper():
r = random.randint(1, roll)
print("The roll is", r)
return r
return helper

然后,要使用它,请调用 diceRoll 的返回值:

numberOfRooms = diceRoll(6)()

请注意,整个事情可以这样完成:

def diceRoll(roll):
r = random.randint(1, roll)
print("The roll is", r)
return r

然后这样调用:

numberOfRooms = diceRoll(6)

关于Python:调用位于另一个被调用函数内的函数时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55584204/

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