DeclaraciĆ³ if condicional en Python. Sintaxi, els blocs else/elif, exemples

En el procĆ©s d'aprendre a programar, sovint cal crear programes que no siguin tan fĆ cils d'aplicar a la vida real. Al cap i a la fi, de tant en tant nomĆ©s heu de seguir les instruccions sota determinades condicions. Per poder implementar-ho al programa, tots els idiomes tenen declaracions de control. Amb la seva ajuda, podeu controlar el flux d'execuciĆ³ del codi, creant bucles o realitzant determinades accions nomĆ©s quan una determinada condiciĆ³ Ć©s certa.

Avui parlarem de la declaraciĆ³ if, que verifica la situaciĆ³ actual d'una determinada condiciĆ³ i, a partir d'aquesta informaciĆ³, pren decisions sobre accions posteriors.

Tipus de declaracions de control

En general, if no Ć©s l'Ćŗnica declaraciĆ³ que controla el flux d'un programa. AixĆ­ com ell mateix pot ser un component d'una cadena mĆ©s gran d'operadors.

TambĆ© hi ha bucles i sentĆØncies que controlen el procĆ©s de la seva execuciĆ³. Avui nomĆ©s parlarem de l'operador condicional i de les cadenes en quĆØ pot participar.

A la programaciĆ³, hi ha una cosa com la ramificaciĆ³. Ɖs precisament aixĆ² el que significa una seqĆ¼ĆØncia d'ordres que nomĆ©s s'executa si una determinada condiciĆ³ Ć©s certa. Els criteris en si mateixos poden ser diferents:

  1. Igualtat d'una variable amb un valor determinat.
  2. RealitzaciĆ³ d'una acciĆ³ concreta.
  3. Estat de l'aplicaciĆ³ (colĀ·lapsada o no).

L'espectre pot ser molt mƩs gran. Les declaracions condicionals vƩnen de diversos tipus:

  1. Amb una branca. Ɖs a dir, es realitza una Ćŗnica comprovaciĆ³, com a resultat de la qual es realitzen determinades accions.
  2. Amb dues o mƩs branques. Si el criteri 1 Ʃs cert, comproveu el criteri 2. Si Ʃs cert, comproveu el 3. Per tant, feu tantes comprovacions com sigui necessari.
  3. Amb diverses condicions. AquĆ­ tot Ć©s senzill. L'intĆØrpret verifica si hi ha diverses condicions o una d'elles.

afirmaciĆ³ if

L'estructura de la declaraciĆ³ if Ć©s similar en tots els idiomes. Tanmateix, a Python, la seva sintaxi Ć©s una mica diferent de totes les altres:

si condiciĆ³:

    <Š²Ń…Š¾Š“ящŠµŠµ Š²Ń‹Ń€Š°Š¶ŠµŠ½ŠøŠµ 1>

    <Š²Ń…Š¾Š“ящŠµŠµ Š²Ń‹Ń€Š°Š¶ŠµŠ½ŠøŠµ 2>

<Š½Šµ Š²Ń…Š¾Š“ящŠµŠµ Š²Ń‹Ń€Š°Š¶ŠµŠ½ŠøŠµ>

En primer lloc, es declara el propi operador, desprĆ©s de la qual s'escriu la condiciĆ³ en quĆØ comenƧa a funcionar. La condiciĆ³ pot ser vertadera o falsa.

AixĆ² Ć©s seguit d'un bloc amb ordres. Si immediatament segueix un criteri a complir, aleshores la seqĆ¼ĆØncia d'ordres corresponent s'anomena bloc if. Podeu utilitzar-hi qualsevol nombre d'ordres.

AtenciĆ³! El sagnat dins de totes les ordres de bloc if ha de tenir la mateixa mida. Els lĆ­mits del bloc estan determinats pels sagnies. 

Segons la documentaciĆ³ lingĆ¼Ć­stica, el sagnat Ć©s de 4 espais. 

Com funciona aquest operador? Quan l'intĆØrpret veu la paraula if, immediatament comprova l'expressiĆ³ amb els criteris especificats per l'usuari. Si aquest Ć©s el cas, llavors comenƧa a buscar instruccions i a seguir-les. En cas contrari, es salten totes les ordres d'aquest bloc.

Si una instrucciĆ³ desprĆ©s de la condiciĆ³ no estĆ  sagnada, no es tractarĆ  com un bloc if. En la nostra situaciĆ³, aquesta lĆ­nia Ć©s . Per tant, independentment del resultat de la comprovaciĆ³, aquesta lĆ­nia s'executarĆ .

AquĆ­ teniu un fragment de codi per a un exemple de com funciona aquest operador.

nombre = int(entrada ("Introdueix un nĆŗmero: "))

si el nombre > 10:

    print ("El nombre Ć©s mĆ©s gran que 10")

Aquest programa demana a l'usuari un nĆŗmero i comprova si Ć©s superior a 10. Si Ć©s aixĆ­, retorna la informaciĆ³ adequada. Per exemple, si l'usuari introdueix el nĆŗmero 5, el programa simplement finalitzarĆ  i ja estĆ .

