bucle while a Python. Com funciona, exemples d'ús

Els bucles són una de les eines principals de qualsevol idioma. Hi ha dos bucles bàsics a Python, un dels quals és while. Considereu-ho, i també per a una millor comprensió de la imatge, un més. De fet, en comparació amb una cosa semblant, és molt més fàcil entendre qualsevol material, no?

El concepte de cicle

Es necessita un bucle quan una determinada acció s'ha de realitzar diverses vegades. Això és molt simplista, perquè en realitat el ventall d'aplicacions dels cicles és molt més ampli. Hi ha dos tipus principals de bucles a Python: for i while. El més popular és per.

A més d'accions específiques, podeu repetir diferents fragments de codi fins a un punt determinat. Això pot ser un cert nombre de vegades, o sempre que una condició determinada sigui certa.

Abans de començar a entendre els tipus de bucles i mentre, en particular, encara hem d'entendre què és la iteració. Aquesta és una repetició d'una acció o seqüència d'accions durant el cicle actual dins de l'execució de l'aplicació actual.

Cicle Per

El nostre bucle For no és un comptador, com en molts altres idiomes. La seva tasca és enumerar una determinada seqüència de valors. Què vol dir això? Suposem que tenim una llista d'elements. En primer lloc, el bucle pren el primer, el segon, el tercer, etc.

L'avantatge d'aquest bucle a Python és que no cal determinar l'índex de l'element per saber quan sortir del bucle. Tot es farà automàticament.

>>> spisok = [10, 40, 20, 30]

>>> per a l'element a spisok:

… imprimir(element + 2)

...

12

42

22

32

En el nostre exemple, hem utilitzat la variable element després de l'ordre for. En general, el nom pot ser qualsevol cosa. Per exemple, una designació popular és i. I amb cada iteració, a aquesta variable se li assignarà un objecte específic de la llista, que anomenàvem la paraula adequada.

En el nostre cas, la llista és una seqüència de nombres 10,40,20,30. A cada iteració, el valor corresponent apareix a la variable. Per exemple, tan bon punt comença el bucle, la variable element s'assigna el valor 10. A la següent iteració, el deu es converteix en el número 40, la tercera vegada es converteix en el número 20 i, finalment, a l'última iteració del bucle, es converteix en 30.

El senyal de finalització del cicle és el final dels elements de la llista.

Si necessiteu el bucle per realitzar una enumeració clàssica de valors, com en altres llenguatges de programació, hauríeu de crear una llista amb una seqüència de nombres naturals fins al valor que necessitem.

>>> spisok = [1,2,3,4,5]

O utilitzeu la funció len(), per determinar la longitud de la llista. Però en aquest cas és millor utilitzar un bucle mentre, perquè no cal utilitzar una variable.

Si necessiteu canviar la seqüència de valors de la llista, feu un bucle for i aquí ve al rescat. Per fer-ho, a cada iteració s'ha d'assignar un valor adequat a cada element de la llista.

Mentre que Loop

A diferència del cicle for, que simplement itera sobre els valors de la seqüència, el bucle mentre té més usos. El nom d'aquest tipus de cicles es tradueix com "encara". És a dir, "fins".

Aquest és un bucle universal que es troba en tots els llenguatges de programació. I d'alguna manera s'assembla a un operador condicional teix, que realitza una comprovació per veure si es compleix una determinada condició. Només en contrast amb l'operador condicional, mentre realitza la comprovació a cada iteració, no només una vegada. I només si la condició és falsa, el bucle s'acaba i s'executa l'ordre que el segueix. En paraules senzilles, si la situació en què treballa ja no és vàlida.

Si dibuixem un cicle mentre de manera simplista, això es fa utilitzant aquest esquema.bucle while a Python. Com funciona, exemples d'ús

