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

Código errado - só encerra o programa após a segunda solicitação de sair

O programa só encerra depois de informado o 0 (zero, valor que encerra o while) pela segunda vez.

Se o 0 (zero) for a primeira entrada ele sai imediatamente. Mas, se for informado um outro número e na segunda solicitação de sair for informado o zero, o zero precisa ser informado duas vezes, para então o programa sair.

Segue código:

import forca
import adivinhacao
jogo = 99

def escolhe_jogo():
  print("*********************************")
  print("*******Escolha o seu jogo********")
  print("*********************************")

  print ('(1) Forca  (2) Adivinhação  (0) Sair')  # (0) Sair
  jogo = int(input('Qual jogo? '))

  if (jogo == 1):
    forca.jogar()
  elif (jogo == 2):
    adivinhacao.jogar()
  return jogo


if(__name__ == '__main__'):
  while (escolhe_jogo() != 0):
    escolhe_jogo()

Se for informado o zero de primeira, o programa encerra. Como deve ser. Insira aqui a descrição dessa imagem para ajudar na acessibilidade

É preciso informar o zero duas vezes para sair. Depois de informar um outro número. Insira aqui a descrição dessa imagem para ajudar na acessibilidade

2 respostas
solução!

Olá, Fábio. Tudo bem?

Isso está acontecendo pois você colocou a função escolhe_jogo() dentro da condição do while.

Para resolver, você pode usar a própria varíavel jogo que foi declarada no ínicio do código. E o seu while ficaria assim:

  while (jogo != 0):
    jogo = escolhe_jogo()

Espero ter ajudado, bons estudos!

Obrigado, Danilo, pelo que entendi quando eu estava chamando a comparação (escolhe_jogo() != 0) a função era executada dentro do while também.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software