Salta al contenido principal

Condicionales en Python

Sitio: Facultad de Ingeniería U.Na.M.
Curso: Informática ET241/EM241/IC241/IN241/IM204
Libro: Condicionales en Python
Imprimido por: Invitado
Día: sábado, 7 de junio de 2025, 22:49

1. Contenidos

Este material es producido por la cátedra de Informática de la Facultad de Ingeniería de Oberá Misiones.

Su reproducción es libre, solo debe mencionarse la fuente.

Temas a tratar en el presente documento:

Condicionales:

  • if
  • if else
  • if elif else
  • try except else

.

2. Introducción.

La estructura de selección o condicional, se ejecuta condicionalmente; es decir, si una cierta condición es verdadera se ejecuta un bloque de instrucciones, si es falsa se ejecuta un bloque diferente de instrucciones.

Si utilizamos una estructura condicional es para indicar que vamos a realizar ciertas acciones según sea el resultado (cierto o falso ) de evaluar una expresión. 

Es la instrucción que permite tomar una decisión, basada en una condición.

En inglés "if" significa "si..." (condicional, sería "si pasa tal cosa"). Es la única manera de crear dos caminos en la ejecución de un programa

  • La sentencia if, existe en TODOS los lenguajes de programación
  • if es una palabra clave o reservada

Esta sentencia permite tomar uno de dos caminos posibles, esto quiere decir que permite una bifurcación en el flujo de ejecución de un script.

3. Condicional Simple: if

Al evaluar la condición, la instrucción if puede devolver solo dos resultados posibles: Verdadero o Falso.

Condicional Simple

Cuando la estructura de condicional if sólo tiene una alternativa (siempre debe ser por verdadero). 

En ese caso su sintaxis es  la siguiente: 

La ejecución de esta construcción es la siguiente:

  • La condición de if se evalúa siempre:
  • Si el resultado es True se ejecuta el bloque de sentencias (en color azul)
  • Si el resultado es False NO se ejecuta el bloque de sentencias (en color azul)

La primera línea contiene la condición a evaluar, que es una expresión lógica. Esta línea debe terminar siempre por dos puntos (:).

Observación: Un bloque de sentencias es un conjunto de líneas que tienen el mismo nivel de sangrado.

Veamos cómo sería de manera gráfica:

3.1. Ejemplos de uso del condicional simple

Consigna 1:

Ingresar un número e informar si es positivo

1 numero = int(input("Escriba un número positivo: "))
2 if numero <0:
3    print("Se pedía un número negativo!!!!")#dentro del if!
4          
5 print("Ingresó en nro: {}".format(numero))

Consigna 2:

Ingresar un número e informar si es par

1 numero = int(input("Ingrese un nro. entero: "))
2 if numero %2 == 0:# Si el módulo o resto de dividir por 2 es cero=>es par
3    print("El numero es Par!!!!")#dentro del if!
4 print("Fin del scrip.. ")#esta línea está fuera del if y siempre se ejecuta.

4. Condicional doble: if...else

La estructura de control if ... else ... permite que un programa ejecute un bloque de instrucciones cuando se cumple una condición y otro bloque de instrucciones cuando no se cumple esa condición.

En inglés "if" significa "si" (condición) y "else" significa "si no".

La instrucción en Python se escribe así:

La ejecución de esta construcción es la siguiente:

  • La condición se evalúa siempre:
    • Si el resultado es True se ejecuta solamente el bloque de sentencias azul
    • Si el resultado es False se ejecuta solamente el bloque de sentencias verde

