Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Por que as diferenças das saídas?

Veja código:

def lista_de_palavras(): #para definir a listas de palavras que estão dentro do arquivo "palavras.tst" arquivo = open('palavras.txt', 'r') palavras = [] for linha in arquivo: linha = linha.strip() palavras.append(linha) arquivo.close() return palavras

def palavra_aleatoria(): #para escolher de forma aleatória a palavra numero = random.randrange(0, len(lista_de_palavras())) palavra_secreta = lista_de_palavras()[numero].upper() return palavra_secreta

Aqui vem a dúvida, por que quando coloco: print(palavra_aleatora) print(palavra_aleatora) print(palavra_aleatora) print(palavra_aleatora) print(palavra_aleatora)

Ele executa a função "print(palavra_aleatora()" e emite ao menos 3 palavras distintas, ao passo que se eu fizer: teste = palavra_aleatora print(teste) print(teste) print(teste) print(teste) print(teste) print(teste)

Ele imprime totdas as palavras iguasi, ou seja, ele para de executar a função "palavra_aleatora()"?

É porque quando eu define a variável "teste" ele gardou esse valor mesmo vindo da função? Pois no primeiro caso a cada linha, eu estou executando uma função novamente a função, ao passo que no segundo exemplo eu apenas executo a variável que está com o valor fixo?

2 respostas
solução!

Olá amigo,

Antes de te responder, sugiro que para facilitar a compreensão da sua dúvida poste código assim:

Exemplo 1

from random import randrange


def lista_de_palavras(): 
    """
    Para definir a listas de palavras que estão dentro do
    arquivo 'palavras.txt'
    '"""
    arquivo = open('palavras.txt', 'r')
    palavras = [] 
    for linha in arquivo.readline():
        linha = linha.strip()
        palavras.append(linha)
    arquivo.close()
    return palavras


def palavra_aleatoria():
    """
    Para escolher de forma aleatória a palavra
    """
    numero = random.randrange(0, len(lista_de_palavras()))
    palavra_secreta = lista_de_palavras()[numero].upper()
    return palavra_secreta


print(palavra_aleatora())
print(palavra_aleatora())
print(palavra_aleatora())
print(palavra_aleatora())
print(palavra_aleatora())

No exemplo acima, dentro de cada função print temos uma chamada para a função palavra_aleatoria, retorndo assim uma palavra aleatória da lista de palavras definidas no arquivo 'palavras.txt' e imprimindo as palavras retornadas na tela.

Exemplo 2

from random import randrange


def lista_de_palavras(): 
    .
    .
    .


def palavra_aleatoria():
    .
    .
    .


 teste = palavra_aleatora()
 print(teste)
 print(teste)
 print(teste)
 print(teste)
 print(teste)
 print(teste)

Já no exemplo 2, há apenas uma chamada para a função palavra_aleatória e a palavra retornada é armazenada na variável teste. A variavel teste, por sua vez, é impressa diversas vezes na tela sem sofrer nenhuma nova modificação. Caso queira que a variável teste seja modificada você pode fazer desta forma (exemplo meramente ilustrativo):

Exemplo 3

from random import randrange


def lista_de_palavras(): 
    .
    .
    .


def palavra_aleatoria():
    .
    .
    .


teste = palavra_aleatora()
print(teste)
teste = palavra_aleatora()
print(teste)
teste = palavra_aleatora()
print(teste)
teste = palavra_aleatora()
print(teste)
teste = palavra_aleatora()
print(teste)
teste = palavra_aleatora()
print(teste)

Espero ter ajudado

Jeferson, muito obrigado!!!! Ficou muito mais claro!!!

Obrigadão!!!