InstrucciĆ³n if condicional en Python. Sintaxe, bloques else/elif, exemplos

No proceso de aprender a programar, moitas veces Ć© necesario crear programas que non sexan tan fĆ”ciles de aplicar na vida real. Despois de todo, de cando en vez ten que seguir as instruciĆ³ns sĆ³ baixo certas condiciĆ³ns. Para poder implementar isto no programa, todos os idiomas teƱen instruciĆ³ns de control. Coa sĆŗa axuda, pode controlar o fluxo de execuciĆ³n de cĆ³digo, creando bucles ou realizando determinadas acciĆ³ns sĆ³ cando unha determinada condiciĆ³n Ć© verdade.

Hoxe falaremos da declaraciĆ³n if, que verifica a situaciĆ³n actual para unha determinada condiciĆ³n e, en funciĆ³n desta informaciĆ³n, toma decisiĆ³ns sobre outras acciĆ³ns.

Tipos de declaraciĆ³ns de control

En xeral, if non Ć© a Ćŗnica instruciĆ³n que controla o fluxo dun programa. AsĆ­ como el mesmo pode ser un compoƱente dunha cadea mĆ”is grande de operadores.

TamĆ©n hai bucles e instruciĆ³ns que controlan o proceso da sĆŗa execuciĆ³n. Hoxe sĆ³ falaremos do operador condicional e das cadeas nas que pode participar.

Na programaciĆ³n, hai algo como a ramificaciĆ³n. Ɖ precisamente isto o que significa unha secuencia de comandos que sĆ³ se executa se unha determinada condiciĆ³n Ć© certa. Os propios criterios poden ser diferentes:

  1. Igualdade dunha variable a un determinado valor.
  2. RealizaciĆ³n dunha acciĆ³n concreta.
  3. Estado da aplicaciĆ³n (contraĆ­do ou non).

O espectro pode ser moito maior. As declaraciĆ³ns condicionais teƱen varios tipos:

  1. Cunha rama. Ɖ dicir, realĆ­zase unha Ćŗnica comprobaciĆ³n, como resultado da cal se realizan determinadas acciĆ³ns.
  2. Con dĆŗas ou mĆ”is ramas. Se o criterio 1 Ć© certo, comprobe o criterio 2. Se Ć© certo, comproba o 3. E asĆ­, realiza tantas comprobaciĆ³ns como sexa necesario.
  3. Con varias condiciĆ³ns. AquĆ­ todo Ć© sinxelo. O intĆ©rprete verifica varias condiciĆ³ns ou unha delas.

declaraciĆ³n se

A estrutura da instruciĆ³n if Ć© semellante en todas as linguas. Non obstante, en Python, a sĆŗa sintaxe Ć© algo diferente de todas as demais:

condiciĆ³n se:

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

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

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

En primeiro lugar, declĆ”rase o propio operador, despois de que se escribe a condiciĆ³n baixo a que comeza a funcionar. A condiciĆ³n pode ser verdadeira ou falsa.

Isto Ć© seguido dun bloque con comandos. Se segue inmediatamente un criterio a cumprir, entĆ³n a secuencia de comandos correspondente chĆ”mase bloque if. Podes usar calquera nĆŗmero de comandos nel.

AtenciĆ³n! A sangrĆ­a dentro de todos os comandos de bloque if debe ser do mesmo tamaƱo. Os lĆ­mites do bloque vense determinados polas sangrĆ­as. 

Segundo a documentaciĆ³n lingĆ¼Ć­stica, a sangrĆ­a Ć© de 4 espazos. 

Como funciona este operador? Cando o intĆ©rprete ve a palabra if, inmediatamente comproba a expresiĆ³n contra os criterios especificados polo usuario. Se este Ć© o caso, entĆ³n comeza a buscar instruciĆ³ns e seguilas. En caso contrario, saltaranse todos os comandos deste bloque.

Se unha instruciĆ³n despois da condiciĆ³n non estĆ” sangrĆ­a, non se trata como un bloque if. Na nosa situaciĆ³n, esta liƱa Ć© . Polo tanto, independentemente do resultado da comprobaciĆ³n, executarase esta liƱa.

AquĆ­ tes un fragmento de cĆ³digo para ver un exemplo de como funciona este operador.

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

se o nĆŗmero > 10:

    print("O nĆŗmero Ć© maior que 10")

Este programa solicita ao usuario un nĆŗmero e comproba se Ć© maior que 10. Se Ć© asĆ­, devolve a informaciĆ³n adecuada. Por exemplo, se o usuario introduce o nĆŗmero 5, o programa simplemente rematarĆ” e xa estĆ”.

Pero se especifica o nĆŗmero 100, entĆ³n o intĆ©rprete entenderĆ” que Ć© mĆ”is de dez e informarao.

AtenciĆ³n! No noso caso, se a condiciĆ³n Ć© falsa, o programa detense, porque non se dan ordes despois da instruciĆ³n.

