每次循环时,如何显示列表的下一项

时间:2018-12-08 03:55:36

标签: python python-3.x

我正在编写一个程序,该程序是子手的游戏,除了显示display子手外,其他所有内容都没有。我不会在这里发布整个代码,而只是回答问题的要点。每次用户猜错字母时,都会显示其中一个。每当他们猜错了,列表中的下一个就会显示出来。这是hangmen的列表:

hangmen=[
'''____________________ 
       |  /
       | /
       |/
       |
       |
       |
   ____|________________''',

'''____________________     
       |  /     |
       | /     (_)
       |/     
       |      
       |       
       |      
   ____|________________''',

'''____________________     
      |  /     |
      | /     (_)
      |/       |
      |        | 
      |       
      |      
   ___|________________''',

'''____________________
      |  /     |
      | /     (_)
      |/      /|\
      |      / | \
      |
      |
   ___|________________''',

'''____________________
      |  /     |
      | /     (_)
      |/      /|\
      |      / | \
      |       / \
      |      /   \
   ___|________________''']

这是到目前为止我的系统中正确/不正确的字母,非常非常简单

words=['cat', 'dog', 'mouse']
word=random.choice(words).lower()
attempts = 7
for i in attempts:

    guess=input("Guess a letter: ")
    if guess in word:
        print('Yup, that letter is in the word.')
    else:
        print('Incorrect.')

底部的else应该是显示行刑门的位置。每当用户猜错时,如何显示下一个子手?另外,由于有7次尝试而只有5个行话,如果用户猜测所有7次尝试都错了而又没有崩溃,我如何继续显示最后一个行话?

2 个答案:

答案 0 :(得分:2)

我会使用iter()

words=['cat', 'dog', 'mouse']
word=random.choice(words).lower()
lasthangman = hangmen[len(hangmen)-1]
hangmen = iter(hangmen)
attempts = 7
for i in range(attempts):
    guess=input("Guess a letter: ")
    if guess in word:
        print('Yup, that letter is in the word.')
    else:
        try:
            print(next(hangmen))
        except StopIteration:
            print(lasthangman)

每次猜错字母都会在hangmen中打印下一个hangman值,但是如果我们用完了hangmen,它将继续打印最后一个hangman。请注意,这仍然是不完整的:如果我在for循环结束之前正确猜出所有字母会怎样?

答案 1 :(得分:1)

您可以保留一个变量,只要用户错过一个问题,该变量就会添加一个变量,例如:

words=['cat', 'dog', 'mouse']
misses = 0
word=random.choice(words).lower()
attempts = 7
for i in attempts:
    guess=input("Guess a letter: ")
    if guess in word:
        print('Yup, that letter is in the word.')
    else:
        print('Incorrect.')
        misses += 1
        attempts -= 1
     print(hangmen[misses])

这将打印列表中具有未命中变量索引的项目