-5

ユーザーと一緒に絞首刑執行人を演じるプログラムを書いています。現時点では、単語の変更可能なバージョンを含むリストと、ユーザーの推測の「ステータス」の 2 つのリストがあります。したがって、単語が「python」の場合:

word = ["p", "y", "t", "h", "o", "n"]

status = []
for number in range(0, len(word)):
    status.append("_")

print(status)
>>> ["_", "_", "_", "_", "_", "_"]

私の計画はinput("Enter guess: ")、推測が「単語」リストにあるインデックスに従って、「_」を推測に置き換えることができるということです。(それは理にかなっていますか?!)

次に、各推測の後print("".join(status))、ユーザーがどのように進んでいるかを確認できるようにします。

私はいくつかの調査を行い、メソッドに出くわしましたlist.index(x)が、値が x である最初の項目のインデックスを返すことを読みました。

プログラムをどのように動作させたいかの例を次に示します。

word = ["p", "y", "t", "h", "o", "n"]
status = ["_", "_", "_", "_", "_", "_"]

Enter guess: t
_ _ t _ _ _

Enter guess: n
_ _ t _ _ n

などなど(ループなどについては心配しないでください。私はそれを持っているからです:)別のリストのインデックスに基づいて1つのリストを編集する方法がわかりません!)

最終的に「ステータス」と「ワード」を比較してユーザーが勝ったかどうかを確認できるように、「ワード」を変更するつもりはありませんでしたが、すべての提案を受け入れます!! :D

ありがとう!!

4

2 に答える 2

0

これはうまくいくはずです:

word = ['p','y','t','h','o','n']
user_letter = raw_input("Enter a letter\n")

status = ['_' for i in xrange(len(word))]
for index, ltr in enumerate(word):
     if ltr == user_letter:
         status[index] = user_letter

これは、 の長さが 1 であることを前提としていuser_letterます。もちろん、これは自分で確認できます。

于 2013-09-29T09:45:31.657 に答える
0

xリスト内包表記を使用して、値を持つすべてのインデックスを取得できます。

indices = [i for i, elem in enumerate(word) if elem == x]

したがって、次のようになります。

>>> word = ["p", "y", "t", "h", "o", "n"]
status = ["_", "_", "_", "_", "_", "_"]
>>> >>> word
['p', 'y', 't', 'h', 'o', 'n']
>>> status
['_', '_', '_', '_', '_', '_']

次に、ユーザーは推測を行います。たとえば、 があるとしますguess = 't'

>>> guess = 't'
>>> indices = [i for i, x in enumerate(word) if x == guess]
>>> indices
[2]

次に、ステータス リストを変更して、見つかったインデックスを表示します。

for i in indices:
    status[i] = guess

status次に、文字列として表示できます。

print(' '.join(status))
_ _ t _ _ _
于 2013-09-29T09:47:52.163 に答える