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

O código não roda corretamente

import forca
import adivinhacao

print("*********************************")
print("*******Escolha o seu jogo!*******")
print("*********************************")

print("(1) Forca (2) Adivinhação")

jogo = int(input("Qual jogo? "))

if (jogo == 1):
    print("Jogando forca")
    forca.jogar()
elif (jogo == 2):
    print("Jogando adivinhação")
    adivinhacao.jogar()

A saída do código é a seguinte:

Bem-vindo ao jogo da forca!
***************************
Fim do jogo
Bem vindo ao jogo de adivinhação!
*********************************
Qual o nível de dificuldade que você quer?
(1) Fácil; (2) Médio; (3) Difícil
Qual o nível de dificuldade?

Os outros arquivos não deveriam ser executados na saída do programa sem que eu digitasse 1 ou 2. Por que isso está acontecendo e qual é a solução para meu problema?

Grato.

6 respostas

Olá João, você chegou a colocar o código dos jogos da forca e da adivinhação dentro de funções, como foi feito no segundo vídeo da aula 8? Caso sim, tem como você postar aqui o código do forca.py e do adivinhacao.py?

Claro. Código do adivinhacao.py:

import random

def jogar():

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


numero_secreto = round(random.randrange(1, 51))

total_de_tentativas = 0

print("Qual o nível de dificuldade que você quer?")

print("(1) Fácil; (2) Médio; (3) Difícil")

nivel_de_dificuldade = int(input("Qual o nível de dificuldade?"))

if(nivel_de_dificuldade == 1):
    total_de_tentativas = 20

if(nivel_de_dificuldade == 2):
    total_de_tentativas = 10

if(nivel_de_dificuldade == 3):
    total_de_tentativas = 5

pontos = 1000

rodada = 1

for rodada in range(1, total_de_tentativas + 1):
    print("Tentativa {} de {}".format(rodada, total_de_tentativas))
    chute_str = input("Digite um número de 1 a 50: ")
    print("Você digitou: ", chute_str)
    chute = int(chute_str)

    if (chute > 50):
        print("O número deve ser menor ou igual a 50!")
        continue

    acertou = numero_secreto == chute
    maior = chute > numero_secreto
    menor = chute < numero_secreto

    if (acertou):
        print("Você acertou!")
        print("Parabéns! Você fez ", pontos, " pontos!")
        break
    else:
        if (maior):
            print("Você errou! O seu chute foi maior que o número secreto.")
        elif (menor):
            print("Você errou! O seu chute foi menor que o número secreto.")
        pontos_perdidos = abs(numero_secreto - chute)
        pontos = pontos - pontos_perdidos


print("O", "número", "secreto", "era", numero_secreto, sep=" ")
print("Fim do jogo")

Código do forca.py:

def jogar():

 print("***************************")
print("Bem-vindo ao jogo da forca!")
print("***************************")

print("Fim do jogo")
solução!

Então João, apesar das funções estarem declaradas, como o seu código não está indentado, o Python está interpretando que ele não faz parte da função.

Tente fazer:

  • adivinhacao.py:
import random

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


    numero_secreto = round(random.randrange(1, 51))

    total_de_tentativas = 0

    print("Qual o nível de dificuldade que você quer?")

    print("(1) Fácil; (2) Médio; (3) Difícil")

    nivel_de_dificuldade = int(input("Qual o nível de dificuldade?"))

    if(nivel_de_dificuldade == 1):
        total_de_tentativas = 20

    if(nivel_de_dificuldade == 2):
        total_de_tentativas = 10

    if(nivel_de_dificuldade == 3):
        total_de_tentativas = 5

    pontos = 1000

    rodada = 1

    for rodada in range(1, total_de_tentativas + 1):
        print("Tentativa {} de {}".format(rodada, total_de_tentativas))
        chute_str = input("Digite um número de 1 a 50: ")
        print("Você digitou: ", chute_str)
        chute = int(chute_str)

        if (chute > 50):
            print("O número deve ser menor ou igual a 50!")
            continue

        acertou = numero_secreto == chute
        maior = chute > numero_secreto
        menor = chute < numero_secreto

        if (acertou):
            print("Você acertou!")
            print("Parabéns! Você fez ", pontos, " pontos!")
            break
        else:
            if (maior):
                print("Você errou! O seu chute foi maior que o número secreto.")
            elif (menor):
                print("Você errou! O seu chute foi menor que o número secreto.")
            pontos_perdidos = abs(numero_secreto - chute)
            pontos = pontos - pontos_perdidos


    print("O", "número", "secreto", "era", numero_secreto, sep=" ")
    print("Fim do jogo")
  • forca.py:
def jogar():

    print("***************************")
    print("Bem-vindo ao jogo da forca!")
    print("***************************")

    print("Fim do jogo")

Deu certo. Muito obrigado.

De nada João, bons estudos pra você!

Olá novamente, João. Como a dúvida foi resolvida, vou fechar este tópico.

Para qualquer outro problema ou dúvida, não hesite em recorrer ao nosso fórum!

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