好的,我在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函数中,但它只是继续运行剂量不继续检查名称
答案 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