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

Uma solução para quando o número for acertado na primeira tentativa

Boa noite, pessoal! O código tá rodando legal, porém eu adotei uma forma de pontuar um pouco diferente da do professor. Mais o ponto principal é que não consigo achar um jeito de fazer com que o vencedor ganhe os 1000 pontos quando acertar de primeira e que também não apareça a mensagem de erro no final.

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

    import random
    numero_secreto = int(random.randrange(1, 101))
    total_de_tentativas = 0
    pontos = 1000

    print("Qual nível de dificuldade deseja? ", numero_secreto,
          "\n(1) Fácil"
          "\n(2) Médio"
          "\n(3) Difícil")
    dificuldade = int(input("Digite sua opção: "))

    if dificuldade == 1:
        total_de_tentativas = 15
    elif dificuldade == 2:
        total_de_tentativas = 10
    elif dificuldade == 3:
        total_de_tentativas = 5
    else:
        print("Opção inválida!")
    for rodadas in range(1, total_de_tentativas + 1):
        print("Tentativa {} de {}".format(rodadas, total_de_tentativas))
        chute = int(input("Digite um número entre 1 e 100: "))

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

        if (chute < 1) or (chute > 100):
            print("Você deve digitar um número entre 1 e 100.")
            continue
        if acertou:
            print("Você acertou!")
            break
        else:
            if maior:
                print("Você errou! O número digitado", "(", chute, ")", "é maior que o número secreto.")
            if menor:
                print("Você errou! O número digitado", "(", chute, ")", "é menor que o número secreto.")
                pontos_perdidos = pontos - chute
                pontos = pontos_perdidos
    print("Fim de Jogo")
    print("Sua pontuação foi:", pontos)
    print("O número secreto era:", numero_secreto)
3 respostas

Seu código está incorreto. Tem algumas incoerências.

solução!

Eu modifiquei um pouco o seu código e adicionei certos comentários tentando responder suas perguntas, mas em suma, não encontrei um problema em relação ao vencedor ganhar 1000 pontos quando acerta de primeira, mas sim quando o jogador faz um chute maior que o número_secreto, nessa ocasião não foi descontado os pontos. Espero ter ajudado na medida do possível

import random

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


numero_secreto = int(random.randrange(1, 101))
total_de_tentativas = 0
pontos = 1000

print("Qual nível de dificuldade deseja? ", numero_secreto,"\n(1) Fácil\n(2) Médio\n(3)Difícil")#acredito que vc colocou o número secreto aqui apenas para testar, nao esqueça de tirar dps que finalizar o código

dificuldade = int(input("Digite sua opção: "))

if dificuldade == 1:
    total_de_tentativas = 15
elif dificuldade == 2:
    total_de_tentativas = 10
elif dificuldade == 3:
    total_de_tentativas = 5
else:
    #caso ele chegue aqui, ainda ganhará uma pontuaçao, algo de nao deveria acontecer
    print("Opção inválida!")

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

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

    if (chute < 1) or (chute > 100):
        print("Você deve digitar um número entre 1 e 100.")
        continue
    else:
        if acertou:
            print("Você acertou!")
            break
        elif maior:
            print("Você errou! O número digitado {} é maior que o número secreto.".format(chute))#tente usar o .format, deixa o código mais organizado
            pontos = pontos - chute #você esqueceu de subtrair os pontos nesse if, só tinha feito no caso em que o chute fosse menor
        else:#por ser a ultima opçao, nao acho necessário colocar mais uma condiçao
            print("Você errou! O número digitado {} é menor que o número secreto.".format(chute))
            pontos = pontos - chute

print("Fim de Jogo")
print("Sua pontuação foi:", pontos)
print("O número secreto era:", numero_secreto)

Não entendi... Se você acertar de primeira, irá ganhar os 1000 pontos, até pq vc não errou nada para perder nada.

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