我正在尝试重新创建“wordle”的一个版本,我知道很多人在我之前已经这样做了,但我正在用它来学习。发生的情况是我不断收到错误
“UnboundLocalError:赋值前引用局部变量‘palpite’”
我的代码:
import random
def palavra_aleatoria():
with open('lista.txt') as f:
words=f.read().splitlines()
return random.choice(words)
def checar_palavra():
while len(palpite)!=5:
palpite=input('Essa palavra contém',len(palpite),'. Digite uma palavra de 5 letras: ')
if palpite==word:
print('Parabéns, a palavra correta é',palpite)
else:
letras=[word[0],word[1],word[2],word[3],word[4]]
letrasPalpite=[palpite[0],palpite[1],palpite[2],palpite[3],palpite[4]]
iguais=[elemento for elemento in letras if elemento in letrasPalpite]
print('A palavra contém: ',iguais)
word=palavra_aleatoria()
palpite=input('Digite uma palavra de 5 letras: ')
checar_palavra()
palpite=input('Digite outra palavra de 5 letras: ')
checar_palavra()
palpite=input('Digite outra palavra de 5 letras: ')
checar_palavra()
palpite=input('Digite outra palavra de 5 letras: ')
checar_palavra()
palpite=input('Digite outra palavra de 5 letras: ')
checar_palavra()
palpite=input('Digite outra palavra de 5 letras: ')
checar_palavra()
print('Parabéns, a palavra correta é',palpite)
我尝试更改函数和变量的顺序,但行不通!
我还尝试在函数之外编写 checar_palavra() 的代码,但我不希望一旦用户不写 5 个字母的单词,程序就会崩溃/关闭。
最简单的方法是将其交给函数。此外,您还可以循环管理您的
inputs
。我在您的脚本中添加了 2 条注释,突出显示如何处理 palpite
。
import random
def palavra_aleatoria():
with open('lista.txt') as f:
words=f.read().splitlines()
return random.choice(words)
def checar_palavra(palpite): #<-- note the new argument
while len(palpite)!=5:
palpite=input('Essa palavra contém',len(palpite),'. Digite uma palavra de 5 letras: ')
if palpite==word:
print('Parabéns, a palavra correta é',palpite)
else:
letras=[word[0],word[1],word[2],word[3],word[4]]
letrasPalpite=[palpite[0],palpite[1],palpite[2],palpite[3],palpite[4]]
iguais=[elemento for elemento in letras if elemento in letrasPalpite]
print('A palavra contém: ',iguais)
word=palavra_aleatoria()
for i in range(6):
w = ('uma', 'outra')[i>0]
palpite=input(f'Digite {w} palavra de 5 letras: ')
checar_palavra(palpite) #<-- pass palpite to the function
print('Parabéns, a palavra correta é',palpite)