Veamos un ejemplo:

  1. numero = int(input("Ingrese un nro. entero: "))
  2. if numero %2 == 0:# Si el módulo o resto de dividir por 2 es cero => parv
  3.     print("El numero es Par!!!!")#dentro del if!
  4. else:#Si if evalúa  FALSE voy por else, else tiene condición a evaluar !
  5.     print ("El número es impar!) 
  6. print("Fin del scrip.. ")#esta línea está fuera del if/else siempre se ejecuta.

         

En este caso,  si el condicional if evalúa verdadero, se ejecuta la línea 3. Si el condicional if evalúa en falso, se ejecuta la línea 5.

Este es un caso particular, donde por verdadero se ejecuta una línea (la 3) y por falso otra (la 5), pero podrían existir bloques de sentencias o conjuntos de sentencias (no solamente una línea).

Observaciones:

  1. Ver que tanto if como else terminan con (dos puntos)
  2. Ver que else NO tiene condición para evaluar; es decir, el bloque de instrucciones después de él se ejecuta siempre que la condición del if precedente haya resultado False.
  3. Siempre se ejecutan sentencias, ya sea por el verdadero o por el falso.

4.1. Ejemplos de uso del condicional doble

Consigna 1:

Ingresar la edad de una persona y determinar si es o no mayor de edad

edad = int(input("¿Cuantos años tiene?:"))
if edad <18:# si la edad es menor que 18
    print("Ud. es menor de edad")# Si la evaluación es verdadera
else:#No tiene condición a evaluar el else!
    print ("Ud. es mayor de edad")
print("Fin del scrip.. ")#esta línea está fuera del if/else siempre se ejecuta.

Consigna 2:

Ingresar dos números y mostrar cuál es el mayor.

a = float(input("Ingrese un número: "))
b = float(input("Ingrese otro número: "))
if a > b:
    print("El primer número {} es mayor que el segundo {}.".format(a,b))
else:#No tiene condición a evaluar el else!
    print("El segundo número {1} es mayor que el primero {0}.".format(a,b))
print("Fin del scrip.. ")#esta línea está fuera del if/else siempre se ejecuta.

        

 Responder: 

¿Qué sucede con el codigo anterior si ambos números ingresados son iguales? ¿la respuesta es correcta? ¿se le ocurre alguna manera de solucionarlo?

5. Condicional múltiple: if ... elif ... else

La construcción if ... else ... se puede extender añadiendo la instrucción elif:

La estructura de control if ... elif ... else ... permite encadenar varias condiciones.

elif es una contracción de las expresiones else if.

La instrucción en Python se escribe así:

Se interpreta de la siguiente manera:

  • Si se cumple la condición 1, se ejecuta el bloque 1
  • Si no se cumple la condición 1 pero sí que se cumple la condición 2, se ejecuta el bloque 2
  • Si no se cumplen ni la condición 1 ni la condición 2, se ejecuta el bloque 3.

Obervaciones:

  1. Hay  dos condiciones a evaluar, tanto para el if como en elif

  2. else es el que NO tiene condición a evaluar.

  3. Se pueden escribir tantos bloques elif como sean necesarios. El bloque else (es opcional) se ejecuta si no se cumple ninguna de las condiciones anteriores.

Este conjunto de sentencias se podría reemplazar por algo mas complejo SOLO utilizando if-else como ser:

if condición_1:
    bloque 1
else:
    if condición_2:
        bloque 2
    else:
        bloque 3


5.1. Ejemplos de uso del condicional múltiple

Consigna 1:

Ingresar un número e informar si es positivo, negativo o cero.

a = float(input("Ingrese un número: "))
if a > 0:
    print("El número {} positivo.".format(a))
elif a<0:
    print("El número {} negativo.".format(a))
else:#No tiene condición a evaluar el else!
    print("El número {} es cero.".format(a))
print("Fin del scrip.. ")#esta línea está fuera del if/else siempre se ejecuta.

Consigna 2:

Ingresar un número e informar si es múltiplo de 2 o de  3.

a = float(input("Ingrese un número: "))
if a %2 == 0:
    print("El número {} es PAR.".format(a))
elif a%3== 0:
    print("El número {} es multiplo de 3.".format(a))
else:#No tiene condición a evaluar el else!
    print("El número {} no es múltiplo ni de 2 ni de 3.".format(a))
print("Fin del scrip.. ")#esta línea está fuera del if/else siempre se ejecuta.

 tener en cuenta: NO es lo mismo para python el símbolo == al =

en la consigna 1, ¿qué pasa si ingreso una letra en lugar de un número?

en la consigna 2, ¿Cuál es la condición evaluada en la línea del elif? ¿Qué pasa si se ingresa el valor 6? ¿Es correcta la salida?

¿Cómo sería el código correcto para la consigna 2 si se ingresa un número divisible por 2 y por 3?

5.2. Ejercicios con if/elif/else

1- Se ingresa por teclado la edad de Juan y Pedro y quiero saber quien es mayor y por cuantos años.

2- Se ingresan X e Y por teclado y quiero saber si X es múltiplo de Y y si X es par.

3-Se ingresan por teclado 4 numeros enteros. Mostrar el mayor número ingresado.

4-Se ingresa X e Y, se necesita saber cual es el mayor y que porcentaje es el menor del mayor.

5-Se ingresan las extremos de un intervalo (A,B], luego se inrgesa x. Se debe decir si

x pertenece al intervalo (A,B].


6. Condición no booleana

Dado que cualquier variable puede interpretarse como una variable booleana, si la condición es una comparación con cero, podemos omitir la comparación.

El programa siguiente informa si un número ingresado es par o impar.

El código podría ser:

a = float(input("Ingrese un número: "))
if a %2 != 0:#Compara con cero.
    print("El número {} es IMPAR.".format(a))
else:#No tiene condición a evaluar el else!
    print("El número {} es PAR.".format(a))
print("Fin del scrip.. ")#esta línea está fuera del if/else siempre se ejecuta.

Pero, teniendo en cuenta que siempre se evalúa si la condición es verdadera (1 o True), el código anterior se podría simplificar omitiendo la comparación (!=) y así, la condición será evaluada como una variable booleana.

a = float(input("Ingrese un número: "))
if a %2 :#Ver que el resto de a/2 es cero si es par=> if 0 cero es falso si es par.
    print("El número {} es IMPAR.".format(a))
else:#No tiene condición a evaluar el else!
    print("El número {} es PAR.".format(a))
print("Fin del scrip.. ")#esta línea está fuera del if/else siempre se ejecuta.


¿Qué hace este código? 

numero = int(input("Numero: "))
if numero:
    print("es uno")
else:
    print("es cero")

Escribir un script que permita el ingreso de un número e informe si es divisible por 2 o por 3 utilizando las condiciones sin el  !=

7. Operador not

El operador not se puede usar sobre operaciones booleanas. Ya vimos en la sección anterior que en la comparación se omitía el == 0.

Veamos algo sobre eso.

a = float(input("Ingrese un número: "))
if not a %2 :#Ver que el resto de a/2 es cero si es par=> if 0 cero es falso si es par.
    print("El número {} es PAR.".format(a))
else:#No tiene condición a evaluar el else!
    print("El número {} es IMPAR.".format(a))
print("Fin del scrip.. ")#esta línea está fuera del if/else siempre se ejecuta.

Analicemos la línea del if: 

Vemos que NO existe el símbolo igual, por lo tanto,  si a%2 (el resto de la división) da cero, esto es lo mismo que decir que es igual a False, el cero representa el False, por lo tanto si lo niego sería True o verdadero.

 

8. Try Except Else (Excepciones)

De los errores se aprende ... O se debería aprender...

Hasta ahora los mensajes de error no habían sido más que mencionados, pero si probaste los ejemplos probablemente hayas visto algunos. 


En el mundo de la programación, hay tres tipos de errores:

  • Errores de sintaxis
  • Errores de ejecución o excepción
  • Errores de programación o lógicos.

Los errores en los programas pueden tener consecuencias muy serias. Si es un programa que suma dos números sin duda no será muy desastrosa, pero es importante tener en cuenta que los fallos cuando se ejecuta un programa deben ser evitados a toda costa.

Solo a modo de comentario, van algunas fallas de software que ocasionaron problemas memorables:

  • Dinero: Knight Capital

En agosto de 2012, un error de programa casi provocó la quiebra de la empresa de inversión Knight Capital. La compañía perdió 500 millones de dólares en media hora debido a que sus computadoras comenzaron a comprar y vender millones de acciones sin ningún tipo de control humano.

  • Medicina: radioterapia

Un error de programación de la unidad de control de la máquina de radioterapia Therac-25 causó entre 1985 y 1987 al menos seis accidentes en los que los pacientes recibieron sobredosis masivas de radiación. Al menos tres de estos pacientes fallecieron como consecuencia directa del exceso de radiación.

  • Internet: Amazon

La desactivación de los servidores del gigante de Internet Amazon el verano de 2012 privó a muchas personas de sus datos almacenados en la nube. El accidente, causado inicialmente por una fuerte tormenta, se agravó repentinamente debido a varios errores del 'software' que provocaron un fallo de programación en cadena.

  • Infraestructura: apagón en el noreste de EE.UU.

En agosto del 2003 varios estados del noreste de EE.UU. y la provincia canadiense de Ontario se quedaron sin luz debido a un corte de energía resultado de un accidente local. El accidente pasó desapercibido a causa de un fallo del software de vigilancia del funcionamiento de General Electric Energy y provocó una cadena de errores.

  • Transporte: Aerolínea American Airlines

En 2013, un error de programación provocó el caos en la compañía de aviación American Airlines. La unión de dos sistemas como resultado de la fusión de varias compañías aéreas originó un fallo en el sistema de reserva de pasajes. Concretamente, el problema surgió con toda probabilidad cuando se intentó unificar plataformas escritas en diferentes lenguajes de programación.

  • Justicia: liberación anticipada de delincuentes

En octubre de 2005 se informó que 23 presos del Departamento de Correccionales de Michigan (EE.UU.) habían sido puestos en libertad antes de que finalizara su condena debido a un fallo de programación informática. Como resultado, los delincuentes salieron de prisión entre 39 y 161 días antes de lo previsto.

8.1. Errores de Sintaxis

Los errores de sintaxis, también conocidos como errores de tipeo o escritura. 

La gran mayoría de las veces que un SyntaxError que apunta a una línea sin interés significa que hay un problema en la línea anterior (en este ejemplo, es un paréntesis el que falta):

def my_print():
  x = (1 + 1
  print(x)

Al tratar de ejecutar el script tiraría un error:

  File "<input>", line 3
    print(x)
        ^
SyntaxError: invalid syntax

Ver que si bien indica que el error es en la línea 3, en realidad es justo en la línea anterior, la 2 donde falta el ).

Esto sería si se ejecuta desde el interprete del Python, pero si lo hacemos desde el Spyder o cualquier otra IDE tendremos aún mas ayudas.

Veamos unos ejemplos:

pint('Hola Mundo')#MAL !!, puede determinar el por que?
print('Hola Mundo)#MAL !!,, puede determinar el por que?
print('Hola Mundo")#MAL !!, puede determinar el por que?
Print('Hola Mundo')#MAL !!, puede determinar el por que?
print('Hola Mundo')#Bien!!
print("Hola Mundo")#Bien!!


Responder: ¿Cuándo se producen los errores de sintaxis?

  1. Se producen cuando el intérprete no puede ejecutar algo.
  2. Se producen cuando nosotros escribimos mal algo y el intérprete no lo entiende.
  3. Se producen cuando la conexión con el intérprete es interrumpida.
  4. Ninguna de las anteriores es correcta.

8.2. Errores de lógica

En programación, los errores de lógica son los más difíciles de detectar. Cuando un programa no tiene errores de sintaxis ni errores de ejecución, pero, aún así, no funciona bien, esto es debido a la existencia de algún error lógico. De manera que, un error de lógica se produce cuando los resultados obtenidos no son los esperados.

Suelen presentarse tres situaciones comunes.

1) El programador asume que lo que pensó y programó es correcto y no es capaz de notar el error, por mas evidente que sea. En estos casos uno le pide a otro programador que lo vea o vuelve a mirar el código al cabo de un tiempo, y le resulta imposible entender como no vio el error.

2) El error se produce en casos de ingreso de datos muy particulares, por ejemplo, si el código realiza  => a/b  funcionaría bien, salvo que b=0. Esto requiere de práctica del programador para intuir los valores que pueden desnudar este error. En estos casos el programa funciona bien y no tira errores, salvo para casos particulares.

3) Error de lógica propiamente dicho, es un error en la lógica planteada, dada por una mala interpretación de la consigna o por que simplemente planteamos mal la lógica Algorítmica. Por ejemplo, podemos ordenar una Matriz con algún criterio, pero si no está cargada no podremos hacerlo, o sea que primero debemos cargar la matriz y luego ordenarla; si no lo hacemos en ese orden sería un error de lógica.

