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

número randômico parou de funcionar.

O código depois que coloquei os níveis o número randômico parou de funcionar e agora fica gerando o mesmo numero.

import random

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

senha = random.randrange(1, 10)
tentativas = 0
rodada = 1

print("")
print("Qual o nível de dificuldade?")
print("")
print("(1) Fácil")
print("(2) Médio")
print("(3) Díficil")
print("")

nivel = int(input("Defina o nível: "))

if nivel == 1:

    print("")

    tentativas = 20

    print("")

elif nivel == 2:

    print("")

    tentativas = 10

    print("")

elif nivel == 3:

    print("")

    tentativas = 5

    print("")
else:

    print("")

    print("Digite número entre 1 e 3 para escolher a dificuldade")

    print("")

for rodada in range(1, tentativas + 1):

    print("------------------------------ COMEÇO DA RODADA --------------------------------")

    print("")

    print(f"Tentativa {rodada} de {tentativas}")

    print("")

    aposta = input("Digite o seu número: ")

    print("")

    print(f"Você digitou: {aposta} ")

    print("")

    print(f"Número Sorteado foi {senha} :")

    print("")

    aposta = int(aposta)

    if aposta < 1 or aposta > 10:

        print("")

        print("Digite números entre 1 e 10!")

        print("")

        print("------------------------------ FIM DA RODADA --------------------------------")

        continue

    acertou = aposta == senha

    maior = aposta > senha

    menor = aposta < senha

    if acertou:

        print("")

        print("Você acertou", end="!\n")

        print("")

        print("------------------------------ FIM DA RODADA --------------------------------")

        break

    else:

        if maior:

            print("")

            print("Você errou. Sua aposta foi maior do que o número especificado", end="!\n")

            print("")

            print("------------------------------ FIM DA RODADA --------------------------------")

        elif menor:

            print("")

            print("Você errou. Sua aposta foi menor do que o número especificado", end="!\n")

            print("")

            print("------------------------------ FIM DA RODADA --------------------------------")

    print(" ")

print("Fim do Jogo", end="!\n")
3 respostas

Como está rodando. Da para ver que o número 7 irá se repetir infinitamente.

*********************************

Bem vindo ao jogo de adivinhação!

*********************************

Qual o nível de dificuldade?

(1) Fácil
(2) Médio
(3) Díficil

Defina o nível: 1


------------------------------ COMEÇO DA RODADA --------------------------------

Tentativa 1 de 20

Digite o seu número: 2

Você digitou: 2 

Número Sorteado foi 7 :


Você errou. Sua aposta foi menor do que o número especificado!

------------------------------ FIM DA RODADA --------------------------------

------------------------------ COMEÇO DA RODADA --------------------------------

Tentativa 2 de 20

Digite o seu número: 1

Você digitou: 1 

Número Sorteado foi 7 :


Você errou. Sua aposta foi menor do que o número especificado!

------------------------------ FIM DA RODADA --------------------------------
solução!

Oiii Shayron, como você está? Espero que esteja bem :)

Para sortear um novo número a cada nova tentativa é necessário fazer um novo sorteio do número randômico quando o usuário errar o número sorteado, pois caso contrário ele será o mesmo em todas as tentativas.

No trecho do else que é responsável por dizer se o chute do usuário foi maior ou menor que o número especificado precisamos sortear uma nova senha. Em código fica da seguinte forma:

 else:

        if maior:

            print("")

            print("Você errou. Sua aposta foi maior do que o número especificado", end="!\n")

            print("")

            print("------------------------------ FIM DA RODADA --------------------------------")

        elif menor:

            print("")

            print("Você errou. Sua aposta foi menor do que o número especificado", end="!\n")

            print("")

            print("------------------------------ FIM DA RODADA --------------------------------")

        senha = random.randrange(1, 10)

Não nos preocupamos com a condição de acerto, pois, quando o usuário acerta o programa é finalizado.

Após essa adição de um novo sorteio, a cada nova tentativa teremos um número novo, abaixo a saída do código:

------------------------------ COMEÇO DA RODADA --------------------------------

Tentativa 1 de 5

Digite o seu número: 4

Você digitou: 4 

Número Sorteado foi 2 :


Você errou. Sua aposta foi maior do que o número especificado!

------------------------------ FIM DA RODADA --------------------------------   

------------------------------ COMEÇO DA RODADA --------------------------------

Tentativa 2 de 5

Digite o seu número: 3

Você digitou: 3 

Número Sorteado foi 1 :


Você errou. Sua aposta foi maior do que o número especificado!

------------------------------ FIM DA RODADA --------------------------------   

Uma observação: como são números aleatórios em uma faixa pequena de opções (1 a 10), pode ocorrer de vez ou outra sortear o mesmo número de uma tentativa para a outra.

Qualquer dúvida estou por aqui, tá bom?

Abraços e bons estudos!

Era isso mesmo! Tinha que gerar uma nova senha quando o usuário errava. Muito Obrigado!