インデントが正しくないようです。初心者の間違い [終了]

このコードは、私のバージョンの python と一致していないように見える本の助けを借りてまとめました。部分的に機能しています。
if ステートメントで既に定義しているのに、guessed_letter が定義されていないなどのエラーが発生します。助けてください! Noob Alert.

インポートランダム

ライフ = 9
words = ['walk', 'trial', 'books', 'trick', 'brick', 'gloss', 'banks', 'notes',
「投票」、「レート」]
secret_word = random.choice(単語)
ヒント = ('_ _ _ _ ')
heart_symbol = u'\u2764'
guessed_word_correct = False

def update_hint (guessed_letter, secret_word, ヒント):
インデックス = 0
while index 0:
印刷(ヒント)
print('Lives over:' + heart_symbol * lives)
guess = input("文字または単語を当ててください: ")

推測 == secret_word の場合:
guessed_word_correct = 真
raise Exception('単語は正しい')

secret_word で推測する場合:
update_hint(推測、秘密の言葉、ヒント)
そうしないと:
print('違います。ハートが一つ減りました')
命 = 命 - 1

推測された単語が正しい場合:
print('勝った!! だった' + secret_word)
そうしないと:
print('次回は良い' + secret_word)

あなたのコードには、インデントと編成の両方に関して、かなりの問題があります。コメントはそれらの多くを説明しています。これは、あなたがやりたいことを実際に行うコードのバージョンです。

インポートランダム

words = ['walk', 'trial', 'books', 'trick', 'brick', 'gloss', 'banks', 'notes',
「投票」、「レート」]
secret_word = random.choice(単語)
ヒント = リスト ('_____'[:len(secret_word)])
heart_symbol = u'\u2764'

def update_hint (guessed_letter, secret_word, ヒント):
範囲内のインデックス (len(secret_word)):
推測された文字 == 秘密の単語 [インデックス] の場合:
ヒント [インデックス] = 推測文字

#print(secret_word)
デフプレイ():
ライフ = 9
生きている間 > 0:
print(''.join(ヒント))
print('Lives over:' + heart_symbol * lives)
guess = input("文字または単語を当ててください: ")

推測 == secret_word の場合:
guessed_word_correct = 真
真を返す

secret_word で推測する場合:
update_hint(推測、秘密の言葉、ヒント)
そうしないと:
print('違います。ハートが一つ減りました')
命 = 命 - 1
偽を返す

プレイする場合():
print('勝った!!でした', secret_word)
そうしないと:
print('次回は良い', secret_word)