1

在我的游戏中,单词最初显示为下划线,因此对于单词 house,输出将是:_ _ _ _
我不知道如何用用户猜测的正确字母替换这些下划线单词中的字母。例如,如果用户猜出字母 'o',那么程序将打印“正确!这是迄今为止的单词:_ o _ _” 这是生成屏幕上打印出的下划线数量的代码片段:

random_value = random.randrange(len(WORDS))
chosen_word = WORDS[random_value]
blanks = (len(chosen_word) * "_ ")

现在我需要做的就是弄清楚如何用用户输入替换这些下划线,一次一个字母。

4

3 回答 3

1
In [93]: chosen_word = 'house'

In [94]: state = "_"*len(chosen_word)

In [95]: guess = 'o'

In [96]: new_state = [(chosen if chosen == guess else blank) 
                      for chosen, blank in zip(chosen_word, state)]

In [97]: ' '.join(new_state)
Out[97]: '_ o _ _ _'
于 2012-12-07T01:34:29.583 回答
0

我建议做更多类似的事情:

In [126]: blank = ['_'] * len(chosen_word)

In [127]: blank
Out[127]: ['_', '_', '_', '_', '_']

In [128]: ' '.join(blank)
Out[128]: '_ _ _ _ _'

所以blank现在是一个空白字母数组。那么当用户猜对了,就可以把对应的索引替换成正确的字母,用上面的方法blank打印出来.join()

于 2012-12-07T01:32:28.417 回答
0
guessed_letters = 'qxz'
for letter in chosen_word:
    if letter in guessed_letters:
        print letter
    else:
        print '_'

翻阅秘密单词的字母。对于每个字母,如果已经猜到,则打印出来。如果没有,请打印 a _

您可以将其缩短为

guessed_letters = 'qxz'
for letter in chosen_word:
    print letter if letter in guessed_letters else '_'

甚至

print ' '.join(letter if letter in guessed_letters else '_' for letter in chosen_word)
于 2012-12-07T01:32:47.820 回答