时运比赛轮子在Python的

时间:2012-12-07 01:26:24

标签: python string python-3.x slice

在我的游戏中,单词首先显示为下划线,因此对于单词house,输出将为:_ _ _ _
我无法弄清楚如何用用户回答的正确字母替换这些下划线,因为他们猜测单词中的字母。例如,如果用户猜到字母'o',那么程序将打印出“正确!到目前为止这个词:_ o _ _” 这是生成在屏幕上打印出的下划线数量的代码片段:

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

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

3 个答案:

答案 0 :(得分: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 _ _ _'

答案 1 :(得分:0)

我建议做更多的事情:

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

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

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

这样blank现在是一个空白字母数组。然后,当用户做出正确猜测时,您可以使用正确的字母替换blank中的相应索引,并使用上面的.join()方法将其打印出来

答案 2 :(得分:0)

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

翻看秘密字母的字母。对于每个字母,如果已经猜到,则打印出来。如果没有,请改为打印_

您可以将其缩短为

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)