2017-09-25 10 views
-1

私はハングマンプログラム(これは宿題です)に取り組んでいます。これは今まで推測したことをプレイヤーに伝える部分です。私はそれがアンダースコアと文字_ pp_ eの組み合わせを送信するために期待していtheWordをプリントアウトし、それを聞いて、その代わりになるとstrを返すPythonは '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'] 

Noneを与える:ここに私のプログラミングです。問題が2行目にtheWordを置いた場所か、elseと関係があるのか​​、まったく違うのか分かりません。

+3

「else」をいつ実行すると思いますか? 'char not in lettersGuessed'がFalseの場合、' char'はどのような値を持っていますか? 'char in lettersGuessed'はFalseですか? – Kevin

+0

これはあなたのコードとまったく同じですか?空白に誤りがあります。 – doctorlove

+1

あなたのreturnステートメントが間違って配置されている、それはforループの後にする必要があります。 –

答えて

5

あなたはreturnにforループ全体が正常に実行された後に何かがあります。

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

ただ、この他に消去し、インデントを修正します。このように:

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'] 

実際には、関数は何も返しません。あなたの帰りは決して呼ばれないからです。あなたはちょうどこの他には入っていない。あなたはif文とelifが書かれていないと書かれています。つまり、これら2つの文のすべてのケースをカバーしていて、elseを書くのに意味がありません。

関連する問題