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: lunes, 22 de julio de 2024, 12:53

1. Contenidos

IF-ELSE , Condicionales. If-Else. Tipos de Errores. Try-Except.

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

Consigna 2:

Ingresar un número e informar si es par

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:

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

Consigna 2:

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

 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.

Consigna 2:

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

 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 15? ¿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?

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:

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.

¿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.


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 (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:

Podemos ver que el color de print en la línea 9 no es violeta. Lógicamente está mal, así que debemos prestar atención a los colores.

La línea 11 tiene el mismo problema, Print NO es una palabra del lenguaje Python, si lo es la palabra print.

La línea 10, se puede ver un símbolo de atención, si ubicamos el mouse sobre el símbolo de advertencia nos dirá algo respecto el Fin del String. Evidentemente nos falta el ' para cerrar el string.

Finalmente la línea 12, es correcta. Veamos que errores tira si ejecutamos este código:

  print('hola)
                ^
SyntaxError: EOL while scanning string literal

Como el lenguaje Python es INTERPRETADO, se ejecuta sentencia a sentencia hasta que encuentra un error; allí se detiene, es por eso que no nos marca los demás errores.

Si queremos llegar a las otras líneas 10,11,12 debemos corregir el error de la línea 9.

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:


Veamos este código:




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.

 Veamos con un ejemplo.

Consigna 1: Calcular el cociente de dos valores ingresados por teclado.

¿Qué sucede si el programa está esperando un número válido y esto no sucede?


Consigna 2:

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 40 trata el tema de ingreso de letras, las líneas 36 y 37, tirarían una excepción del tipo ValueError, 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 42 trata la excepción que se podría generar en la línea 39 , el tercer argumento del format, si fuera el caso de que b=0 y se generara una excepción del tipo ZeroDivisionError.

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

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


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



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

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.

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?
probar este script ingresando una letra. 
¿Que error tira?
La solución sería:

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 Resueltos-Integradores

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

12.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

12.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

12.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

12.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

12.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 

   

12.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

12.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

12.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.

12.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.