Ir ao conteúdo

Python Dois loops while sem que um cancele o outro


Ir à solução Resolvido por Midori,

Posts recomendados

Postado

Queria que aparesse um loop de erro se fosse digitado valores menos que 0 ou maiores que 10000, porém acontece o seguinte:

 

Screenshot_4.png.7ee47959d3b28cc77aedd3f79e7ab7f6.png 

Nessa situação o código sai correto, quando digito os valores negativos o loop contnua, porém se eu retornar com os valores acima de 10000 o código quebra

 

Screenshot_5.png.75dab5640e7f240bc674886ddd2d90f7.png

Se eu inicio com os valores negativos e passo para os valore acima de 10000 ele já quebra direto

 

tenho quase certeza que se deve a ordem dos loops no código, mas eu queria saber um modo que o loop ficasse infinitamente equanto os valores incorretos fossem entrados tanto os menores de 0 quanto maiores que 10000. Se alguém puder ajudar ficarei grato!

 

 

print()
print("#" * 22)
print("Separação de números")
print("#" * 22)
print()

a = int(input("Digite um número de 0 a 9999: "))
print("#" * 22)
print()

b = str(a)

while a >= 10000:
    print("Erro, siga a instrução!")
    print()
    a = int(input("Digite um número de 0 a 9999: "))
    b = str(a)
    print("#" * 22)
    print()

while a < 0:
    print("Erro, siga a instrução!")
    print()
    a = int(input("Digite um número de 0 a 9999: "))
    b = str(a)
    print("#" * 22)
    print()

if a <= 9:
    print(f"Números: \n\n{b[0]}")
    print()
     
elif a <= 99:
    print(f"Números: \n\n{b[0]} \n{b[1]}")
    print()

elif a <= 999:
    print(f"Números: \n\n{b[0]} \n{b[1]} \n{b[2]}")
    print()

elif a <= 9999:
    print(f"Números: \n\n{b[0]} \n{b[1]} \n{b[2]} \n{b[3]}")
    print()

 

  • Solução
Postado

@Pedro Tigre Você pode fazer com um loop da mesma forma que comentei no seu outro tópico em que você estava usando uma lista.

 

while True:
    a = int(input("Digite um número de 0 a 9999: "))
    
    if not 0 <= a <= 9999:
        print("Erro, siga a instrução!")
        continue
    
    b = str(a)

    if a <= 9:
        print(f"Números: \n\n{b[0]}")
    elif a <= 99:
        print(f"Números: \n\n{b[0]} \n{b[1]}")
    elif a <= 999:
        print(f"Números: \n\n{b[0]} \n{b[1]} \n{b[2]}")
    elif a <= 9999:
        print(f"Números: \n\n{b[0]} \n{b[1]} \n{b[2]} \n{b[3]}")

    break

 

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...