1
resposta

Gostaria de não gastar uma tentativa quando o número for <0 e >100

Testei o seguinte código, com break, mas ainda há falhas pois ele repete a tentativa apenas uma vez e se eu acertar nessa tentativa ele não assume que eu acertei. Gostaria que avaliassem o que está errado e o que pode melhorar.

print("*************************************")
print("ola bem vindo no jogo de adivinhacao!")
print("*************************************")

numero_secreto = round (random.random() *100) #0.0 1.0
total_de_tentativas = 3
print(numero_secreto)

for rodada in range (1 , total_de_tentativas + 1 ):
    print ("tentativa {} de {}".format (rodada , total_de_tentativas))
    chute_str = input("Digite um número entre 1 e 100: ")
    print("voce digitou" , chute_str)
    chute=int(chute_str)

while(chute < 1 or chute > 100):
    print("Você deve digitar um número entre 1 e 100!")
    print ("tentativa {} de {}".format (rodada , total_de_tentativas))
    input("Digite um número entre 1 e 100: ")
    break

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

if(acertou):
    print("Você acertou!")
    break
else:
    if(maior):
        print("Você errou. O seu chute foi maior que o numero secreto")
    elif(menor):
        print("Você errou. O seu chute foi menor que o numero secreto")

print("Fim do Jogo!")
1 resposta

Oi, Edu. Pra você conseguir fazer isso (com essas restrições propostas), precisamos utilizar uma estrutura chamada LOOPS ANINHADOS, cada um lidando com restrição/limites diferentes e entrelaçados entre si. Eu reestruturei o teu código e agora você já pode jogar e não perder as tentativas caso os números chutados estejam fora do limite proposto (negativos e positivos maiores que 100). Vamos lá:

import random
print("*************************************")
print("ola bem vindo no jogo de adivinhacao!")
print("*************************************")

numero_secreto = int(round(random.random() *100))
total_tentativas = 3
print(numero_secreto)

for rodada in range(1, total_tentativas + 1):
    chute = 0
    while (chute not in range(1, 101)):
        print("Tentativa {} de {}".format(rodada, total_tentativas))
        print("Digite um número entre 1 e 100!!!!!")
        chute = int(input("Qual o seu numero: "))

    print("Seu número foi o seguinte --->", chute)

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

    if chute < 1 or chute > 100:
        print("Digite um núemero etre 1 e 100!!!!!!")
        continue

    if (acertou):
        print("Você acertou!!!!!!!!!")
        break
    else:
        if (maior):
            print("Você errou. O seu chute foi maior que o numero secreto")
        if (menor):
            print("Você errou. O seu chute foi menor que o numero secreto")

    rodada = rodada + 1

print("Fim de jogo!")