-3

好的,我正在为我的第一个 python 项目制作一个 RPG,但我遇到了一个问题,代码如下:

def getName():
    tempName = ""
    while 1:
        tempName = nameInput("What is you name?")

        if len(tempName) < 1:
            continue

            yes = yesOrNo( tempName + ", is that your name?")

            if yes:
                return tempName
            else:
                continue

这是主要的定义:

    player.name = getName

while (not player.dead):
    line = raw_input(">>")
    input = line.split()
    input.append("EOI")

    if isValidCMD(input[0]):
        runCMD(input[0], input[1], player)

现在问题来了,当我运行 main(player) 时,它似乎只是在我启动它时得到 >> 提示,而不是“你叫什么名字?” 细绳。

这里有什么交易?哦,这是 python 2.7

编辑:好的,我将 () 添加到 getName 函数中,但它只是继续运行,不要继续检查名称

4

2 回答 2

4

您需要调用该函数。

player.name = getName()

在 Python 中,函数就是值。在您的代码中,您将播放器名称设置为一个函数,但实际上并未运行它。添加()将运行该函数并设置player.name为它的结果。

这是您的固定代码:

def getName():
    tempName = ""
    while True:
        tempName = raw_input("What is you name? ")
        if not len(tempName):
            continue
        if yesOrNo("Is {0} your name?".format(tempName)):
            return tempName
        else:
            continue

主要功能:

player.name = getName()

while not player.dead:
    input = raw_input(">> ").split()
    input.append("EOI")

    if isValidCMD(input[0]):
        runCMD(input[0], input[1], player)
于 2013-08-15T00:48:45.797 回答
0
if len(tempName) < 1:
    continue
    # oh no, you never ended the if statement
    # the rest of the code is still inside the if
    # so it never runs, because you already continued
    # to fix this, unindent the rest of the code in the method
    yes = yesOrNo( tempName + ", is that your name?")

    if yes:
        return tempName
    else:
        continue

该方法的其余部分在您的if语句中,而不仅仅是continue. 记住,缩进很重要!

您也永远不会调用该getName函数,因此自然不会执行其中的代码。

player.name = getName # this is not calling the function!
player.name = getName() # you need parentheses
于 2013-08-15T00:50:13.810 回答