2017-09-25 115 views
-1

我正在研究一个hang子手程序(这是一个家庭作业),这是它告诉玩家他们迄今为止猜到的部分。这里是我的编程:Python应该返回str返回'None'

def getGuessedWord(secretWord, lettersGuessed): 
theWord='' 
for char in secretWord: 
    if char not in lettersGuessed: 
     char='_ ' 
     theWord+=char 
    elif char in lettersGuessed: 
     theWord+=char 
    else: 
     return theWord 
print (getGuessedWord('apple', ['e', 't', 'i', 'p', 'r'] 

当我问它打印出来theWord我期待它发出下划线和字母_ pp_ e的组合,相反,它给了我None。我无法弄清楚我的问题是我在第2行放置theWord的位置,还是与第二行的位置相关,或者与其他地方完全不同。

+3

你什么时候期待'else'执行? 'char'有什么值'char not in lettersGuessed'是假的_and_'char in lettersGuessed'是False? – Kevin

+0

这是你的代码吗?它有空白错误。 – doctorlove

+1

你的return语句放错了位置,它应该在for循环之后。 –

回答

5

你必须整个for循环的成功执行后return东西:

def getGuessedWord(secretWord, lettersGuessed): 
    theWord='' 
    for char in secretWord: 
     if char not in lettersGuessed: 
     char='_ ' 
     theWord+=char 
     elif char in lettersGuessed: 
     theWord+=char 
    return theWord #here, returning theWord 
print (getGuessedWord('apple', ['e', 't', 'i', 'p', 'r'])) 
0

就抹掉这个else和修复缩进。像这样:

def getGuessedWord(secretWord, lettersGuessed): 
    theWord='' 
    for char in secretWord: 
     if char not in lettersGuessed: 
      char='_ ' 
      theWord+=char 
     elif char in lettersGuessed: 
      theWord+=char 
    return theWord 

print (getGuessedWord('apple', ['e', 't', 'i', 'p', 'r'] 

Actualy your function is returns nothing nothing。这是因为你的回报永远不会被调用。你只是不要进入这个其他的。你写了一个if语句,并且elif不在,这意味着你在这两个语句中覆盖了所有的情况,然后没有意义写一个else。