Está en la página 1de 1
En esta loco se rata la estuctra de contol Estas constucciones periten condcionar la ejecuektn de uno 0 varos Bloque de sentencias al cumpimiento de una o varias condiciones. Sentencias condicionales: La estuctura de contol. permite que un programa ejecute unas instucciones cuando se cumplan una condlcén. En gl“ algnica ‘a (conden Sintaxis de la sentencia condicional La sintaxis 6 a consruceién ea siguiente: rer Seen eee eee. La eecucin de esta consrucion es la siguiente: + La conan ee «© Sletresultad es True 9e ejecta el boque de sentencias «© Slel resultado es False nose eecuta et bloque de sentencias, La primera tinea contine a condton a evalua y o¢ una expreson gia, Esta linea debe terminar siempre por dos punts: 'A continuacin viene el bloque de érdenes que se ejecutan cuando la concn se cumple (es decr. cuando la condicion os verdadera). Es importante sefalar que este bloque dabe i sangrado, puesto que Python utliza al sangrado para reconocer las lineas que forman un bleque de Insruccones, El sangrado que se suele utlzar en Python es de cuatro espacos, pero se pueden utilzar mas © menos espacies. Al esc dos puntos () al ral dena linea, efector sangraa automeicamente as lineas siguientes. Para termina Un Bogue, basta con volver al principio de a linea Diagrama de flujo de la sentencia condicional condicional if El lagrama de fj siguiente muestra fa eecucion de una sentencia i DIAGRAMA DE FLUJO, SENTENGIA IF "ome Gaaveraqeaicon parca OO) INICIO False > t ConoiciNy BLOQUE Programas de ejemplo con sentencias condicionales if. \Veamos un ejemplo. El programa siguiente pide un nimero posts al usuario almacona la respuesta en la variable "numero" Después omprustia sl numero es negativo. Silo es, programa avsa que no era e200 que se habla pediso Finalmente programa npr siempre © Valor intodieso pore usual. A contnuacion se pueden ver dos ejecuones paso a paso se ese progtama, Enla primera el usuaro escribe un valor negatvo y en la segunda el usuario escrbe un valor posite: Ejomplo de if ..1 ennai eae eeerte tenes Ejomplo de if ..2 Biurcaciones! if. ese cilando no se cumple esa conden. En inglés "I" significa" (conden) y “lee eigniea “sno”. La erden en Python se eset as Sintaxis de la sentencia condicional i. La sina a constrocion sla siguiente See eases ee ee eros Sere ker La eecucin de esta consrucion es la siguiente: + La consi se evaia siempre ‘let esuitado es True se ejecuta solamente el bloque de sentencas 1 Si el resutado es False se elecuta solamente bloque de setencias 2, La primera linea contiene la condcén a evalua. Esa linea debe trminarstempre por dos puntos () A contruacion viene et bioque de Sidenes que se ejecvian cuando la condicn se cumple (28 dect. cuando la condicon es verdadea). ES importante sefalar que este bloque debe i sangrado, puesto que Python utliza al sangrado para reconocer ls lineas que forman un bleque de insruccones, El sangrado que se suele utlzar en Python es de cuatro espacos, pero se pueden utizar mas o menos espacies. Al escribir dos puntos () at tat de una linea, IDLE sangrara automaticamente las linea siguientes. Para tear un Bloque, basta con voWver al panipo de Ia linea Después viene la linea con la orden else, que indica a Python que el bloque que viene a contnuacién se Hane que ejecutar cuando lacondcion no se cumpla (es decir, cuando sea aia), Esta linea Tambien debe terminar Sempre por dos puntos (), La linea con la orden else no debe incur nada mas que el eee y los dos puntos, En lime lugar este loque de instucciones sangrado que corresponde a Diagrama de flujo de la sentencia condicional i. ese El dlagrama de fj siglente muestra la elecucon de una sentencla DIAGRAM DE FLUJO: SENTENGIA IF .. ELSE tweens OS INICIO Fase Twe Conoiciy BLOQUE 2 BLOQUE 1 Programas de ejemplo con sentencias condicionales if. else. \eamos un ejemplo. El programa sigulente pregunta la edad al usuario almacena la respuesta en la variable “edad”. Después comprueba sa ovtad es infer a 18 aflos. Siesta comparacion es cea el programa escribe que es menor de edad y ses Tals escribe que es mayor de oda, Fnamento el programa siempre se despide, ya que la uttma instuccen esta fuera de cl continuacén se pueden ver dos eecuciones paso a paso de ese programa Elemplo de. peter eo Puede ver a ejection paso a paso de este programa ulizando los lconos de vance y reroceso situads abajo ala derecha, Elemplo de. panei han ae Puede ver a ejecion paso a paso de este programs ulizand os iconos de avancey reroceso situados abajo ala derecha, ‘Aunque noes acensejable, en vez do un Bloque '@ paca escribir un programa con dos bloques Pree ee geaeee] Es mejor no haceto ast por dos motos: +a poner dos bloques | estamos ebigando a Python a evalua slempre las dos condiciones, mleniras queen un Bloque s0io se evalda lina conden En un programa seneilo la derencia no es aprecabe, pero en programas que ejecutan muchas comparacones, el pate puede ser apreciatl, + utiizand else nos ahorrames esciir una condcién (ademas, escrbiendo la condicin nes poems equivocar, pero escribende ose no). + utlzando nos aseguramos de que 9 ejecta uno de los dos blaques de istusciones Uiiizando dos cabia la posblldad de que no ‘8 cumplera ninguna de las dos candiconesy no se ejecutara ninguna de las dos blaques e instruccones, Si por algun motvo no se quisiera ejecutar ninguna orden en alguno dels bloques, el Bloque de Grdenes debe contener al menos la insttuccién (esta orden dice a Python que no tiene que hacer nada) erent eee eae) Evidentemente este programa podria smplicarse camblando a dsigualda, eee ere ee) El primer ejemplo era sto un ejemplo para mastar como se utliza la nstucién pass, Nermalment, fa instuecon pass ge uaa para “relenar un Bloque de instucciones que todavia no hemos cro y poder ejecular el programa, ya quo Python requere que se esctiba alguna intuccién on cualquier Bloque. Sangrado de los bloques Un bloque de instucciones pusde contaner varia insrucciones, Todas las insiuccionas del logue deten tener mimo sangrado: er ree cae peer bb) Se aconsea uiizar siempre el mismo numero dees siguiente programa es correct cos en el sangrado, sunque Python permite que cada bloque tenga un numero distito. rete rae eee ent ececr a Een Lo que no se permite es que en un mismo blogue haya instuccenes con de errr al nent ejecutar el programa ser deren: infos sangrades. Dependiendo del orden de os sanghados,e! mensaje + En este primer caso, la primera instrucién determina el sangrado de ese bloque, por lo que al enconrar la segunda instuce sagrado mayer, 3 produce e ero “unexpected indent (sangraco inesperado) pee 5 ears potest ne eg Pores swede) eee eager egy En (OLE se muestra una ventana idicando e eror peace enter eetn) 1 syne + En este segundo cas, a primera Instruclén determina el sangrado de ese bloque, por lo que al encenrar la segunda instrucelén, con un sangrado menor. Python entende que esa instuccén pertoece 2 ote Bloque. pero como no hay ningun bioque con ese nivel de sangrado, se produce el or “urndent doesnot maich any aut indentation level” (l sangrado no cance con el de ningun rive super. Peete erry pera Beate eens eaten eee a praca prey prucgeaeerins pene eae Praca eee En !OLE 22 muestra una ventana incicando e era + En este trcer caso, coma la segunda instrucién ne tiene sangrado, Python entande que a bfurcacion i ha terminado, per le que al encontrar Un ese sin suf conespendiente se produce e eror “valid syntax(sntaxl no valid). Pee seer IeY eget none gy En !OLE 22 muestra una ventana ieicando e era Sentencias condicionales anidadas Por ejemplo, e programa siguiente muesia ecole cbtenig al mezcar dos colores en la pants Ejemplo de sentencias condicionales anidadas aren eres career Peer? carrera Eres OO cen 5 Beara Sec pene Een) Seger ey nt" Hasta 1a préxinal") us. va a secunion ns. pasa.de le. aroarama ilizend oa canna vance. atrocesnsivacas abi. ala deve. Se pueden andar tanas sentencas condiconales como se desee Mas de dos alternativas: i. elif. else .. La constuecon I. ele... $e puede extender asadiendo la instucién et La estructura de contol permite encadenar varias condiciones. el es una contracién de else La orden en Python se ecribe Sintaxis de la sentencia condicional If. elif. else La sintaxs a constrocion sla siguiente eae pees + Sie cumple la condicon 1, $8 ejeuta el logue 1 + Sino se cumple a concn 1 pero si que se cumple fa condcion 2, se ejcuta el logue 2 + Sino se cumplen ola condcién 1 nia condicén 2, 8 ejecuta el Bogue 2 Esta esuctra es equivalents aa siguiente estuctra de anidados: nee ise Barrer: Se pueden scr tntos bioques ci como sean necesarios. El bloque else (que es opcional) se elecuta si no se cumple ninguna de las Diagrama de flujo de la sentencia condicional if. elif. else El lagrama de yj sigulente muestra fa efecudon de una sententa ef. ee DIAGRAMA DE FLUJO: SENTENCIA IF ELIF ELSE. “oo OS INICIO BLOQUE 1] x BLOQUE 3| BLOQUE 2| FIN En las setrucuras fl orden en que se escrten los cases es importante y. @ menudo, e pueden simples las candlcon Podemas cisingu dos tines de stuaciones: 1. Cuando os casos son mutuamente excuyente. Consideremos un programa que pide la dad y en funcin del valor rciido da un mensaje diferent. Podemos distingui, por sjompl, res sel valor 0s negatwo, cata deun eror Sil valor esta entre Oy 17, se tata de un menor de edad Sil valor es superior igual 18, se tata de un menor de edad Los casos son mutuamenteexcyentes, ya que un valor slo puede estar en uno de los casos. Un poste programa es el siguiente ere eens E! programa anieror funciona correctamenta, pao los casos estan cesordenados, Es mejor esenbies en orden, para aseguramos de no ‘tv ninguna de las poses stuaciones, Por ejemplo, podiamos escrbiles de menor a mayor edad, aunque e80 abiga @escrbr os condiciones Estos dos programas son equivalents porque en una estructura cuando se cumple una de ts comparaciones Python ya no alas siguientes condiciones. En este caso, sel programa tone que comprobar la segunda comparacién (a dle), es porque no Se ‘ump la primera (adel). ¥ Ino se ha cumple la pmera es que edad es mayor que 0, poo que noes necesarlo comprobarl en la ‘segunda cendicion Pero hay que tener cudado, porque silos casos del programa anleror se ordenan al revée manteniendo las condicones, el programa no cri un vale negatve mostara el mensaje "Es usted mencr de edad 2, Cuando unos casos inclyen a otros CConsideremos un programa que pide un valor ynos coe: 1.08 muliplo de dos, es multiple de cuatro (y de doa Sino es maple de os Nota: El valor 0 se consicerard mattplo de 4 y de 2. Los casos no son mutuamente excluyentes, puesto que os mitiplos de cuatro son también miles de dos. El siguiente programa no seria corecto: En) SR ea nee El sor de este programa es que si numero cumple la segunda condi, cumple también la primera, Es decir. st numero es un muliplo de cuato, come tambien es miltipio de dos, cumple la primera conden y el programa ejecta e primer bloque de intucciones, sin Wagar a comproba resto de condiciones. Una manera de comtagir ese err es ald en la mora cancion (a de if) que numero no sea mpl de cuatro er enna) rint(F{rumero} es m ete cen Ree cena) per nye errr enean) ere ce ne eres cena eee Este programa funciona porque ls miles de cuatro también son miles de dos y el programa seo eval la segunda condcion (a de ) sino se ha cumpldo la primera, Pero todavia podemes simplifcar mas el programa, ocdenando de ora manera los casos ago) print(F{nuero) © siltiplo ¢ Este programa funciona corectamente ya que aunque la segunda condicion (la deel) no dstingue entre mulplos de dos y de cuato, 3 umero e un multiple de cua, el programa no legs a evalar la Segunda condcén porque se cumple la primera (ade) En general, el orden que permite simpiicar mas las expresiones suele ser consierar primero los casos parcuares y despues los casos generaies Silas condiciones culbren todas las posbiidades, se puede no escrbir lbioque Pero es mds habitual suture imo bloqu ei. por un blaque rumero = snt(input("Eseriba un nner Condiciones no booleanas Dado que cualquier variable puede iterpretarse como ura variable boolean, sla condicon es una comparacion con cero, podemas omti a comparacion Per ejamplo, ol programa siguiente Bearers meme) print¢="{numera} e= ear") podria eset omilend la eomparacion cron eens) eae) En este programa, sl nlmra es impar, numero % 2 da come resultado 1. Y come el valor booleano de un numero lferente de cera es True (ee dec, bool) es Tun), a candién se estaria curplendo S'la comparacon es una gualdad, se puede utizar et operador ro. Por ejemplo, programa siguiente peers) Sacre) 8 podria escribir omitted a comparacion oo a ee En este programa, si el nimero es pa, numero % 2 da como resultado 0. El vale booleana de cero es False (es dec, boo(0) es False), pero al egarse con rot, a condicon se estara cumpllendo (ya que °° cuando se esta aprendiendo a programa, esta nolaciin puede resultar un poco ctptica, por lo que se recamienda empezar escibiende lat comparacones completas. Més adelante, cuando nos hayamesfamilarzado con las expesiones liens. nos resutaré mas natural za ‘Tima meaiicacen do esta pagina 14 do Tebrovo de 2020 Esta pagina forma parte dt curso Inloduceign ala programacién con Python por Barciomé Sines Ma due se cstibuye bajo una Lcencia Creative Commons Reconocimiento-Comartiival 4.0 Infemacional(CC BY:SA4,

También podría gustarte