3
respostas

While vs for

Minha dúvida é bem simples, acredito que deve ser um detalhe bem besta, mas não estou conseguindo reparar...

Esse programa eu estou usando while e não for. O motivo:

Quando eu coloco um numero menor que 1 ou maior que 100 usando o while, ele não consome uma tentativa. Exemplo:

Tentativa 1 de 5

Digite um número entre 1 e 100: 101

Você deve digitar um número entre 1 e 100!

Tentativa 1 de 5

Digite um número entre 1 e 100


Quando eu uso o for:

Tentativa 1 de 5

Digite um número entre 1 e 100: 101

Você deve digitar um número entre 1 e 100

Tentativa 2 de 5

Digite um número entre 1 e 100:


Por algum motivo, ele consome uma tentativa...

3 respostas

Olá! tudo bem? ;-)

Quando vc usa o "for", ele "automaticamente" já vai percorrendo cada um dos itens de uma lista, ou no seu caso, deve ser um range de 0 a 5, correto?

Exemplo:

for i in range(5):
    print(i)

Saída:
0
1
2
3
4

No "while", vc precisa somar 1 na variável, para que ele entenda o que está acontecendo, como no exemplo a seguir:

#vc deve iniciar a variável

i=0
while i < 5:
    print (i)
    #Desse jeito, cada vez  que passa por essa linha, ele soma 1 e armazena na variável "i".
    #é a mesma coisa que fazer assim:  i = i + 1
    i+=1    

    #quando o loop retorna para o teste do while, o valor do "i" vai ser igual ao valor dele mesmo mais 1 e,
    #enquanto for menor que 5, ele faz o loop novamente.
    #quando for igual a 5, ele sai do loop.

Saída:
0
1
2
3
4

Espero que tenha conseguido ajudar. ;-)

Qualquer coisa pode chamar!!

Valeuuuu

Fica difícil dizer sem analisar seu código, mas eu também quis fazer de forma que o erro não consumisse uma tentativa. Usei o "while" (para o loop de entrada inválida), mas dentro de de um "for" (para a base da função).

Ficou assim:

for rodada in range(1, total_de_tentativas + 1):
    print(f"Tentativa {rodada} de {total_de_tentativas}")
    chute_str = input(f"Digite um número de 1 a {numero_max}: ")
    print("Você digitou: ", chute_str)
    chute = int(chute_str)
    while(chute < 1 or chute > numero_max):
        print("Você digitou um número inválido. Tente novamente.")
        chute_str = input(f"Digite um número de 1 a {numero_max}: ")
        print("Você digitou: ", chute_str)
        chute = int(chute_str)

Assim, até que o usuário digite um número válido, ele fica preso no loop do "while". Quando ele digitar uma válida, sai do loop e segue normalmente a função "for".

Veja dois exemplos um para for e outro para while, talvez ajude no entendimento:

for i in ['Tamanduá', 'Tatu', 'Boto Cor-De-Rosa'] :
    print(i)

# Saída:
# Tamanduá
# Tatu
# Boto Cor-De-Rosa
i = 0

while i < 5 :
     print(i)
     i = i + 1

# Saída
# 0
# 1 
# 2 
# 3 
# 4