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

Substituto do do-while no Python?

Eu venho de várias linguagens, e uma coisa que eu estou muito acostumado é de utilizar o bom e velho do-while para executar um código e,apenas depois, verifica uma condição, a fim de determinar se o trecho da quele código executado será re-executado.

Bem, digamos que eu queira que o usuário digite apenas números de 0 a 100, no do-while seria:

em C ou em outra linguagem que a utilize:

do {
    numero_escolhido = int(input("Informe um número de 0 a 100:"))
        if numero_escolhido < 0 or numero_escolhido > 100:
            print ("| ERRO |: Número inserido inválido, insira um número de 0 a 100")
}
while (numero_escolhido < 0  or  numero_escolhido > 100);

Como posso me aproximar do do-while seguindo uma boa pratica de programação? .. Eu pensei em um looping infinito, que apenas sai caso esteja tudo certo, utilizando um break... mas entra a duvida, cai mal ?

while (True)
        numero_escolhido = int(input("Informe um número a chutar:"))
        if numero_escolhido < 0 or numero_escolhido > 100:
            print ("Você deve informar um número de 0 a 100.")
        else:
            break

ou é melhor desta forma?

numero_escolhido = int(input("Informe um número a chutar:"))
while (numero_escolhido < 0 or numero_escolhido > 100):
        print("Você deve informar um número de 0 a 100.")
        numero_escolhido = int(input("Informe um número a chutar:"))

Qual forma vocês utilizariam para corporação nesta situação ?

2 respostas

Olá, qualquer uma de suas opções serve para emular um do-while em python, eu particularmente acredito que a primeira é mais legível(só tome cuidado que vc esqueceu de colocar dois pontos no while True).

solução!

Boa noite, Victor! Como vai?

Na wiki do Python.org vc encontrará a informação que o exemplo com o laço infinito e um break dentro dele é o tipo de código mais encontrado no mundo Python! Segue o link e a citação:

In fact, what you will see a lot of in Python is the following:

while True:
    n = raw_input("Please enter 'hello':")
    if n.strip() == 'hello':
        break

Pegou a ideia? Qualquer coisa é só falar!

Grande abraço e bons estudos, meu aluno!