PerĆ² si especifiqueu el nĆŗmero 100, l'intĆØrpret entendrĆ  que Ć©s mĆ©s de deu i ho informarĆ .

AtenciĆ³! En el nostre cas, si la condiciĆ³ Ć©s falsa, el programa s'atura, perquĆØ no es donen ordres desprĆ©s de la instrucciĆ³.

NomĆ©s hi ha una comanda al codi anterior. PerĆ² n'hi ha molts mĆ©s. L'Ćŗnic requisit Ć©s fer sagnat.

Ara analitzem aquesta seqĆ¼ĆØncia d'ordres.

nombre = int(entrada ("Escriu un nĆŗmero: "))

si el nombre > 10:

    imprimir ("primera lĆ­nia")

    imprimir ("segona lĆ­nia")

    imprimir ("tercera lĆ­nia")

print("La lĆ­nia que s'executa, independentment del nĆŗmero introduĆÆt")

print("Finalitzar l'aplicaciĆ³")

Intenteu endevinar quina serĆ  la sortida si introduĆÆu els valors 2, 5, 10, 15, 50.

Com podeu veure, si el nĆŗmero introduĆÆt per l'usuari Ć©s superior a deu, s'emetran tres lĆ­nies + una amb el text "Executar cada vegada..." i una "Finalitzar", i si Ć©s inferior a deu, nomĆ©s una, amb un text diferent. NomĆ©s s'executaran les lĆ­nies 3,4,5, XNUMX, XNUMX si Ć©s cert. Tanmateix, les dues Ćŗltimes lĆ­nies s'escriuran sense importar quin nĆŗmero especifiqui l'usuari.

Si utilitzeu les declaracions directament a la consola, el resultat serĆ  diferent. L'intĆØrpret activa immediatament el mode multilĆ­nia si, desprĆ©s d'especificar el criteri de verificaciĆ³, premeu Intro.

Suposem que hem escrit la segĆ¼ent seqĆ¼ĆØncia d'ordres.

>>>

>>> n = 100

>>> si n > 10:

...

DesprĆ©s d'aixĆ², veurem que >>> ha estat substituĆÆt per punts suspensius. AixĆ² vol dir que el mode d'entrada multilĆ­nia estĆ  habilitat. En paraules senzilles, si premeu Enter, se us transferirĆ  a l'entrada de la segona etapa de la instrucciĆ³. 

I per sortir d'aquest bloc, cal afegir una construcciĆ³ mĆ©s al bloc if.

>>>

>>> n = 100

>>> si n > 10:

ā€¦ imprimir(Ā«nv 10Ā»)

...

Si la condiciĆ³ no Ć©s certa, el programa finalitza. Aquest Ć©s un problema, ja que l'usuari pot percebre que aquest programa s'ha tancat a causa d'una fallada. Per tant, Ć©s necessari donar feedback a l'usuari. Per a aixĆ², s'utilitza un enllaƧ si una altra cosa.

operador d'expressiĆ³ si una altra cosa

Aquest operador us permet implementar un enllaƧ: si l'expressiĆ³ coincideix amb una regla determinada, feu aquestes accions, i si no, d'altres. Ɖs a dir, permet dividir el flux del programa en dues vies. La sintaxi Ć©s intuĆÆtiva:

si condiciĆ³:

    # si bloqueja

    declaraciĆ³ 1

    declaraciĆ³ 2

    etcĆØtera

en cas contrari:

    # else block

    declaraciĆ³ 3

    declaraciĆ³ 4

    etcĆØtera:

Expliquem com funciona aquest operador. Primer, la instrucciĆ³ estĆ ndard s'executa al fil teix, comprovant si coincideix condiciĆ³ "Cert o fals". Les accions posteriors depenen dels resultats de la comprovaciĆ³. Si Ć©s cert, la instrucciĆ³ que es troba a la seqĆ¼ĆØncia d'instruccions que segueix la condiciĆ³ s'executa directament. teix, si Ć©s fals, doncs else

D'aquesta manera podeu gestionar els errors. Per exemple, l'usuari ha d'introduir un radi. ƒbviament, nomĆ©s pot ser un nombre amb un signe mĆ©s, o Ć©s un valor nul. Si Ć©s inferior a 0, haureu d'emetre un missatge demanant-vos que introduĆÆu un nĆŗmero positiu. 

AquĆ­ teniu el codi que implementa aquesta tasca. PerĆ² aquĆ­ hi ha un error. Intenta endevinar quin. 

radi = int(entrada ("Introdueix el radi: "))

si radi >= 0:

    print ("CircumferĆØncia = ", 2 * 3.14 * radi)

    print("ƀrea = ", 3.14 * radi ** 2)

    en cas contrari:

        print("Si us plau, introduĆÆu un nĆŗmero positiu")

Error de desajust de sagnat. Si i Altrament s'han d'ubicar sense ells o amb el mateix nombre d'ells (segons si estan imbricats o no).

Donem un altre cas d'Ćŗs (on tot serĆ  correcte amb l'alineaciĆ³ de l'operador): un element d'aplicaciĆ³ que comprova una contrasenya.

password = input("Introdueix la contrasenya: ")

