2017-04-12 151 views
1

我剛開始學習python大概一週前。我今天嘗試創建一個簡單的hang子手遊戲。目前爲止,我所有的代碼都可以工作,但有一件事我無法想象如何實現。我希望代碼在玩家正確輸入'python'的時候打印出'you win'。但是我們似乎無法在正確的時候結束它。如果他們一次嘗試輸入「python」,它將結束,反對信件形式。我試圖做到這一點與.join一致。我似乎無法弄清楚。任何幫助或建議的新程序員將不勝感激。python hangman代碼初學者

guesses = [] 
count = 1 
ans = 'python' 
word = '' 


while count < 10: 
    guess = raw_input('guess a letter: ') 
    guesses.append(guess) 
    if ''.join(word) == ans: 
    print 'you win' 
    break 
    elif len(guess) > 1 and ans == guess: 
    print ans 
    print 'you win' 
    break 
    else: 
    for char in ans: 
     if char in guesses: 
     word.append(char) 
     print char, 
     else: 
     print '_', 
    count += 1 
else: 
    print '\nyou lose' 

回答

1

首先,我想要說的,除非你是在處理遺留代碼或一些庫,你需要的是隻能在2.7到開始,不要使用Python 2.7,而不是使用Python 3.X(currently on 3.6 )。這是因爲不久將會有2.7版本被棄用,並且3.6 +會有更多的功能和大量QOL語法和語言的改進,您將會體會到它的功能(現在還沒有2.7的功能)。

就這樣說,我會爲你翻譯成3.6。它幾乎沒有區別。

guesses = [] 
count = 1 
ans = 'python' 
word = '' 

while count < 10: 
    guess = input('guess a letter: ') 
    guesses.append(guess) 
    if ''.join(word) == ans: 
     print('you win') 
     break 
    elif len(guess) > 1 and ans == guess: 
     print(ans) 
     print('you win') 
     break 
    else: 
     for char in ans: 
      if char in guesses: 
       word.append(char) 
       print(char) 
      else: 
       print('_') 
     count += 1 
else: 
    print('\nyou lose') 

僅有的兩個在這裏變化是打印現在需要括號,所以每print 'stuff'現在是print('stuff'),現在是的raw_input input('input prompt')。除此之外,我很驚訝你可以用word.append(char)逃脫。在Python或者Python或者Python中的str上不能使用append()。我想你是想用它作爲數組,因爲這是你使用''.join(word)的唯一原因。要解決這個問題,我會做word = []而不是word = ''。現在您的''.join(word)應該正常工作。

我建議你採取下一步,並嘗試在你的程序中實現以下內容:如果用戶沒有輸入單個字符,那麼使它不會添加到猜測列表中。如果您還沒有,請嘗試將其設爲main.py file。使程序的一部分變成功能。添加一個新的遊戲命令。每次添加字符中的實際hang子手打印出來。添加文件io來讀取猜測詞(即,而不僅僅是python,你可以在文件中添加很多單詞來選擇)。