Errores de semántica o lógicos se refieren a cuestiones de la lógica de la solución planteada.


Ejemplo de un error lógico haciendo una analogía en el lenguaje Español de lo que sería un error de Semántica:

"Juan se fue a Casar al Bosque". (Asumiendo que se escucha decir esto a alguien, ya que casar y cazar son distintos)

En este caso no queda claro si quiso decir que Juan fue al Bosque a Casarse o fue al bosque a Cazar, ¡¡¡no es menor la diferencia en la interpretación!!!

Vemos que no hay error en escritura de las palabras (Sintaxis) pero podemos afirmar que deja dudas la interpretación de la frase.

Podríamos plantear otro ejemplo mas burdo en el que no quedan dudas del error lógico o de semántica, por ejemplo: "Llovía de abajo hacia arriba", esto no tiene errores de ningún tipo, pero lógicamente no es correcto.

8.3. Errores de Excepción

Cuando un programa se está ejecutando y se produce un error, puede suceder que el programa deje de ejecutarse, esto puede ser utilizado en algunas ocasiones como un ataque, se busca llegar a esta situación para justamente hacer que el programa pierda el control.

Los errores de ejecución son llamados comúnmente excepciones y por eso de ahora en más utilizaremos ese nombre.

Durante la ejecución de un programa, si dentro de una función surge una excepción y la función no la maneja, la excepción se propaga hacia la función que la invocó, si esta otra tampoco la maneja, la excepción continua propagándose hasta llegar a la función inicial del programa y si esta tampoco la maneja se interrumpe la ejecución del programa. Veamos entonces como manejar excepciones.