La branca principal del programa (que s'executa fora del bucle) es representa en aquesta figura amb rectangles blaus. La turquesa representa el cos del cicle. Al seu torn, un rombe és una condició que es verifica a cada iteració.

cicle mentre pot donar lloc a dues excepcions:

  1. Si al principi del bucle l'expressió lògica no torna vertadera, llavors simplement no comença, ja que s'ha completat abans de l'execució. En general, aquesta situació és normal, perquè en determinades circumstàncies, l'aplicació pot no preveure la presència d'expressions al cos del bucle.
  2. Si l'expressió és sempre certa, això pot donar lloc a un bucle. És a dir, al desplaçament interminable del cicle. Per tant, en aquests programes, sempre hi hauria d'haver una instrucció de sortida del bucle o del programa. Tanmateix, aquesta situació es produirà si el programa va ser capaç de determinar la veritat o la falsedat d'una condició determinada. Si no ho ha fet, es retorna un error amb la finalització del programa. O podeu gestionar l'error i, si es produeix, s'executarà cert codi.

Pot haver-hi un gran nombre d'opcions sobre com gestionar un error. Per exemple, el programa pot demanar a l'usuari que introdueixi dades correctament. Així, si una persona ha indicat un nombre negatiu on només pot ser positiu, o ha introduït lletres on només haurien de ser números, el programa ho pot dir.

Exemples de bucles while

Aquí teniu un exemple de codi que gestiona un error en aquest cas.

n = entrada ("Introdueix un nombre enter: ") 

mentre que escriviu (n) != int:

    Proveu:

        n = int(n)

    excepte ValueError:

        imprimir ("Entrada incorrecta!")

        n = entrada ("Introdueix un nombre enter: ") 

si n % 2 == 0:

    imprimir ("Parell")

en cas contrari:

    imprimir ("Senar")

Tingueu en compte que Python utilitza dos punts per declarar construccions de codi complexes.

Al codi anterior, vam definir com una condició que hauríem de comprovar si el nombre és un nombre enter. En cas afirmatiu, es retorna false. Si no, és cert.

A la segona part del codi, on s'utilitza l'operador if, hem utilitzat l'operador % per trobar la resta després de l'operació de divisió. El següent pas és comprovar si el nombre és parell. Si no, la resta és una en aquest cas. En conseqüència, el nombre és senar. 

En termes senzills, el codi anterior comprova primer si la cadena introduïda per l'usuari és un número. En cas afirmatiu, es fa una segona comprovació per veure si hi ha una resta de la divisió per dos. Però el segon bloc no s'executarà fins que el valor introduït per l'usuari sigui numèric.

És a dir, el bucle s'executarà regularment fins que es produeixi la condició. En aquesta situació, funciona així. 

És a dir, es pot anar des del contrari: repetir una determinada acció fins que l'esdeveniment esdevingui fals.

Anàlisi de codi

Ara veurem amb més detall com funciona aquest codi. Per fer-ho, ho analitzarem pas a pas.

  1. Primer, l'usuari introdueix una cadena, que és acceptada per la variable n. 
  2. Utilitzant un bucle mentre es verifica el tipus d'aquesta variable. A la primera entrada, no és igual int. Per tant, com a resultat de la prova, es constata que aquesta condició és certa. Per tant, s'introdueix el cos del bucle.
  3. Amb l'ajuda d'un operador tractar de estem intentant convertir una cadena en un número. Si es fa això, no es produeix cap error. En conseqüència, no cal processar-lo. Per tant, l'intèrpret torna al començament del bucle i, segons els resultats de la comprovació, resulta que s'ha convertit en un nombre enter. Així que anem al pas 7
  4. Si la conversió no ha tingut èxit, es genera un ValueError. En aquest cas, el flux del programa s'envia al controlador excepte.
  5. L'usuari introdueix un valor nou, que s'assigna a la variable n.
  6. L'intèrpret torna al pas 2 i torna a comprovar. Si és un valor enter, aneu al pas 7. Si no, la conversió s'intenta de nou segons el pas 3.
  7. Amb l'ajuda d'un operador if Determina si hi ha un residu després de dividir un nombre per 2. 
  8. Si no, es retorna el text "parell".
  9. Si no és així, es retorna el text "estrany".

Considereu ara un exemple com aquest. Intenteu determinar quantes vegades passarà aquest cicle?

total = 100 

i = 0

mentre que i < 5:

    n = int(entrada())

    total = total — n

    i = i + 1 

imprimir ("Resta", total)

La resposta correcta és 5. Inicialment, el valor de la variable i – zero. L'intèrpret comprova si la variable és igual i 4 o menys. En cas afirmatiu, es retorna el valor. veritable, i el bucle s'executa en conseqüència. El valor s'incrementa en un.

Després de la primera iteració, el valor de la variable passa a ser 1. Es realitza una comprovació i el programa entén que aquest nombre torna a ser inferior a 5. En conseqüència, el cos del bucle s'executa per segona vegada. Com que els passos són similars, el valor també s'incrementa en un i la variable és ara igual a 2.

Aquest valor també és inferior a cinc. A continuació, el bucle s'executa una tercera vegada, afegit a la variable i 1 i se li assigna el valor 3. Aquest torna a ser menys de cinc. I així arriba a la sisena iteració del bucle, en què el valor de la variable i és igual a 5 (al cap i a la fi, originalment era zero, pel que recordem). En conseqüència, aquesta condició no passa la prova i el bucle s'acaba automàticament i es porta a terme la transició al següent pas, que està fora d'ella (o la terminació del programa, si no es proporcionen els passos següents).

El cicle també es pot produir en sentit contrari. Aquí teniu un exemple de codi on, amb cada iteració posterior, se'n resta un del valor actual de la variable. 

total = 100 

mentre que total > 0:

    n = int(entrada())

    total = total — n 

print ("Recurs esgotat")

Intenta endevinar què fa aquest programa! Imagineu-ho en una variable total s'emmagatzema informació sobre el recurs del programa. Cada vegada que l'intèrpret comprova si el recurs existeix. Si no, es mostra el text "Recurs esgotat" i el programa es tanca. I amb cada iteració del bucle, el recurs disminueix en el nombre que especifica l'usuari.

I ara els deures. Proveu de canviar el codi anterior perquè la variable no es torni físicament negativa. 

4 Comentaris

  1. si el codi ahaan usoo gudbi

Deixa un comentari