si contrasenya == Ā«sshhĀ»:

    imprimir ("Benvingut")

en cas contrari:

    print("AccĆ©s denegat")

Aquesta instrucciĆ³ omet la persona mĆ©s si la contrasenya Ć©s sshh. Si hi ha alguna altra combinaciĆ³ de lletres i nĆŗmeros, mostrarĆ  el missatge "AccĆ©s denegat".

enunciat-expressiĆ³ if-elif-else

NomĆ©s si diverses condicions no sĆ³n certes, s'executa la instrucciĆ³ que hi ha al bloc. else. Aquesta expressiĆ³ funciona aixĆ­.

si condiciĆ³_1:

    # si bloqueja

    declaraciĆ³

    declaraciĆ³

    mĆ©s declaraciĆ³

condiciĆ³ elif_2:

    # primer bloc elif

    declaraciĆ³

    declaraciĆ³

    mĆ©s declaraciĆ³

condiciĆ³ elif_3:

    # segon bloc elif

    declaraciĆ³

    declaraciĆ³

    mĆ©s declaraciĆ³

...

else

    declaraciĆ³

    declaraciĆ³

    mĆ©s declaraciĆ³

Podeu especificar qualsevol nombre de condicions addicionals.

Declaracions niuades

Una altra manera d'implementar diverses condicions Ć©s inserir comprovacions de condicions addicionals al bloc if.

Operador if dins d'un altre bloc de condicions

gre_score = int(entrada ("Introdueix el teu lĆ­mit de crĆØdit actual"))

per_grad = int(entrada ("IntroduĆÆu la vostra qualificaciĆ³ creditĆ­cia: "))

si per_grad > 70:

    # bloc si exterior

        si gre_score > 150:

            # bloc if intern

    print("Enhorabona, has rebut un prĆ©stec")

en cas contrari:

    print("Ho sentim, no sou elegible per a un prĆ©stec")

Aquest programa realitza una comprovaciĆ³ de la qualificaciĆ³ creditĆ­cia. Si Ć©s inferior a 70, el programa informa que l'usuari no tĆ© dret a crĆØdit. Si Ć©s mĆ©s gran, es realitza una segona comprovaciĆ³ per veure si el lĆ­mit de crĆØdit actual Ć©s superior a 150. En cas afirmatiu, es mostra un missatge que s'ha emĆØs el prĆ©stec.

Si tots dos valors sĆ³n falsos, es mostra un missatge que l'usuari no tĆ© la possibilitat d'obtenir un prĆ©stec. 

Ara revisem una mica aquest programa.

gre_score = int(entrada ("Introdueix el lĆ­mit actual: "))

per_grad = int(entrada ("Introdueix la puntuaciĆ³ de crĆØdit: "))

si per_grad > 70:

    si gre_score > 150:

        print("Enhorabona, has rebut un prĆ©stec")

    en cas contrari:

        print("El teu lĆ­mit de crĆØdit Ć©s baix")

en cas contrari:

    print("Ho sentim, no sou elegible per al crĆØdit")

El codi en si Ć©s molt similar, perĆ² imbricat if tambĆ© proporciona un algorisme en cas que la condiciĆ³ resulti falsa. Ɖs a dir, el lĆ­mit de la targeta Ć©s insuficient, perĆ² l'historial de crĆØdit Ć©s bo, es mostra el missatge "Tens una qualificaciĆ³ creditĆ­cia baixa".

declaraciĆ³ if-else dins d'una condiciĆ³ else

Fem un altre programa que determini la nota d'un estudiant en funciĆ³ de les puntuacions de les proves.

puntuaciĆ³ = int(entrada ("Introdueix la teva puntuaciĆ³: "))

si puntuaciĆ³ >= 90:

    print("Genial! La teva nota Ć©s A")

en cas contrari:

    si puntuaciĆ³ >= 80:

print("Genial! La teva nota Ć©s B")

    en cas contrari:

si puntuaciĆ³ >= 70:

    print("BĆ©! La teva nota Ć©s C")

en cas contrari:

    si puntuaciĆ³ >= 60:

print(ā€œLa teva nota Ć©s D. Val la pena repetir el material.ā€)

    en cas contrari:

print("Has suspĆØs l'examen")

L'aplicaciĆ³ primer comprova si la puntuaciĆ³ Ć©s superior o igual a 90. En cas afirmatiu, retorna una nota A. Si aquesta condiciĆ³ Ć©s falsa, es realitzen comprovacions posteriors. Veiem que l'algorisme Ć©s gairebĆ© el mateix a primera vista. AixĆ­ que en comptes de comprovar dins else millor utilitzar una combinaciĆ³ si-elif-una altra cosa.

AixĆ­ que l'operador if realitza una funciĆ³ molt important: s'assegura que certes peces de codi s'executen nomĆ©s si Ć©s necessari. Ɖs impossible imaginar programar sense ell, perquĆØ fins i tot els algorismes mĆ©s senzills requereixen bifurcacions com "si aneu a l'esquerra, ho trobareu, i si aneu a la dreta, heu de fer aixĆ² i allĆ²".

Deixa un comentari