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

Quando tento selecionar a dificuldade o programa não entende o número e fecha

Olá, depois de ver a proposta do curso tentei criar um projeto meu, o código ficou assim:

Insira aqui a descrição dessa imagem para ajudar na acessibilidadeInsira aqui a descrição dessa imagem para ajudar na acessibilidade

Quando eu rodo o código, aparece o seguinte:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Eu insiro a dificuldade mas ele não reconhece e volta para o começo do código, alguém poderia me dizer por que ele não está reconhecendo?

2 respostas
solução!

Olá Calebe, tudo bem com você?

No Python por padrão, toda entrada do usuário através do input será retornada como do tipo string, devido a isso, o valor salvo na variável dificuldade será um número do tipo string. Assim, quando ocorre a verificação do valor salvo na variável dificuldade nas estruturas condicionais, está verificando se o valor é igual a um número do tipo int, como no seguinte exemplo: if (dificuldade == 1):, desta forma a condição sempre será falsa (False).

Para corrigir este comportamento, basta converter a entrada do usuário para o tipo int, da seguinte forma:

dificuldade = input("Escolha a dificuladade: 1-Fácil 2-Médio 3-Difícil 4-Impossível: ")
dificuldade = int(dificuldade)
if (dificuldade == 1):
    # Restante do código

No código acima ocorre a transformação e a atribuição do resultado sendo do tipo int, novamente para a variável dificuldade. Desta forma, caso o usuário informe 1 a estrutura condicional if (dificuldade == 1): será verdadeira.

Peço que verifique o ponto proposto acima, após a mudança salve e execute o arquivo novamente. Caso o erro permaneça, peço que compartilhe o seu código completo em formato textual, basta enviá-lo na resposta desta postagem.

Espero ter lhe ajudado. Em caso de dúvidas estou à disposição.

Não hesite em voltar ao fórum para continuar aprendendo e interagindo com a comunidade.

Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Olá, Calebe. Eu não coloquei o seu código para funcionar, mas uma das primeiras coisas que eu vejo que poderiam estar causando esse erro, seria o fato de você ter feito o input que, por padrão, retorna uma string e na hora de validar nas condicionais, você utiliza uma comparação com um valor inteiro. Nessa situação você teria duas formas de resolver isso:


dificuldade = input("Escolha a dificuldade: 1 - Fácil 2 - Médio 3 - Difícil 4 - Impossível: ")

if dificuldade == "1":

Nessa primeira situação, conserva-se o tipo da variável dificuldade como string e depois compara-se a variável dificuldade com uma string numérica "1", "2", "3" e "4"

ou

dificuldade = int(input("Escolha a dificuldade: 1 - Fácil 2 - Médio 3 - Difícil 4 - Impossível: "))

if dificuldade == 1:

Nessa segunda situação, faz-se a conversão do input que, por padrão, é uma string em um inteiro usando o método int e depois, ao fazer a comparação na condicional com os números inteiros 1, 2, 3 e 4.

E, baseado no seu código, deveria cair na última condição que seria:

print("Opção inválida, escolha um número de 1 a 4")

O que, na verdade, é o que está acontecendo, pois ao tentar comparar uma string numérica que é atribuída a variável dificuldade com um número inteiro nas estruturas condicionais. logicamente, sempre vai ser diferente e o programa vai voltar para o início. Uma outra situação que eu imagino que não seja o esperado do jogo é quando o jogador escolhe o valor que vai ser atribuído a variável chute e quando o jogador acerta. Pois apresenta o mesmo problema no que diz respeito a comparar uma string com um número inteiro e os comandos nas condicionais não vão funcionar como deveria. As duas formas de resolver esse problema seriam essa:

jogar_novamente = input("Você acertou, parabéns!! Quer jogar novamente? 1 - Sim 2 - Não: ")
if jogar_novamente == "1":
    continue
elif jogar_novamente == "2":
    sair = input("Até a próxima! \n\nPressione ENTER para encerrar o jogo.")
    break

ou essa:

jogar_novamente = int(input("Você acertou, parabéns!! Quer jogar novamente? 1 - Sim 2 - Não: "))
if jogar_novamente == 1:
    continue
elif jogar_novamente == 2:
    sair = input("Até a próxima! \n\nPressione ENTER para encerrar o jogo.")
    break

Esse input atribuído a variável sair serve apenas para dar tempo da mensagem aparecer na tela, pois se fosse o print somente, ele apareceria na tela muito rápido e logo em seguida o programa fecharia. É apenas uma dica. Espero que tenha lhe ajudado.