Para el manejo de excepciones los lenguajes proveen ciertas palabras reservadas, que nos permiten manejar las excepciones que puedan surgir y tomar acciones de recuperación para evitar la interrupción del programa o, al menos, para realizar algunas acciones adicionales antes de interrumpir el programa.

En el caso de Python, el manejo de excepciones se hace mediante los bloques que utilizan las sentencias tryexcept.

La declaración try funciona de la siguiente manera:
Primero, se ejecuta el bloque try (el código entre las declaración try y except), aquí se ubica todo el código que pueda llegar a crear una situación de excepción.

  1.     Si no ocurre ninguna excepción, el bloque except se saltea y termina la ejecución de la declaración try o salta al bloque else si existe.
  2.     Si ocurre una excepción durante la ejecución del bloque try, el resto del bloque se saltea. Luego, si su tipo coincide con la excepción nombrada luego de la palabra reservada except, se ejecuta el bloque except, y la ejecución continúa luego de la declaración try.
  3.     Si ocurre una excepción que no coincide con la excepción nombrada en el except, esta se pasa a declaraciones try de más afuera; si no se encuentra nada que la maneje, es una excepción no manejada, y la ejecución se frena con un mensaje como los mostrados arriba.

Podríamos resumir el flujo de ejecución de la siguiente forma:




¿Qué hace exactamente el else en un try/except/else?

El bloque else se ejecuta solo si no se lanzó ninguna excepción en el bloque try. Esto permite separar el código que debería ejecutarse solo cuando todo en el try fue exitoso, manteniendo el bloque try lo más acotado posible al código que puede fallar.

Ventajas de enseñar y aplicar el else:
  1. Claridad del flujo de control.

  2. Menor riesgo de ejecutar código cuando no debería.

  3. Mejora las buenas prácticas de programación.

  4. Ayuda al debugging ( detectar errores) se puede ver claramente qué parte puede lanzar error y qué no.


En el siguiente código mostramos la manera correcta de usar try/except/else de líneas 8 a 15 , y la manera incorrecta  de usar try/except (SIN ELSE) desde la línea 20 a 25.
Se pide al alumno correr este script e ingresar letras para observar el error de la línea 25 ( sección incorrecta de la implementación).


Analicemos este  otro código muy básico:




Si se ingresa una letra, en este código, eso genera una excepción y el else (del try) NO SE EJECUTA!  (Línea 7), pero SIEMPRE se ejecuta la línea 11


Si se ingresa algo que NO genera excepción, se ejecuta el else ( del try)


Nota:

Ver que si no existe el else ( del try) y no se produce una excepción, el código que se ejecutaría luego del try sería lo que sigue al except, por lo tanto puede que en algunos casos el else no se lo va a ver en la sintaxis.


Analicemos otro código algo mas completo. 

Notar que SOLO las líneas que pueden generar una excepción están en el try!!. Aquí claramente se puede ver que el else del try se lleva la mayoría de las líneas de código que NO generan excepción. Algo interesante de destacar que es que podríamos pensar que una división por cero como la que se planea en la línea 26 generaría una excepción, pero la lógica del código se pregunta primero si b!=0 , en ese caso excluye la posibilidad de excepción:-).



 Veamos con un ejemplo.

Consigna 1: Sumar dos números ingresados por teclado



Consigna 2: Ingresar y mostrar un número entero.





Consigna 3 : Ingresar y calcular el cociente de dos valores ingresados por teclado.

Vamos a resolver la consigna pensando en que el usuario del programa puede ingresar cualquier valor, letras, números, dividir por cero lo que sea y el programa debe poder resolver cualquier ingreso posible.


Podemos ver que la excepción de la línea 10  y 11 trata el tema de ingreso de letras, si ocasionan una excepción del tipo ValueError , en la línea 14  ya que no pueden convertir un string a un flotante. Con esto resolvemos el ingreso no debido de texto.

La excepción de la línea 13 trata la excepción en con la excepción ZeroDivisionError de la línea 16 y 17.

Consigna 4. Vamos a presentar una variante de la consigna 3, donde prevenimos ñla excepción de dividir por cero con una lógica aquí USAMOS EL ELSE DEL TRY!.


Por el momento solo llegaremos hasta aquí con la excepciones, pero este tema es mas extenso.

