1
resposta

Utilização da função WHILE()

Olá a todos, estou estudando Python mas estou com uma dúvida que talvez seja mais voltada para lógica da linguagem. Vamos lá.

Tenho o seguinte código:

total = 0
palavra = "python rocks!"
acabou = False

while (not acabou):
    acabou = ( total == len(palavra) )
    total = total + 1
print(total - 1)

Minha dúvida é: A parte "while (not acabou)" também não quer dizer que "acabou = True"? Isso não quer dizer que a função while() vai executar apenas quando "acabou" for verdadeira? Mas nós definimos ela como falsa logo acima....

Outra dúvida: Logo em baixo da função while() temos "acabou = ( total == len(palavra) )". Aqui ele está verificando se os valores de "len(palavra)" e "total" são iguais, certo? Como o valor de uma foi definido como "0" e o valor da outra é "13", o resultado é falso. Ou seja, "acabou = False". Neste caso também temos que "acabou = False" igual definimos na variável lá em cima. Novamente é conflitante com o o comando while() se pedimos para executar apenas quando "acabou = True"

1 resposta

Olá Gabriel, Bom dia!

*Resolução do Problema: *

De acordo com o seu relato, não era para o while ser executado mesmo o valor da variável "acabou" sendo False.

*Solução do Problema: *

Na condição while, você usa o operador not seguida do nome da variável. Isso faz com o valor da variável "acabou" seja true e não false, porque o operador not serve para inverte um valor booleano. Por exemplo:

metaPercorrida = 0
metaCorrida = 20
metaBatida = False;

while (not metaBatida) :
    metaPercorrida = metaPercorrida + 1
    metaBatida = (metaCorrida == metaPercorrida)
    print("Percorrer mais 1 km!")

print("Meta batida!! Percorri " + str(metaPercorrida) + " Km.")

O while ele realmente só vai executar enquanto a condição for verdadeira (True), mas percebe que o valor da variável "metaBatida" é False, então como ele continua executando? como eu falei acima, o operador not inverteu o valor de "metaBatida" para True. (*Nota: * se o valor de "metaBatida" fosse True, o valor invertido seria False)

*Despedida: *

Se a sua dúvida foi resolvida, não se esqueça de colocar a questão como resolvida, pois assim as pessoas que tiverem o mesmo problema que você, saberam que a sua pergunta foi resolvida e clicaram nela para saber como resolver.

Tenha um bom estudo!!