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

Pontos não sao descontados

Queria saber como faço para descontar pontos a cada tentativa realizada pelo usuário,e que a mensagem da quantidade de pontos seja exibida corretamente

print('*************************')
    print('Bem vindo ao jogo de Adivinhação!')
    print('*************************')

    número_secreto = round(random.randrange(1,51))
    total_de_tentativas = 0
    pontos = 100


    print(número_secreto)

    print('Qual nível você deseja jogar?')
    print('Nível 1:fácil.Nível 2:médio.Nível 3:difícil')
    print(número_secreto)

    nível = int(input('Digite o nível desejado: '))

    if nível == 1:
        total_de_tentativas=20
    elif nível == 2:
        total_de_tentativas=10
    else:
        total_de_tentativas=3


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

        if (chute < 1 or chute > 50):
            print('Você deve digitar um número entre 1 e 50')
            continue


        acertou = chute == número_secreto
        maior = chute > número_secreto
        menor = chute < número_secreto

        if(acertou):
            print('Você acertou!E sua pontuação foi de {} pontos'.format(pontos))
            break
        else:
            if(maior):
                print('Você errou!Seu chute foi maior que o número secreto.')
                if(rodada == total_de_tentativas):
                    print('O número secreto era {}.Você fez {} pontos'.format(número_secreto,pontos))
            elif(menor):
                print('Você errou!Seu chute foi menor que o número secreto.')
                if (rodada == total_de_tentativas):
                    print('O número secreto era {}.Você fez {} pontos'.format(número_secreto, pontos))
                pontos_perdidos = pontos - 10
                pontos= pontos - pontos_perdidos

        rodada = rodada + 1

    print('Fim do jogo')
3 respostas

Olá boa tarde, Felipe Andrade Campos.

Vi no seu código que existem variáveis que possuem acentuações gráficas, seria bom não utilizar. "número_secreto" -> 'numero_secreto'.

Sobre o código, eu fiz de uma forma um pouco diferente que o seu.

Voce fez assim:

             pontos_perdidos = pontos - 10
             pontos= pontos - pontos_perdidos

Eu fiz assim:

            pontos_perdidos = abs(numero_secreto - chute)
            pontos = pontos - pontos_perdidos

Embora meu código todo:

import random

print("################################")
print("Bem vindo ao jogo de Adivinhar!")
print("################################")


numero_secreto = round(random.randrange(1, 101))
tentativa = 0
pontos = 1000

# Captura o tipo de nível a jogar
nivel = int(input("Qual nível de dificuldade? \n 1 - Fácil\n 2 - Médio\n 3 - Difícil\n Digite:"))

# Condições para o jogo sobre nível escolhido
if nivel == 1:
    tentativa = 20
elif nivel == 2:
    tentativa = 10
else:
    tentativa = 5


# Pegando informação e convertendo em inteiro.
# chute = int(input("Digite um número: "))

# Adicionando texto à variáveis
msg_maior = " e é maior que o número secreto"
msg_menor = "e é menor que o número secreto"

for rodada in range(0, tentativa):
    print(f'Rodada {rodada + 1} de {tentativa} tentativas')

    try:
        chute = int(input("Digite um número entre 1 e 100: "))
        # Adicionando lógicas às variáveis
        acertou = chute == numero_secreto
        maior = chute > numero_secreto
        menor = chute < numero_secreto

        if not chute:
            raise ValueError("Você informou número fora do solicitado!")

        if acertou:
            print(f"voce acertou e fez {pontos}, digitou", numero_secreto)
            break
        else:
            if maior:
                print(f"Voce errou, digitou {chute} {msg_maior}")

            elif menor:
                print(f"Voce errou, digitou {chute} {msg_menor}")

            pontos_perdidos = abs(numero_secreto - chute)
            pontos = pontos - pontos_perdidos

    except ValueError as e:
        print("valor inválido")

Boa noite,Tiago.

Não entendi esse print(f).E sobre seu código,ele funcionou corretamente descontando os pontos conforme foram passando as rodadas?

solução!

Bom dia Felipe.

Sobre o print(f'') - é uma forma também de fazer o format.

No seu código:

print('O número secreto era {}.Você fez {} pontos'.format(numero_secreto, pontos))

No meu código:

print(f'O número secreto era {numero_secreto}.Você fez {pontos} pontos')

A diferença aqui é como utilizar a o '.format()', no meu caso optei por colocar o f antes de tudo que desejo imprimir em tela, e dentro das chaves já informar o que deve ser imprimido tbm, no caso "numero_secreto" e "pontos".

E respondendo sua pergunta sobre pontuação, sim, rodei e testei por algumas vezes e entendi que está funcionando corretamente. Voce pode baixar e rodar aih e ver se te atende..

Mas, acredito que no seu código a pontuação não está ocorrendo de forma correta está definido isto:

         pontos_perdidos = pontos - 10
         pontos= pontos - pontos_perdidos

No que deveria ser:

        pontos_perdidos = abs(numero_secreto - chute)
        pontos = pontos - pontos_perdidos