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

Reescrevendo o programa do capitulo um dentro de funcoes (jogo randomico)

Oi pessoal, para praticar eu quis reescrever o código do programa da parte1 (jogo) um dentro de funções. Mas eu percebi que não consigo acessar as variáveis de outras funções que eu criei. E travei, pois nao consigo chamar as funcoes, sendo que ja declarei parametros, alguem poderia me dar uma luz? Estou comecando na programacao, obrigado.

from random import randint

def presentation():
    print("""
************************************
Bem vindo ao jogo de adivinhação 2.0
************************************""")

def numero_randomico_secreto(min,max):
    mrand = randint(min,max)
    return mrand

def rodadas(try_numbers):
    return try_numbers

def entrada_numero_usuario_vs_numero_randomico_secreto(maior,igual,menor):
    maior = entrada_numero_usuario > numero_randomico_secreto(????)
    igual = entrada_numero_usuario > nrand????
    menor = entrada_numero_usuario == nrand

def entrada_numero_usuario():
    entrada = int(input("Digite um número"))
    return entrada

# gera o cacecalho
presentation()

# gera o numero secreto
numero_randomico_secreto(1,100)

# pede o número pro usuario
entrada_numero_usuario()

Mas e como acessar depois essa variavel? Já que ficou tudo dentro de uma funcao? Obrigado desculpem estou começando abs!

3 respostas

Meu codigo

from random import randint

print("*************************************")
print("Bem vindo ao meu jogo de adivinhação!")
print("*************************************")

numero_secreto = randint(1,100)
print(numero_secreto)
total_de_tentativas = 3
rodada = 0

while rodada < total_de_tentativas:
    chute = int(input("Digite o seu número: "))
    rodada += 1
    print("Voce digitou",chute)
    print(f"Tentativa: {rodada} de {total_de_tentativas}")
    if numero_secreto == chute:
        print("Você acertou! FIM DO JOGO")
        break
    elif rodada < 3:
        print("Você errou!.",end="",sep=" ")
        if chute > numero_secreto:
                print("Chute maior que o número secreto")
        elif chute < numero_secreto:
                print("Chute menor que o número secreto")
else:

    print("Acabou suas tentativas! Fim!")
sim:

Por algum motivo quando clico em inserir codigo o forum nao abre a janela pra mim. Estou usando goolgle chrome.

solução!

Oii Gui, tudo bem?

Quanto a clicar em inserir código e não funcionar, é um problema interno de nossa plataforma que já estamos buscando soluções. Por hora, para inserir o código é necessário o procedimento manual, adicionando três acentos graves(```) no início e ao final do código.

Quanto ao seu código, você está indo no caminho certo. Você retornou os valores nas funções, certo? Então, para acessá-los em outras funções, basta salvar esse retorno em uma variável e passá-la como parâmetro para a outra função. Veja como fica:

# Salvando o valor retornado em uma variável

# gera o numero secreto
retorno_da_funcao_que_gera_numero_secreto = numero_randomico_secreto(1,100)

# pede o número pro usuario
retorno_da_funcao_que_recebe_a_entrada_do_usuario = entrada_numero_usuario()
# Passando o valor retornado para a função que faz a comparação

entrada_numero_usuario_vs_numero_randomico_secreto(retorno_da_funcao_que_gera_numero_secreto, retorno_da_funcao_que_recebe_a_entrada_do_usuario)
# função de comparação modificada para receber os valores retornados

def entrada_numero_usuario_vs_numero_randomico_secreto(numero_secreto,numero_do_usuario):
    maior = numero_do_usuario > numero_secreto
    menor = numero_do_usuario < numero_secreto
    igual = numero_do_usuario == numero_secreto

    if(maior):
      print("O número do usuário é maior que o sorteado")
    elif(menor):
      print("O número do usuário é menor que o sorteado")
    elif(igual):
      print("Os números são iguais")

Código completo modificado:

from random import randint

def presentation():
    print("""
************************************
Bem vindo ao jogo de adivinhação 2.0
************************************""")

def numero_randomico_secreto(min,max):
    mrand = randint(min,max)
    return mrand

def rodadas(try_numbers):
    return try_numbers

def entrada_numero_usuario_vs_numero_randomico_secreto(numero_secreto,numero_do_usuario):
    maior = numero_do_usuario > numero_secreto
    menor = numero_do_usuario < numero_secreto
    igual = numero_do_usuario == numero_secreto

    if(maior):
      print("O número do usuário é maior que o sorteado")
    elif(menor):
      print("O número do usuário é menor que o sorteado")
    elif(igual):
      print("Os números são iguais")


def entrada_numero_usuario():
    entrada = int(input("Digite um número: "))
    return entrada

# gera o cacecalho
presentation()

# gera o numero secreto
retorno_da_funcao_que_gera_numero_secreto = numero_randomico_secreto(1,100)
print(retorno_da_funcao_que_gera_numero_secreto)

# pede o número pro usuario
retorno_da_funcao_que_recebe_a_entrada_do_usuario = entrada_numero_usuario()

# testa qual número é maior, menor ou igual
entrada_numero_usuario_vs_numero_randomico_secreto(retorno_da_funcao_que_gera_numero_secreto, retorno_da_funcao_que_recebe_a_entrada_do_usuario)

Qualquer dúvida é só falar, estou por aqui.

Grande abraço!