Jump to content

variável de uma função não lida por outra função que a chama


mental_katsu

Postagens Recomendadas

Olá a todos.

Desculpem a ignorância. Nesse momento se ela for uma benção, estou muito abençoado.

Eu defini funções descritas no código que vou colar abaixo. Eu testei as funções separadamente e retornaram os valores que eu desejava. Porém, quando executo o programa completo a função partida não lê as variáveis x e z que foram retornadas nas funções usuario_escolhe_jogada e computador_escolhe_jogada.

Conseguem me dar uma luz?

Obrigado!

def usuario_escolhe_jogada(n, m):
    z = int(input("Quantas peças você vai tirar? "))
    while z > m or z <= 0:
      print("Oops! Jogada inválida! Tente de novo.")
      z = int(input("Quantas peças você vai tirar? "))
    return z

def computador_escolhe_jogada(n, m):
    x = m
    while x > 0:
      if (n - x) % (m + 1) != 0:
        x = x-1
      else:
        break
    if x == 0:
      x = m
      return x
    else:
      return x

def partida():
    n = int(input("Quantas peças? "))
    m = int(input("Limite de peças por jogada? "))
    if n % (m + 1) == 0 :
      print("Você começa!")
      usuario_escolhe_jogada(n, m)
      print("Voce tirou", z, "peças.")
      n = (n - z)
      if n == 0:
        print("Fim do jogo! Você ganhou!")
      else:
        if n == 1:
          print("Agora resta apenas uma peça no tabuleiro.")
          computador_escolhe_jogada(n, m)
        else:
          print("Agora restam", n, "peças no tabuleiro")
          computador_escolhe_jogada(n, m)
    else:
      print("Computador começa!")
      computador_escolhe_jogada(n, m)
      print("O computador tirou", x, "peças.")
      n = (n - x)
      if n == 0:
        print("Fim do jogo! O computador ganhou!")
      else:
        if n == 1:
          print("Agora resta apenas uma peça no tabuleiro.")
          usuario_escolhe_jogada(n, m)
        else:
          print("Agora restam", y, "peças no tabuleiro")
          usuario_escolhe_jogada(n, m)

def campeonato():
    w = 3
    while w != 0:
      if w == 3:
        print("**** Rodada 1 ****")
        w = w - 1
        partida()
      elif w == 2:
        print("**** Rodada 2 ****")
        w = w - 1
        partida()
      else:
        print("**** Rodada 3 ****")
        partida()
        w = w - 1
    print("**** Final do campeonato! ****")
    print("Placar: Você 0 X 3 Computador")

print("Bem-vindo ao jogo do NIM! Escolha:")
print("1 - para jogar uma partida isolada")
a = int(input("2 - para jogar um campeonato: "))
while a!=1 and a !=2:
    print("opção inválida")
    print("1 - para jogar uma partida isolada")
    a = int(input("2 - para jogar um campeonato: "))
if a == 1:
    print("Voce escolheu uma partida isolada")
    partida()
else:
    print("Voce escolheu um campeonato!")
    campeonato()

 

Link to comment
Compartilhe em outros sites

  • Pessoal da TecnoSpeed

Olá @mental_katsu tudo bem?

Andei vendo seu código, e esta faltando armazenar os returns das suas funções em variáveis.  
image.png

Nesse caso deveria ser.

if n == 1:
	print("Agora resta apenas uma peça no tabuleiro.")
	z = computador_escolhe_jogada(n, m)
else:
	print("Agora restam", n, "peças no tabuleiro")
	x = computador_escolhe_jogada(n, m)

Pois o return seria algo tipo "Retornar alguma coisa para ser usada fora da função", porém para que seja possível utilizar este retorno você tem que armazenar ele em uma variável como no exemplo acima.
Deste modo sempre que existir o return na função, você devera chamar essa função armazenando em uma variavel para receber o valor do return.

Exemplo:

def numero_ao_quadrado(numero):
	return numero**2

# Deste modo poderei usar o return da função
numero = numero_ao_quadrado(4)

# Caso so exista a chamada da função o return não fica armazenado em nenhum lugar
numero_ao_quadrado(4) 

Tenta ajustar as chamadas das suas funções para ver se irá funcionar o código, após isso avisa aqui se deu certo ou não.
Também estou a disposição para lhe auxiliar em quaisquer dúvidas que possam surgir. 😀

Link to comment
Compartilhe em outros sites

Crie uma conta ou entre para comentar 😀

Você precisa ser um membro para deixar um comentário.

Crie a sua conta

Participe da nossa comunidade, crie sua conta.
É bem rápido!

Criar minha conta agora

Entrar

Você já tem uma conta?
Faça o login agora.

Entrar agora
×
×
  • Create New...