2
respostas

Estou usando o randint()

Eu achei mais pratico usar o randint. Mas eu não consigo fazer o código acrescentar uma chance quando o usuário colocar um número negativo. Queria saber se o objetivo do jogo era tirar uma jogada do jogador se colocar um número negativo.

import random
print("************************************")
print("Bem vindo ao jogo de Advinhação!!!!")
print("************************************")

numero_secreto = random.randint(1,101)
total= 3
rodada = 1
for rodada in range(1, total+1):
    print("Você esta na tentativa {} de 3".format (total))

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

    if(chute < 1 or chute > 100 ):
        print("Digite números de 1 a 100")
        continue
    acertou = numero_secreto == chute
    maior = chute > numero_secreto
    menor = chute < numero_secreto

    print("Você digitou ",chute)
    if (acertou):
         print("Você acertou!")
         break
    else:
        if(maior):
            print("Você errou, seu número foi maior que o número secreto!")
        elif(menor):
            print("Você errou, seu número foi menor que o número secreto!")
        if (total == 2):
            print("última chance!!!")


print("Fim de jogo")
print("Número secreto era {}".format(numero_secreto))
2 respostas

no primeiro if do teu código tá testando se o chute do usuário é menor que um, e se sim ele ignora a jogada e pula para a próxima

se não quer para isso acontecer:

  • então informe ao usuário que não deve inserir números negativos
  • ou então melhore a tratativa de erro que acontece no primeiro if, com por exemplo um while (que traduzindo seria enquanto)

Colocando o teste, enquanto chute menor que 1 e maior que 100, faça uma nova leitura do chute

isso vai fazer o usuário ficar travado no loop while até ele dar um numero aceitável

while (chute < 1 or chute > 100  ):
    print("Digite números de 1 a 100")
    chute = int(input("Digite o seu número:  "))

ps.: dentro do for, você tá usando errado a variável total,

em: if (total == 2): e print("Você esta na tentativa {} de 3".format (total))

  • você deveria tá usando a variável rodada no lugar de total.

  • total vai ser sempre igual a 3.

  • o que salva o numero do jogo atual é a variável rodada, pois ela tá sendo variada dentro do for em: for rodada in range(1, total+1):

  • E ela não precisaria ser iniciada na linha ates do for.

dito tudo isso, teu código revisado e com a alteração que sugeri fica assim:

import random
print("************************************")
print("Bem vindo ao jogo de Adivinhação!!!!") 
print("************************************")

numero_secreto = random.randint(1,101)
total= 3 # numero máximo de rodadas

for rodada in range(1, total+1):
    print("Você esta na tentativa {} de 3".format (rodada))

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

    while (chute < 1 or chute > 100  ):
        print("Erro, Número não aceito")
        chute = int(input("Digite um chute de 1 a 100: "))

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

    print("Você digitou ",chute)
    if (acertou):
         print("Você acertou!")
         break
    else:
        if(maior):
            print("Você errou, seu número foi maior que o número secreto!")
        elif(menor):
            print("Você errou, seu número foi menor que o número secreto!")
        if (rodada == 2):
            print("última chance!!!")



print("Fim de jogo")
print("Número secreto era {}".format(numero_secreto))

Uma dica para você.

existem outras formas de printar o valor de uma variável,

eu particularmente odeio usar o .format sem necessidade.

no teu caso, poderia colocar o nome da variável dentro dos {}, e colocar a letra f antes das aspas, ou seja,

  • Transformar isso: print("Número secreto era {}".format(numero_secreto))

  • Em isso: print(f"Número secreto era {numero_secreto}")