コードを見て、解決しようとしている部分が 24 ~ 26 行目のコメントである場合、そのために動的に作成された変数はまったく必要ありません。助けます。
あなたはこれを持っています:
enum = [i for i,x in enumerate(letterlist) if x == word]
あなたの変数の名前は非常に紛らわしいです. と呼ばれるものwordは推測された文字ですが、別の変数は別letterguessのものであり、それと呼ばれる変数はletter単語全体です.
enumwordwithinのすべてのインデックスのリストですletterlist。たとえば、letterlistis'letter'とwordisの場合t、それは になります[2, 3]。
次に、これを行います。
bracketstrip = (str(w) for w in enum)
だから今bracketstripです['2', '3']。なぜあなたがそれを望んでいるのかわかりません。
z = int(''.join(bracketstrip))
そして、そう''.join(bracketstrip)です。'23'z23
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なぜ文字が必要だと思いましたか? これらすべての決定を一度に頭の中に入れておくことは誰にもできません。スキルが高ければ高いほど、コードの多くが明白になり、コメントは不要になりますが、コメントが不要になることは決してありません。始めたばかりのときは、何かを行う方法を理解するたびに、何をしようとしていたのか、なぜそれが機能するのかを思い出させるコメントを追加してください。コメントは後でいつでも削除できます。あなたが書いていないコメントを取り戻すことはできません。