Para el que esté interesado recurrir a:

  • https://docs.python.org/3/library/exceptions.html
  • https://docs.python.org/es/3/tutorial/errors.html

Aquí están algunas de las etiquetas de las excepciones predefinidas:

1) NameError: Esta excepción es levantada cuando el programa no puede encontrar un nombre local o global. El nombre que podría no ser encontrado está incluido en el mensaje de error.
2) TypeError: Esta excepción es levantada cuando una función se le pasa un objeto del tipo inapropiado como su argumento. Más detalles sobre el tipo incorrecto son proporcionados en el mensaje de error.
3) ValueError: Esta excepción ocurre cuando un argumento de función tiene el tipo correcto pero un valor inapropiado.
4) NotImplementedError: Esta excepción es levantada cuando se supone que un objeto apoye una operación pero no ha sido implementado aún. No deberías usar este error cuando la función dada no deba apoyar al tipo de argumento de entrada. En esas situaciones, levantar una excepción TypeError es más apropiado.
5) ZeroDivisionError: Esta excepción es levantada cuando proporcionas el segundo argumento para una operación de división o módulo como cero.
6) FileNotFoundError: Esta excepción es levantada cuando el archivo o diccionario que el programa solicitó no existe.

 ACLARACIONES

  1. El if/elif/ese no tiene NADA que ver con try/except , no son ni hermanos ni primos!!
  2. try/except son para TRATAR ERRORES DE EXCEPCIÓN.
  3. if/elif/else  son para EVALUAR CONDICIONES.
  4. Una condición es algo DISTINTO a una Excepción.
  5. Ambas estructuras producen un cambio en el flujo de ejecución de un programa, aunque por motivos muy diferentes y con finalidades totalmente distintas.

9. Ejemplo de Errores de Excepción

Bien

Esto está BIEN! el if evalúa una condición.

a = float(input("Ingrese un número entre [0,10]: "))
if a >10 or a <0:# mira si está en  xxxxxxxxxxx)0----------10(xxxxxxxxxx
    print("El ingresado {}, no pertenece al rango [0,10]".format(a))
else:#No tiene condición a evaluar el else!
    print("El número {} pertence el intervalo [0,10].".format(a))
print("Fin del scrip.. ")#esta línea está fuera del if/else siempre se ejecuta.

esto está BIEN! el if evalúa una condición.

a = float(input("Ingrese un número entre [0,10]: "))
if 0<=a and a <=10:# mira si está en  --[0 xxxxxxxx 10]-----------
    print("El ingresado {}, pertenece al rango [0,10]".format(a))
else:#No tiene condición a evaluar el else!
    print("El número {} NO pertence al intervalo [0,10].".format(a))
print("Fin del scrip.. ")#esta línea está fuera del if/else siempre se ejecuta.

Mal

Lo que sigue NO se aconseja, ya se levanta una excepción a partir de la evaluación de una condición.

Para la cátedra estaría mal, lo mencionamos por que puede ser que lo vean en algún video o solución

try:
    a = float(input("Ingrese un número entre [0,10]: "))
    if 0 > a or a > 10:# mira si está en  xxxxxxxxx)0-------------10(xxxxxxx
        raise Exception #Mal levanta una excepción por una condición!
    else:#No tiene condición a evaluar el else!
        print("El número {} pertence al intervalo [0,10].".format(a))
except Exception:
     print("El número {} NO pertence al intervalo [0,10].".format(a))
print("Fin del scrip.. ")#esta línea está fuera del if/else siempre se ejecuta.

Esto se consideraría mal, pese a que puede funcionar, es como pasar el semáforo en rojo, se puede pasar, pero no se debe pasar, así que si el alumno utiliza esta forma para levantar una excepción en la materia lo consideraremos mal. Este tipo de resoluciones aparecen en algunos videos de Youtube.

MAL

Veamos un MAL ejemplo de uso del try/except.

try:
    a = int(input("Ingrese un número: "))
    if a%2 == 0:#MAL esto NO causa excepción!!
        print( "El número es par")
    else:
        print("El número es impar")
except ValueError:
    print("El ingreso no es válido!")
 
print("Fin del scrip.. ")#esta línea está fuera del try/except

Podemos ver que de TODAS las líneas dentro del try, SOLO una puede levantar una excepción, así que vamos a poner SOLO esa línea dentro del try , para eso está el else del try.

BIEN

try:
    a = int(input("Ingrese un número: "))
except ValueError:
    print("El ingreso no es válido!")
else: #else del try, si no hay excepción se ejecuta
    if a%2 == 0:#MAL esto NO causa excepción!!
        print( "El número es par")
    else:#else del if.
        print("El número es impar")
    
print("Fin del scrip.. ")#esta línea está fuera del try/except


BIEN

En este ejemplo se puede ver el buen uso del  else del try.

try:
    a = int(input("Ingrese un número: "))
    b = int(input("Ingrese un otro: "))
except ValueError:
    print("El ingreso no es válido!")
else:
    if a%b == 0:
        print("{} divide a {}".format(b,a))
    else:
        print("{} NO divide a {}".format(b,a))   
print("esta línea está fuera del try/except/else")
Si se ejecuta este script, y se ingresa una letra en lugar de un número el script NO VA a tirar error

Veamos un error común al NO usar el else del try.

MAL


try:
    a = int(input("Ingrese un número: "))
    b = int(input("Ingrese un otro: "))
except ValueError:
    print("El ingreso no es válido!")
if a%b == 0:
    print("{} divide a {}".format(b,a))
else:
    print("{} NO divide a {}".format(b,a))   
print("esta línea está fuera del try/except/else")

