【问题标题】:What is this part of the hangman code doing?这部分刽子手代码在做什么?
【发布时间】:2023-07-27 20:52:02
【问题描述】:

我正在查看 python 上的刽子手游戏的代码,我理解所有代码,除了一个特定的位。代码如下:

import random

# constants
HANGMAN = (
"""
 ------
 |    |
 |
 |
 |
 |
 |
 |
 |
----------
""",
"""
 ------
 |    |
 |    O
 |
 |
 |
 |
 |
 |
----------
""",
"""
 ------
 |    |
 |    O
 |   -+-
 | 
 |   
 |   
 |   
 |   
----------
""",
"""
 ------
 |    |
 |    O
 |  /-+-
 |   
 |   
 |   
 |   
 |   
----------
""",
"""
 ------
 |    |
 |    O
 |  /-+-/
 |   
 |   
 |   
 |   
 |   
----------
""",
"""
 ------
 |    |
 |    O
 |  /-+-/
 |    |
 |   
 |   
 |   
 |   
----------
""",
"""
 ------
 |    |
 |    O
 |  /-+-/
 |    |
 |    |
 |   | 
 |   | 
 |   
----------
""",
"""
 ------
 |    |
 |    O
 |  /-+-/
 |    |
 |    |
 |   | |
 |   | |
 |  
----------
""")

MAX_WRONG = len(HANGMAN) - 1
WORDS = ("OVERUSED", "CLAM", "GUAM", "TAFFETA", "PYTHON")

# initialize variables
word = random.choice(WORDS)   # the word to be guessed
so_far = "-" * len(word)      # one dash for each letter in word to be guessed
wrong = 0                     # number of wrong guesses player has made
used = []                     # letters already guessed


print("Welcome to Hangman.  Good luck!")

while wrong < MAX_WRONG and so_far != word:
    print(HANGMAN[wrong])
    print("\nYou've used the following letters:\n", used)
    print("\nSo far, the word is:\n", so_far)

    guess = input("\n\nEnter your guess: ")
    guess = guess.upper()

    while guess in used:
        print("You've already guessed the letter", guess)
        guess = input("Enter your guess: ")
        guess = guess.upper()

    used.append(guess)

    if guess in word:
        print("\nYes!", guess, "is in the word!")

        # create a new so_far to include guess
        new = ""
        for i in range(len(word)):
            if guess == word[i]:
                new += guess
            else:
                new += so_far[i]              
        so_far = new

    else:
        print("\nSorry,", guess, "isn't in the word.")
        wrong += 1

if wrong == MAX_WRONG:
    print(HANGMAN[wrong])
    print("\nYou've been hanged!")
else:
    print("\nYou guessed it!")

print("\nThe word was", word)

input("\n\nPress the enter key to exit.")

现在我不明白的是,代码如何确保每次你写错信时,这个人都会更接近被绞死。它是通过 HANGMAN[错误] 来做到这一点的吗?另外,为什么方括号中有错误,我看不到在哪里创建了一个名为 wrong 的列表...有人可以解释一下 HANGMAN[wrong] 的功能吗? 谢谢

【问题讨论】:

    标签: python list function


    【解决方案1】:

    你是对的,涉及到一个列表。在这种情况下,列表称为HANGMAN,而wrong 是迄今为止错过的猜测数。

    所以print(HANGMAN[wrong]) 从代码开头的大数组中选择wrong-th 条目并将其打印出来。

    【讨论】:

    • 好吧,这是有道理的。 HANGMAN 是元组,错误的条目将选择元组中的相关元素。如果错误不是列表,为什么它在方括号中?是语法问题吗?
    • 是的,这是 Python 访问列表元素的方式。 (例如,与 C 和 Java 中的语法相同)。
    最近更新 更多