SĆ³ hai un comando no cĆ³digo anterior. Pero hai moitos mĆ”is. O Ćŗnico requisito Ć© sangrar.

Agora imos analizar esta secuencia de comandos.

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

se o nĆŗmero > 10:

    imprimir ("primeira liƱa")

    imprimir ("segunda liƱa")

    imprimir ("terceira liƱa")

print("A liƱa que se executa, independentemente do nĆŗmero introducido")

print ("Finalizar aplicaciĆ³n")

Tenta adiviƱar cal serƔ a saƭda se introduces os valores 2, 5, 10, 15, 50.

Como podes ver, se o nĆŗmero introducido polo usuario Ć© superior a dez, saen tres liƱas + unha co texto "Executar cada vez..." e outra "Finalizar", e se Ć© inferior a dez, sĆ³ unha, con un texto diferente. SĆ³ se executarĆ”n as liƱas 3,4,5 se Ć© verdadeira. Non obstante, as dĆŗas Ćŗltimas liƱas escribiranse sen importar o nĆŗmero que especifique o usuario.

Se usas as instruciĆ³ns directamente na consola, o resultado serĆ” diferente. O intĆ©rprete activa inmediatamente o modo multiliƱa se, despois de especificar o criterio de verificaciĆ³n, preme Intro.

SupoƱamos que escribimos a seguinte secuencia de comandos.

>>>

>>> n = 100

>>> se n > 10:

...

Despois diso, veremos que >>> foi substituĆ­do por puntos suspensivos. Isto significa que o modo de entrada multiliƱa estĆ” activado. En palabras sinxelas, se preme Intro, serĆ” transferido Ć” entrada da segunda etapa da instruciĆ³n. 

E para saĆ­r deste bloque, cĆ³mpre engadir unha construciĆ³n mĆ”is ao bloque if.

>>>

>>> n = 100

>>> se n > 10:

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

...

Se a condiciĆ³n non Ć© certa, o programa remata. Este Ć© un problema, xa que o usuario pode percibir que un programa deste tipo se pechou debido a un fallo. Polo tanto, Ć© necesario darlle feedback ao usuario. Para iso utilĆ­zase unha ligazĆ³n se-senĆ³n.

operador de expresiĆ³n se-senĆ³n

Este operador permĆ­telle implementar unha ligazĆ³n: se a expresiĆ³n coincide cunha determinada regra, realice estas acciĆ³ns e, se non, outras. Ɖ dicir, permite dividir o fluxo do programa en dĆŗas estradas. A sintaxe Ć© intuitiva:

condiciĆ³n se:

    # se bloquea

    declaraciĆ³n 1

    declaraciĆ³n 2

    e asĆ­ por diante

senĆ³n:

    # bloqueo mĆ”is

    declaraciĆ³n 3

    declaraciĆ³n 4

    etcĆ©tera:

Imos explicar como funciona este operador. En primeiro lugar, a instruciĆ³n estĆ”ndar execĆŗtase no fĆ­o teixo, comprobando se coincide condiciĆ³n "verdadeiro ou falso". Outras acciĆ³ns dependen dos resultados da comprobaciĆ³n. Se Ć© verdadeiro, a instruciĆ³n que estĆ” na secuencia de instruciĆ³ns que segue a condiciĆ³n execĆŗtase directamente. teixo, se Ć© falso, entĆ³n outro

Deste xeito pode xestionar os erros. Por exemplo, o usuario precisa introducir un raio. Obviamente, sĆ³ pode ser un nĆŗmero cun signo mĆ”is, ou Ć© un valor nulo. Se Ć© inferior a 0, debes enviar unha mensaxe solicitando que introduzas un nĆŗmero positivo. 

AquĆ­ estĆ” o cĆ³digo que implementa esta tarefa. Pero aquĆ­ hai un erro. Tenta adiviƱar cal. 

raio = int(entrada ("Introduza o raio: "))

se raio >= 0:

    print("Circunferencia = ", 2 * 3.14 * raio)

    print("Ɓrea = ", 3.14 * raio ** 2)

    senĆ³n:

        print("Introduce un nĆŗmero positivo")

Erro de falta de coincidencia de sangrĆ­a. Se Ć© outra cousa deben situarse sen elas ou co mesmo nĆŗmero delas (segundo estĆ”n aniƱadas ou non).

Imos dar outro caso de uso (onde todo serĆ” correcto co aliƱamento do operador): un elemento de aplicaciĆ³n que verifica un contrasinal.

contrasinal = input ("Introduza o contrasinal: ")

se contrasinal == Ā«sshhĀ»:

    imprimir ("Benvido")

senĆ³n:

    print("Acceso denegado")

Esta instruciĆ³n omite mĆ”is a persoa se o contrasinal Ć© sshh. Se hai outra combinaciĆ³n de letras e nĆŗmeros, mostra a mensaxe "Acceso denegado".