Esté código si se ingresa un letra para el valor de a NO va a funcionar, va a tirar un error en la línea:

if a%b == 0:

por que a NO está definido !!!

Se pide al alumno analizar detenidamente esta mala implementación!!!




10. Preguntas

Pregunta 1:

Dado el siguiente código:

if(a):
    print(a)
print(“Siguiente instrucción”)


¿Qué se obtiene como valores de salida del programa si inicializamos la variable a con False?

  1. False y Siguiente instrucción
  2. Siguiente instrucción
  3. False
  4. a y Siguiente instrucción


Pregunta 2:
¿Para qué se utilizan los bloques indentados en Python?

  1. La indentación se utiliza sobre todo para ordenar código y hacer que la visualización de este sea más sencilla.
  2. La indentación sirve para definir los bloques de código y cómo trabajar con ellos.
  3. La indentación sirve para realizar un control de errores en el código.
  4. Ninguna de las anteriores es correcta.

Pregunta 3:

Con respecto a la condición “else”...

  1. Se pueden añadir condiciones secundarias adicionales al “else” que se deben de cumplir para que se ejecute el código que depende de él
  2. Se utiliza para dar una opción más al programa si no se cumple la condición del “if”.
  3. La 1 y la 2 son correctas.
  4. Ninguna de las anteriores es correcta.

Pregunta 4:

Dado el siguiente código:

num=18
intNum=int(num) 
if (intNum%3==0): 
    print(num/3)


¿Qué se imprimirá en la pantalla?

  1. Nada
  2. 18
  3. 6
  4. dará un error

Pregunta 5:

Dado el siguiente código:
try: 

  aux=0 
  aux2='2'+2 
except: 
  print('fallo')
  1. No llegaría a ejecutarse nada de código dado que este falla.
  2. Se ejecutaría el bloque try hasta que diera un error y entonces se ejecutaría el bloque except.
  3. Solo se ejecutaría el código del bloque del except.
  4. Solo se ejecutaría el código del bloque del try.
Pregunta 6:
¿Puede indicar si este código es correcto?

try:
    x=int(input("Ingrese x:"))
except ValueError:
    print("El valor ingresado NO es entero!")
print("Ud. ingresó {}".format(x))
Probar este script ingresando primero un número y luego una letra. 
¿Que error tira?, Que correción cree que debería hacerse?

Pregunta 7:
Probar este script ingresando primero un número y luego una letra. 

try:
    x=int(input("Ingrese x:"))
except ValueError:
    print("El valor ingresado NO es entero!")
else:
    print("Ud. ingresó {}".format(x))
¿Tira algún error?, ¿Que modificación tiene el código con respecto al anterior?

11. Ejercicios Propuestos

1) Declarar A y B como constantes.

Ingresar x y determinar  si pertenece  al intervalo [A,B]

**************************************************

2) Ingresar A y B por teclado.

Ingresar x y determinar  si pertenece  al intervalo [A,B]

**************************************************

3) Ingresar una letra por teclado y decir si corresponde a :

A,B,C,F ó f ( algo como un menú)

Realizar el ejercicio con dos variantes, usando

  • if-elif-else
  • if-elif-else con   AND y OR

**************************************************

4) Definir como constantes MAX y MIN con valores de 50 y 25 respectivamente. MAX y MIN se conocen como constantes simbólicas

  • Ingresar una temperatura temp por teclado y decir :
  • hace calor ( cuando es igual o superior a 50 temp>=50)
  • esta templado cuando es mayor o igual a 25 y menor que 50.(25 <=temp , temp<50)
  • hace frio si es menor a 25 (temp<25) 

¿Que pasa si en lugar de usar MAX y MIN se ponen 50 y 25? Tiene beneficios?

¿Que pasa si el templado incluye a 50 y el calor también? calor :[50,infinito] , templado: [25,50]

**************************************************

5) Ingresar una letra por teclado y decir si es mayùscula o minúscula o si es un dígito usando if-else. 

Sugerencia: Mirar  la tabla ASCII

**************************************************

6) Escribir un programa que defina en un string un texto que sería una contraseña. Luego por teclado se pide al usuario que ingrese una contraseña e imprima por pantalla si la contraseña introducida por el usuario coincide con la guardada en la variable sin tener en cuenta mayúsculas y minúsculas.

Recomendación ver este link

**************************************************

7) Escribir un programa que pregunte al usuario su edad y muestre por pantalla si es mayor de edad o no. Recuerde que se considera mayor de edad una persona cuando tiene más de 18 años.

*************************************************

8) Escribir un programa que pida al usuario dos números y muestre por pantalla su división. Si el divisor es cero el programa debe mostrar un error utilizando try/except.

**************************************************

9) Solicitar el ingreso de un nro., el programa deberá  indicar si el número ingresado es múltiplo de 7.

**************************************************

10) Los alumnos de un curso se han dividido en dos grupos A y B de acuerdo al sexo y el nombre.

El grupo A esta formado por las mujeres con un nombre anterior a la M y los hombres con un nombre posterior a la N

El grupo B por el resto.

Escribir un programa que pregunte al usuario su nombre y sexo, y muestre por pantalla el grupo que le corresponde.

**************************************************

11) Escriba un programa que pregunte primero si se quiere calcular el área de un triángulo rectángulo o la de un círculo. Si se contesta que se quiere calcular el área de un triángulo (escribiendo T o t), el programa tiene que pedir entonces la base y la altura y mostrar el área. Si se contesta que se quiere calcular el área de un círculo (escribiendo C o c), el programa tiene que pedir entonces el radio y mostrar el área.

