2017-04-12 126 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,你可以在文件中添加很多单词来选择)。