2016-11-17 4 views
0

私はハングマンゲームを作ろうとしています。私はまだ多くのことを考え出しているので、一度に少しずつやっています。Pythonは私のリストに私が探している文字がないと主張します

この問題は、本当に私はここで立ち往生しています。私はそれを比較しているキャラクターがリストにある限り、「推測」のリストにある文字を印刷しようとしています。

しかし、何らかの理由で文字がリストにないと思われるようです。値をハードコーディングしても、それはまだ機能しません。

def win(guesses): 
    if guesses == lst: 
     return True 
    else: 
     return False 


def check(guess): 
    fail = 0 
    #char = str(guess) 
    for char in lst: 
     if char in guess: 
      guesses.append(guess) 
      return True 
     else: 
      fail = fail + 1 
      if fail == len(lst): 
       return False 
#Start up! 
word = "jamie" 
lst = [] 
Guess = '' 
guesses = [] 
for c in word: 
    lst.append(c) 
for char in word: 
    print '_', 
# Lets play! 
won = False 
while won == False: 
    Guess = raw_input("\nGuess a letter: "), 
    while Guess in guesses: 
     Guess = raw_input("\nPlease choose a letter not already used: "), 
    ans = check(Guess) 
    if ans == True: 
     for c in lst: 
      if c in guesses: 
       print c, 
      else: 
       print "_", 
    won = win(guesses) 
else: 
    print "Great job you won!" 
    print guesses 

P.S
それが読みにくいです場合、私は謝るが、私のコードを改善するための任意のヒント以上の賢明な方法がある場合、私はそれを聞いてうれしいです。あなたが原因単一文字に予期しない結果を得ている

答えて

10

Guess = raw_input("\nGuess a letter: "), 
            ^

このようなコンマを追加するには、あなたが興味を持っている文字列の単一の要素が含まれているタプルを生成

>>> x = 1 
>>> x 
1 
>>> type(x) 
<class 'int'> 
>>> x = 1, 
>>> x 
(1,) 
>>> type(x) 
<class 'tuple'> 

raw_inputのいずれかの後にカンマを追加しないでください。 printステートメントと同じ方法では動作しません。

関連する問題