declaraciĆ³n-expresiĆ³n if-elif-else

SĆ³ se non son certas varias condiciĆ³ns, execĆŗtase a instruciĆ³n que estĆ” no bloque. outro. Esta expresiĆ³n funciona asĆ­.

se condiciĆ³n_1:

    # se bloquea

    afirmaciĆ³n

    afirmaciĆ³n

    mĆ”is declaraciĆ³n

condiciĆ³n elif_2:

    # primeiro bloque elif

    afirmaciĆ³n

    afirmaciĆ³n

    mĆ”is declaraciĆ³n

condiciĆ³n elif_3:

    # segundo bloque elif

    afirmaciĆ³n

    afirmaciĆ³n

    mĆ”is declaraciĆ³n

...

outro

    afirmaciĆ³n

    afirmaciĆ³n

    mĆ”is declaraciĆ³n

Podes especificar calquera nĆŗmero de condiciĆ³ns adicionais.

Enunciados anidados

Outra forma de implementar varias condiciĆ³ns Ć© inserir comprobaciĆ³ns de condiciĆ³ns adicionais no bloque if.

Operador if dentro doutro bloque de condiciĆ³ns

gre_score = int(input("Introduce o teu lƭmite de crƩdito actual"))

per_grad = int(input("Introduza a sĆŗa clasificaciĆ³n de crĆ©dito: "))

se por_grado > 70:

    # bloque se externo

        se gre_score > 150:

            # bloque se interno

    print("ParabĆ©ns, recibiches un prĆ©stamo")

senĆ³n:

    print("SentĆ­molo, non es apto para un prĆ©stamo")

Este programa realiza unha comprobaciĆ³n da cualificaciĆ³n de crĆ©dito. Se Ć© inferior a 70, o programa informa de que o usuario non ten dereito a crĆ©dito. Se Ć© maior, realĆ­zase unha segunda comprobaciĆ³n para ver se o lĆ­mite de crĆ©dito actual Ć© superior a 150. En caso afirmativo, mĆ³strase unha mensaxe de que se emitiu o prĆ©stamo.

Se ambos os valores son falsos, mĆ³strase unha mensaxe de que o usuario non ten a posibilidade de obter un prĆ©stamo. 

Agora imos reelaborar un pouco ese programa.

gre_score = int(input("Introduce lĆ­mite actual: "))

per_grad = int(input("Introduza puntuaciĆ³n de crĆ©dito: "))

se por_grado > 70:

    se gre_score > 150:

        print("ParabĆ©ns, recibiches un prĆ©stamo")

    senĆ³n:

        print("O teu lĆ­mite de crĆ©dito Ć© baixo")

senĆ³n:

    print("SentĆ­molo, non es apto para recibir crĆ©dito")

O cĆ³digo en si Ć© moi semellante, pero aniƱado if tamĆ©n proporciona un algoritmo no caso de que a condiciĆ³n resulte ser falsa. Ɖ dicir, o lĆ­mite da tarxeta Ć© insuficiente, pero o historial de crĆ©dito Ć© bo, mĆ³strase a mensaxe "Tes unha clasificaciĆ³n de crĆ©dito baixa".

declaraciĆ³n if-else dentro dunha condiciĆ³n outro

Imos facer outro programa que determine a nota dun alumno en funciĆ³n das puntuaciĆ³ns das probas.

puntuaciĆ³n = int(entrada ("Introduza a sĆŗa puntuaciĆ³n: "))

se puntuaciĆ³n >= 90:

    print("Xenial! A tĆŗa nota Ć© A")

senĆ³n:

    se puntuaciĆ³n >= 80:

print("Xenial! A tĆŗa nota Ć© B")

    senĆ³n:

se puntuaciĆ³n >= 70:

    print("Ben! A tĆŗa nota Ć© C")

senĆ³n:

    se puntuaciĆ³n >= 60:

print("A tĆŗa nota Ć© D. Paga a pena repetir o material.")

    senĆ³n:

print("Non suspendeu o exame")

A aplicaciĆ³n comproba primeiro se a puntuaciĆ³n Ć© maior ou igual a 90. En caso afirmativo, devolve unha nota A. Se esta condiciĆ³n Ć© falsa, realĆ­zanse as comprobaciĆ³ns posteriores. Vemos que o algoritmo Ć© case o mesmo a primeira vista. EntĆ³n, en vez de comprobar dentro outro mellor usar unha combinaciĆ³n se-elif-outra.

EntĆ³n, o operador if realiza unha funciĆ³n moi importante: asegĆŗrase de que determinadas pezas de cĆ³digo se executen sĆ³ se Ć© necesario. Ɖ imposible imaxinar a programaciĆ³n sen el, porque incluso os algoritmos mĆ”is simples requiren bifurcaciĆ³ns como "se vas Ć” esquerda, atoparao, e se vas Ć” dereita, entĆ³n tes que facer isto e aquilo".

Deixe unha resposta