在我的游戏中,单词首先显示为下划线,因此对于单词house,输出将为:_ _ _ _
我无法弄清楚如何用用户回答的正确字母替换这些下划线,因为他们猜测单词中的字母。例如,如果用户猜到字母'o',那么程序将打印出“正确!到目前为止这个词:_ o _ _”
这是生成在屏幕上打印出的下划线数量的代码片段:
random_value = random.randrange(len(WORDS))
chosen_word = WORDS[random_value]
blanks = (len(chosen_word) * "_ ")
现在我需要做的就是弄清楚如何用用户输入替换那些下划线,一次一个字母。
答案 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)