如何在函数中使用Python变量?

问题描述 投票:0回答:1

我正在尝试重新创建“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 个字母的单词,程序就会崩溃/关闭。

python function variables wordle-game
1个回答
0
投票

最简单的方法是将其交给函数。此外,您还可以循环管理您的

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)
© www.soinside.com 2019 - 2024. All rights reserved.