首页 > 解决方案 > 每次我通过一个循环,我怎样才能得到一个列表的下一个项目来显示

问题描述

我正在编写一个程序,它是一个刽子手游戏,除了如何显示刽子手之外,一切都已经完成。我不会在这里发布我的整个代码,只是回答问题的要点。每次用户猜错字母时,就会显示这些人中的一个。每次他们猜错时,都会显示列表中的下一个。以下是刽子手名单:

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 次尝试都错误,我如何继续显示最后的刽子手,而不会崩溃?

标签: pythonpython-3.x

解决方案


我会使用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循环结束之前正确猜出所有字母会发生什么?


推荐阅读