コードを見て、解決しようとしている部分が 24 ~ 26 行目のコメントである場合、そのために動的に作成された変数はまったく必要ありません。助けます。
あなたはこれを持っています:
enum = [i for i,x in enumerate(letterlist) if x == word]
あなたの変数の名前は非常に紛らわしいです. と呼ばれるものword
は推測された文字ですが、別の変数は別letterguess
のものであり、それと呼ばれる変数はletter
単語全体です.
enum
word
withinのすべてのインデックスのリストですletterlist
。たとえば、letterlist
is'letter'
とword
isの場合t
、それは になります[2, 3]
。
次に、これを行います。
bracketstrip = (str(w) for w in enum)
だから今bracketstrip
です['2', '3']
。なぜあなたがそれを望んでいるのかわかりません。
z = int(''.join(bracketstrip))
そして、そう''.join(bracketstrip)
です。'23'
z
23
letterguess[z] = word
と を設定する代わりに設定IndexError
しようとしているため、が得られます。letterguess[23]
letterguess[2]
letterguess[3]
これを置き換えたいと思うものは次のとおりです。
enum = [i for i,x in enumerate(letterlist) if x == word]
for i in enum:
letterguess[i] = word
コードの他の部分に関するいくつかのヒント:
次のようなことを行う場所がいくつかあります。
letterlist = []
for eachcharacter in letter:
letterlist.append(eachcharacter)
これは と同じletterlist = list(letter)
です。しかし、実際には、そのリストはまったく必要ありません。あなたがそれで行う唯一のことはであり、そもそも でfor i, x in enumerate(letterlist)
まったく同じことを行うことができた. letter
あなたは通常、必要以上に物事を自分で難しくしています。コードの各行を書いた理由を実際に理解していることを確認してください。
「他の方法ではうまくいかなかったから」は理由にはなりません。<em>何をしようとしていたのですか? list
なぜ文字が必要だと思いましたか? これらすべての決定を一度に頭の中に入れておくことは誰にもできません。スキルが高ければ高いほど、コードの多くが明白になり、コメントは不要になりますが、コメントが不要になることは決してありません。始めたばかりのときは、何かを行う方法を理解するたびに、何をしようとしていたのか、なぜそれが機能するのかを思い出させるコメントを追加してください。コメントは後でいつでも削除できます。あなたが書いていないコメントを取り戻すことはできません。