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

Fiz um pouco diferente e me lasquei

Eu fiz um pouquinho diferente, em vez de números optei por letras, mas eu queria poder recusar e mostrar um aviso caso eu digite uma letra diferente (acho que faltou isso no dele também).

O "inserir código" não tá funcionando então vou colocar o código sem isso.

import random

numero_secreto = random.randrange(1, 101)
# print(numero_secreto)
total_tentativa = 0
nivel = input('Qual o nível que você deseja? (F)ácil (M)édio (D)ifícil? ')

#while nivel == 'F' or 'M' or 'D':

if nivel == 'F':
    total_tentativa = 10
    print('Você escolheu o nível FÁCIL e tem 10 tentativas, gosta duma moleza hein?')
    # break
elif nivel == 'M':
    total_tentativa = 5
    print('Você escolheu o nível MÉDIO e tem 5 tentativas, já ta quase um hominho')
    # break
elif nivel == 'D':
    total_tentativa = 3
    print('Você escolheu o nível DIFÍCIL e tem apenas 3 tentativas, modo caba da peste')
    # break
elif nivel != 'F' or 'M' or 'D':
    print('Você precisa digitar uma das opções F, M, D')
# else:
#     continue

for rodada in range (1, total_tentativa + 1):
    print(f"Tentativa {rodada} de {total_tentativa}")
    tentativa = eval(input('Advinhe o numero secreto entre 1 e 100: '))
    if tentativa < 1 or tentativa > 100:
        print('Você deve digitar um numero entre 1 e 100')
        continue

    maior = tentativa > numero_secreto
    menor = tentativa < numero_secreto
    if maior:
        print('Voce chutou pra cima')
    elif menor:
        print('Voce chutou pra baixo')
    else:
        print('Voce acertou')
        break

O programa funciona normalmente mas pra funcionar isso que eu quero sinto que eu preciso de um loop, por isso tava testando o while, mas eu nunca sei o que colocar no while. Podem me ajudar?

Abraço!

2 respostas
solução!

Espero ter ajudado, se ficou alguma duvida é só dizer, bons estudos.

import random

numero_secreto = random.randrange(1, 101)
# print(numero_secreto)
total_tentativa = 0

while True: # Loop infinito, gira ate colocar break

    nivel = input('Qual o nível que você deseja? (F)ácil (M)édio (D)ifícil? ').strip().upper()[0]
# strip() ira retirar todo e qualquer espaço que por acaso o usuário digitar
# upper() ira transformar a letra para maiúscula independente de que o usuário digitar
# [0] primeiro índice da string (variável nível), ex: se o usuário digitar fácil o comando [0] ira fatiar a primeira letra "f"
# por fim se o usuário quer sacanear (rs) ele digitara (     fAcilllllllll     ), com os comando acima nível = F exatamente o que você precisa abaixo

    if nivel == 'F':
        total_tentativa = 10
        print('Você escolheu o nível FÁCIL e tem 10 tentativas, gosta duma moleza hein?')
        break
    elif nivel == 'M':
        total_tentativa = 5
        print('Você escolheu o nível MÉDIO e tem 5 tentativas, já ta quase um hominho')
        break
    elif nivel == 'D':
        total_tentativa = 3
        print('Você escolheu o nível DIFÍCIL e tem apenas 3 tentativas, modo cabra da peste')
        break
    elif nivel not in 'FMD': # assim (nivel != 'F' or 'M' or 'D') funciona, mas tambem poderia colocar (nivel not in 'FMD' --> magia de trabalhar com texto) 
        print('Você precisa digitar uma das opções F, M, D')


for rodada in range (1, total_tentativa + 1):
    print(f"Tentativa {rodada} de {total_tentativa}")
    tentativa = eval(input('Advinhe o numero secreto entre 1 e 100: '))
    if tentativa < 1 or tentativa > 100:
        print('Você deve digitar um numero entre 1 e 100')
        continue

    maior = tentativa > numero_secreto
    menor = tentativa < numero_secreto
    if maior:
        print('Voce chutou pra cima')
    elif menor:
        print('Voce chutou pra baixo')
    else:
        print('Voce acertou')
        break

Obrigado Livio, abraço!