Se recuerda que el área de un triángulo es base por altura dividido por 2 y que el área de un círculo es Pi (aproximadamente 3,141592) por el radio al cuadrado.

Nota: Utilice como valor de pi el valor 3.141592.

**************************************************

12) Escriba un programa que pida dos números y que muestre cuál es el menor y cuál el mayor o que escriba que son iguales.

**************************************************

13) Pedir por pantalla el ingreso de dos números x e y. Luego indicar si x es divisible por y. Mostrar error si el divisor es cero utilizando try/except.

x (dividendo) /y (divisor)

**************************************************

14) Escriba un programa que pida tres números y que muestre por pantalla:

si son los tres iguales

si hay dos iguales

si son los tres distintos.

**************************************************

15) Escriba un programa que pida un año y que escriba si es bisiesto o no.

Se recuerda que los años bisiestos son múltiplos de 4, pero los múltiplos de 100 no lo son, aunque los múltiplos de 400 sí.

A continuación se muestran años bisiestos para que se pueda probar el código.

1904     1908     1912     1916     1920     1924     1928     1932     1936     1940     1944     1948
1952     1956     1960     1964     1968     1972     1976     1980     1984     1988     1992     1996

**************************************************

16) a) Escribir un script en Python que permita resolver una ecuación de primer grado. Se debe pedir a y b , donde f(x) =a·x+b. Observar que se deben analizar los posibles valores de a y b para poder encontrar la solución.

**************************************************

16) b) Se tiene una escala de calificaciones que se desea modificar por otra escala.

Los valores [0,10], deben ser mapeados a una escala con 5 rangos.

[0,4] => R  (de Reprobado)

(4,6) => D  (de Desaprobado)

[6,7) =>A (de Aprobado)

[7,8) =>B (de Bueno)

[8,10] =>E (de Excelente)

**************************************************

17) Se pide hacer un script en Python que permita ingresar un dígito (número) y luego mostrar la palabra que describe el dígito. Si ingreso 3, debería mostrar por pantalla Tres. Se puede usar try/except para detectar la posibilidad de que se ingrese un carácter del tipo letra.

**************************************************

18) Crear un script en Python que permita seleccionar R de Radianes o G de Grados y luego me convierta el valor ingresado al especificado. Si ingreso R me convierte el valor ingresado a G y si Ingreso G me convierte el valor ingresado a R.

**************************************************

19) Crear un menú que pida el ingreso de:

/ )Dividir

* )Multiplicar

- )Restar

+ ) Sumar.

Luego de la selección se pedirá el ingreso dos números, a y b y mostrará el resultado de la operación elegida utilizando a y b. Se pide usar try/except para identificar la división por cero.

**************************************************

20) Ingresar un número C y determinar si pertenece al intervalo cerrado [A,B] con A y B ingresados por teclado.

Mostrar por pantalla si pertenece o no al intervalo. Tener presente que no necesariamente el primer nro. ingresado va a ser menor que el segundo.

**************************************************

21) Se leen dos valores enteros A, B. Si A es mayor que B se realiza la suma de ambos, caso contrario, se hace el producto y se muestra el resultado en pantalla ademas de la operación realizada (“suma” ó “producto”).

**************************************************

22) Diseñe un programa que:

-  Permita la carga por teclado de los lados de un rectángulo y el radio de un círculo.

-  Determine el área de cada figura.

-  Muestre en pantalla el área mayor y a qué figura pertenece.

**************************************************

23) Escribir un algoritmo que dado un importe de dinero ( que se ingresa por teclado), calcule e informe cuánto corresponde pagar de impuesto, en cuántas cuotas y el valor de las mismas.  

Tener en cuenta los siguientes datos:           

El IMPUESTO es el 10% del importe dado.           

Si el importe es mayor que $500 y menor o igual que $1000, se paga en dos cuotas.           

Si el importe es mayor a $1000 en tres cuotas

**************************************************

24) Diseñe un algoritmo que permita ingresar dos valores X e Y . Determinar que porcentaje es X de Y si Y>X , que porcentaje es Y de X si X>Y. Si ambos son iguales deberá mostrar un cartel por pantalla indicando que ambos son iguales.

**************************************************

25) Escribir un algoritmo que permita ingresar tres números distintos entre si e imprima el mayor de ellos, utilizando if y sus variantes.

**************************************************

26) Ingresar A y B por teclado.

Ingresar x y determinar  si  x está antes de A y después de B.

Obs. Notar que en este caso podrían ser números  o letras.


**************************************************

27)  Desarrollar un programa que permita realizar la suma de dos horas distintas (HH, MM, SS). Tener en cuenta que si la hora supera 24 se debe contar un día.

**************************************************

28)  El promedio de las prácticas para un alumno de un curso se calcula en base a cuatro notas de las cuales se elimina la nota menor y se promedian las tres notas más altas. Escriba un programa que determine la nota eliminada y el promedio de un estudiante.


12. Ejercicios Propuestos 2

1) Día de la Semana

Pide un número del 1 al 7 e imprime el día de la semana correspondiente (1: Lunes, 2: Martes, etc.). Si el número no está en ese rango, muestra "Error".Considerar que si se ingresa una letra en vez de un numero se deber mostrar el mensaje de error correspondiente.

2) Aprobado o Reprobado

Ingresa una nota [0-10] y muestra "Aprobado" si es >= 6, "Reprobado" si es < 6, y "Excelente" si es >= 9. Si se ingresa un número fuera del rango se indica que es un error y finaliza el programa. Considerar que si se ingresa una letra en vez de un numero se deber mostrar el mensaje de error correspondiente.

