初学者的{python hangman代码

时间:2017-04-12 20:37:28

标签: python-2.7

我刚开始学习python一周前。我今天尝试创建一个简单的刽子手游戏。到目前为止,我的所有代码都有效,但有一点我无法想到如何实现。我想要代码打印“你赢了”#39;当玩家正确地键入' python',逐个字母。但是在他们做对了之后我似乎无法结束它。如果他们输入' python'它将结束。一次尝试,反对信件形式。我尝试这样做的目的是.join。我似乎无法解决这个问题。对于新程序员的任何帮助或建议将不胜感激。

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 个答案:

答案 0 :(得分: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现在需要括号,因此每个print 'stuff'现在都是print('stuff'),而raw_input现在是input('input prompt')。除此之外,我很惊讶你能够逃脱word.append(char)。你不能在2.7或3.x的python append()上使用str。我认为你试图将它用作数组,因为这是你使用''.join(word)的唯一原因。要解决此问题,我会word = []而不是word = ''。现在你的''.join(word)应该正常工作了。

我建议您采取下一步并尝试对您的程序实施以下内容:如果用户未输入单个字符,请将其设置为不将字符添加到猜测列表中。如果您还没有,请尝试将其设为main.py file。使程序的一部分成为函数。添加新的游戏命令。每次在chars中添加一个实际的hangman打印出来。添加文件io来读取猜词(即不只是python,你可以在文件中添加很多单词来选择)。