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

2024-10-03 00:18:58 发布

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

我试图调用一个包含在另一个函数中的函数。我知道每个内部函数都是单独工作的,因为我在将它们组合到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

Tags: the函数importreturnisdefrandomprint
1条回答
网友
1楼 · 发布于 2024-10-03 00:18:58

通过执行外部函数,您不会执行任何内部函数。不管怎样,他们的变量超出了范围。你知道吗

如果您真的想在函数中使用函数(顺便说一句,这在本例中是不必要的),您可以通过使用闭包使代码更加简洁。此外,只需在顶部导入一次程序包就更容易了:

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)

相关问题 更多 >