1
resposta

Na aula 7 exercício 05 Mão na massa: Níveis e Pontuação

Revendo a atividade observei que faltou apenas a última parte: “… ao final do jogo, qual era o número secreto que não foi adivinhado e a pontuação final do usuário, mesmo que ele não tenha vencido a partida” Optei em alterar a sugestão do if. Coloquei um único if logo após o for, “if (maior or menor):”, para imprimir o nº secreto e a pontuação. Segue o código do programa “adivinha10”:

import random

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

print("Temos novidades!") print("Nesta nova versão você pode escolher o nível de dificuldade do jogo.") print("Você pode escolher entre os níveis Fácil, Médio e Difícil") print("Além disso, no final você terá uma pontuação. Vamos lá!?!")

nivel = 5 while (nivel < 1 or nivel > 3): print("Qual o nível de dificuldade você escolhe?") print("(1) Fácil (2) Médio (3) Difícil") nivel = int(input("Defina o nível: "))

if (nivel == 1): total_de_tentativas = 20 elif (nivel == 2): total_de_tentativas = 10 else: total_de_tentativas = 5

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

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("Você digitou: ", chute_str) chute = int(chute_str)

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

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

if (acertou):
    print("Você acertou!")
    print("Parabéns você fez {} pontos".format(pontos))
    break
else:
    if (maior):
        print("Você errou! O seu chute foi maior que o número secreto.")
    elif (menor):
        print("Você errou! O seu chute foi menor que o número secreto.")
    pontos = (pontos - abs(numero_secreto - chute))

if (maior or menor): print("O número secreto era {}. Você fez {}.".format(numero_secreto, pontos)) print("Fim do jogo!")

1 resposta

Olá, Raimundo! Parece que você está quase lá!

A sua ideia de colocar "if (maior or menor):" logo após o for é interessante, mas pode não funcionar como esperado. Isso porque as variáveis "maior" e "menor" são atualizadas a cada rodada do loop, e a verificação acontece logo após a última rodada. Portanto, se a última tentativa do jogador for igual ao número secreto, "maior" e "menor" serão ambos falsos, e a mensagem com o número secreto e a pontuação não será impressa.

Uma alternativa seria verificar se a rodada atual é igual ao total de tentativas, o que indica que o jogo acabou. Se for o caso, você pode imprimir a mensagem com o número secreto e a pontuação. Aqui está um exemplo de como você pode fazer isso:

for rodada in range(1, total_de_tentativas + 1):
    # O código do jogo vai aqui
    if (rodada == total_de_tentativas):
        print("O número secreto era {}. Você fez {} pontos.".format(numero_secreto, pontos))

Dessa forma, a mensagem será impressa ao final do jogo, independentemente de o jogador ter acertado o número secreto na última tentativa ou não.

Espero ter ajudado e bons estudos!