1

私のゲームでは、単語は最初はアンダースコアとして表示されるため、house という単語の出力は次のようになります
。言葉の中の文字。たとえば、ユーザーが文字 'o' を推測した場合、プログラムは「正解です! ここまでの単語は次のとおりです: _ o _ _」と出力します。これは、画面に出力されるアンダースコアの量を生成するコードのスニペットです。 :

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

あとは、これらのアンダースコアをユーザー入力に 1 文字ずつ置き換える方法を理解するだけです。

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 に答える