2
respostas

[Dúvida] Laço For interação Contiue

Quando digito um número diferente de 0 o programa deveria entrar no primeiro for e retornar que o usuário deve digitar um numero entre 1 e 3,após debugar identifiquei que o programa não entra no primeiro for, como posso resolver isso?

import random

numero_secreto = random.randrange(1, 101) max_tentativas = 0

print(numero_secreto)

print('Selecione o nivel de dificuldade do jogo: ') print('(1) Fácil') print('(2) Médio') print('(3) Dificil') nivel = int(input('Defina o nível: '))

nivel_facil = nivel == 1 nivel_medio = nivel == 2 nivel_dificil = nivel == 3

for n in range(nivel): if (nivel < 1 or nivel > 3): continue if (nivel_facil): max_tentativas = 8 elif (nivel_medio): max_tentativas = 5 elif (nivel_dificil): max_tentativas = 3

for rodada in range(1, max_tentativas + 1): print('Tentativas {} de {}'.format(rodada, max_tentativas))

chute_do_usuario = input("Digite um número entre 1 e 100: ")
print('Você digitou: ', chute_do_usuario)


chute_convertido_utilizando_cast = int(chute_do_usuario)

if (chute_convertido_utilizando_cast < 1 or chute_convertido_utilizando_cast >= 100):
    continue

acertou_numero_secreto = chute_convertido_utilizando_cast == numero_secreto
chute_maior_que_numero_secreto = chute_convertido_utilizando_cast > numero_secreto
chute_menor_que_numero_secreto = chute_convertido_utilizando_cast < numero_secreto

if acertou_numero_secreto:
    print('Parabéns!!! Você acertou o número secreto é: {} '.format(numero_secreto))
    break
else:
    if chute_maior_que_numero_secreto:
        print('Você errou!!! Dica: O número digitado é maior que o número secreto')
    elif chute_menor_que_numero_secreto:
        print('Você errou!!! Dica: O número digitado é menor que o número secreto')

print('## Fim do jogo ##')

2 respostas

Eu não entendi por que você fez esse primeiro for, porém, executando o código, vejo que ele está entrando sim no for e esta foi a saída quando informei o número 5, por exemplo:

Selecione o nivel de dificuldade do jogo: 
(1) Fácil
(2) Médio
(3) Dificil
Defina o nível: 5

==>  0
==>  1
==>  2
==>  3
==>  4

Creio que você não precisa passar por cada número, até chegar no valor informado.

Eu trocaria esse primeiro for por uma validação simples do numero informado, desta forma:

if (nivel_facil):
    max_tentativas = 8
elif (nivel_medio):
    max_tentativas = 5
elif (nivel_dificil):
    max_tentativas = 3
else:
    print("Você deve selecionar o nível 1, 2 ou 3. Tente novamente.")

Bom dia! Rafael tudo bem? Agradeço a sugestão, inicialmente fiz assim, porém desta forma o jogo é encerrado, e o que necessito é fazer o loop e aproveitar para utilizar o conceito de continue. No segundo for isso ocorre, ou seja, quando o usuário digita um número diferente fora do critério ( de 1 a 100) então é retornado a msg de número inválido e o programa solicita para ele digitar uma opção válida, estou tentando replicar está mesma lógica. Já consegui fazer isso usando o while, porém estava tentando fazer com o for também para treinar.

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