3) Contraseña.
Pide al usuario Declarar un string de nombre contrasenia. Luego al ejecutra el script le debe pedir que ingrese la contraseña. Si coincide con la declarada, muestra por pantalla "Acceso permitido"; de lo contrario, "Acceso denegado".

4) Tipo de Triángulo
Pide inrgesar las longitudes de 3 lados de un triángulo  e indica si es:

  •     Equilátero (3 lados iguales).
  •     Isósceles (2 lados iguales).
  •     Escaleno (ningún lado igual).

Considerar que si se ingresa una letra en vez de un numero se deber mostrar el mensaje de error correspondiente.

5) Conversión de Temperatura
Pide una temperatura y su unidad (C o F). Convierte:

  •     Celsius a Fahrenheit: F = (C * 9/5) + 32.
  •     Fahrenheit a Celsius: C = (F - 32) * 5/9.

Muestra el resultado por pantalla o un error si la unidad no es válida ( C ó F) .
Considerar que si se ingresa una letra en vez de un numero se deber mostrar el mensaje de error correspondiente.

6) Signo Zodiacal Simple

Pide un mes (1-12) y un día, e indica el signo zodiacal aproximado (ej: si es mes 3 y día >= 21, "Aries"). Usa solo condiciones para 2-3 signos. Considerar que si se ingresa una letra en vez de un numero se deber mostrar el mensaje de error correspondiente.

7) Descuento en Tienda

Pide ingresar el monto de una compra. Si es >= 100,aplica un 10.50% de descuento,  pero si es < $100, se aplica un 5%. Muestra el total a pagar. Considerar que si se ingresa una letra en vez de un numero se deber mostrar el mensaje de error correspondiente.


13. Ejercicios Resueltos-Integradores

A continuacion se desarrollan ejercicios sobre el tema condicionales resueltos.-

13.1. Plano Cartesiano

PROBLEMA

Es sabido que un plano cartesiano se divide en cuatro cuadrantes Diseñar un pequeño programa que permita indicar al usuario, a qué cuadrante corresponde las coordenadas de un punto de su interés

¿Existe algún punto especial a considerar?

SOLUCION

13.2. Distancias

PROBLEMA Se necesita un pequeño programa que permita determinar de forma rápida si un punto se encuentra dentro sobre o fuera de un círculo centrado en el origen de coordenadas Para ello, se solicita al usuario las coordenadas del punto a analizar y el radio del círculo

¿Necesito algún dato extra para llegar a la solución?

¿Necesito conocer alguna herramienta matemática?

PROBLEMA Tomando la solución del problema anterior, generalizar el programa bajo las siguientes pautas

El usuario puede indicar si el círculo no está centrado en el origen de coordenadas

De acuerdo al caso, solicitar los datos extra necesarios

Como se trata de un círculo ¿Podría permitir una opción para solicitar el centro y un punto sobre la circunferencia? De esta forma el usuario no necesita calcular el radio, si así lo prefiere.

SOLUCION

13.3. Triángulos

PROBLEMA

Es sabido que un triángulo se forma con tres segmentos o lados de una determinada longitud Pero, dados 3 segmentos de longitud cualesquiera, no siempre es posible construir un triángulo  Implemente un código que permita validar si a partir de 3 segmentos A B y C los mismos representan los lados de un triángulo válido

¿Necesito conocer algo en particular para plantear una solución?
“Un triángulo existe solo cuando la suma de dos de sus lados es mayor que el tercero”

SOLUCION

13.4. Contraseña

PROBLEMA

Escribir un programa que defina en un string un texto que sería una contraseña. Luego por teclado se pide al usuario que ingrese una contraseña e imprima por pantalla si la contraseña introducida por el usuario coincide con la guardada en la variable sin tener en cuenta mayúsculas y minúsculas.

Observación ver :https://www.w3schools.com/python/ref_string_lower.asp

SOLUCION

13.5. Intervalo

PROBLEMA

Determinar si un valor X pertenece al intervalo [A, B]


SOLUCION

¿Qué pasa si [A, B] no están en orden?

Debo agregar una condición para verificar el intervalo.

a,b = b,a 

   

13.6. División

PROBLEMA

Escribir un programa que pida al usuario dos números y muestre por pantalla su división. Si el divisor es cero el programa debe mostrar un error utilizando try/except.

SOLUCION

13.7. Grupos

PROBLEMA

Los alumnos de un curso se han dividido en dos grupos A y B de acuerdo al sexo y el nombre.

El grupo A esta formado por las mujeres con un nombre anterior a la M y los hombres con un nombre posterior a la N. El grupo B por el resto.

Escribir un programa que pregunte al usuario su nombre y sexo, y muestre por pantalla el grupo que le corresponde.

SOLUCION

13.8. Menú

Consigna

"""
Consigna: Se desea presentar un menú de la siguiente forma:

Opcion A
Opcion B
Opcion C
Opcion D

Mostrar por pantalla la opción elegida por el usuario.
"""
1er Solución :


Ver que esta solución anterior no contempla el ingreso de letras minúsculas y mayúsculas. Veamos como solucionarlo.


Vemos como escribir menos líneas usando el or y \n.



Podemos ver como el uso del or y de \n permite disminuir la cantidad de línea de código.

13.9. Múltiplos

Consigna: Se ingresa dos números enteros por teclado.  Mostrar si son múltiplos.

1er Solución:

Vemos que esta solución tiene dos problemas , 1, si A<B no funciona, ejemplo ingresando 3 y luego 6 indica que no son múltiplos, por otro lado si B=0, generaría un error, no se puede dividir por cero, recordemos que A%B, me permite ver el resto de la división A/B. Veamos como solucionarlo.