Python跳过一步

时间:2013-08-15 00:47:00

标签: python

好的,我在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

这是主要的def:

    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(播放器)时,它似乎只是得到&gt;&gt;当我开始它而不是“你的名字是什么?”时提示字符串。

这笔交易是什么?哦,这是python 2.7

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

2 个答案:

答案 0 :(得分: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)

答案 1 :(得分: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