IWI131 Programación


Condiciones y Estructuras condicionales



Departamento de Informática
Universidad Técnica Federico Santa María

Operadores relacionales

Comparan valores. Operandos pueden ser cualquier expresión que pueda ser comparado. Resultado siempre es un valor lógico.

  • igual a (==)
  • distinto a (!=)
  • mayor que (>)
  • menor que (<)
  • mayor o igual que (>=)
  • menor o igual que (<=)
In [1]:
5 == 3
Out[1]:
False
In [2]:
4 > 7
Out[2]:
False
In [3]:
4 != 3
Out[3]:
True
In [4]:
"casa" == 'casa'
Out[4]:
True
In [5]:
3 > 3
Out[5]:
False
In [6]:
"a" < "z"
Out[6]:
True

Operadores lógicos

Tienen operandos y resultado de tipo lógico.

  • conjunción lógica and
  • disyunción lógica or
  • negación lógica not
In [7]:
3 == 5 and False
Out[7]:
False
In [8]:
3!=5 or False
Out[8]:
True
In [9]:
not True
Out[9]:
False
In [10]:
(False or (not False)) and (not True)
Out[10]:
False
In [11]:
((3 + 4) < 2) or ((2**4) >= 4)
Out[11]:
True
In [12]:
((3 + 4) < 2) and ((2**4) >= 4)
Out[12]:
False

Sentencias Condicionales

Condicional if

La sentencia if ejecuta las instrucciones solo si se cumple una condición. Si la condición es falsa no se hace nada

Sintaxis:

if condicion:
    sentencias

Sintaxis:

if condicion:
    sentencias

La Tabulación/Sangría después de la instrucción if indica que cosas se realizarán si se cumple la condición. Esto se llama Indentación.

La indentación es equivalente a utilizar el espacio de rompecabezas interno en bloque if de Trinket (después de do).

In [2]:
from IPython.display import IFrame
IFrame('https://trinket.io/embed/blocks/b2e558ce40?hideGeneratedCode=true', width="75%", height=300)
Out[2]:

Condicional if: Diagrama de flujo explicativo

Ejemplos

In [14]:
nota = int(input("Ingrese su nota: "))
if nota >= 55:
    print("Felicitaciones!!!")
Ingrese su nota: 55
Felicitaciones!!!
In [15]:
nota = int(input("Ingrese su nota: "))
if nota < 55:
    print("Lamentablemente Ud. ha reprobado.")
Ingrese su nota: 55

Condicional if-else

La sentencia if-else decide que instrucciones ejecutar, dependiendo si una condición es verdadera o falsa.

Sintaxis:

if condicion:
    sentencias cuando la condicion es verdadera
else:
    sentencias cuando la condicion es falsa

La indentación es equivalente a utilizar el espacio de rompecabezas interno en bloque if-else de Trinket (después de do ó else).

In [13]:
from IPython.display import IFrame
IFrame('https://trinket.io/embed/blocks/b6016326cc?hideGeneratedCode=true', width="75%", height=300)
Out[13]:

Condicional if-else: Diagrama de flujo explicativo

Ejemplos

In [16]:
edad = int(input("Cual es su edad? "))
if edad < 18:
    print("Usted es menor de edad")
else:
    print("Usted es adulto")
Cual es su edad? 25
Usted es adulto

¿Qué mensajes se muestran en el siguiente código si ingresamos...?

  1. n = 15
  2. n = 20
In [17]:
n = int(input("Ingrese un numero: "))
if n%2==0:
    print("El numero es par")
    print("La mitad del numero es",n/2)
else:
    print("El numero es impar")
    print("El sucesor del numero es",n+1)
print("Done")
Ingrese un numero: 30
El numero es par
La mitad del numero es 15.0
Done

Condicional if-elif-else

La sentencia if-elif-else depende de dos o más condiciones, que son evaluadas en orden. La primera que sea verdadera determina qué instrucciones son ejecutadas.

Sintaxis:

if cond1:
    sentencias a ejecutar si cond1 es verdadera
elif cond2:
    sentencias a ejecutar si cond2 es verdadera
elif cond3:
    sentencias a ejecutar si cond3 es verdadera
...
else:
    sentencias cuando ninguna condicion anterior es verdadera

La Indentación después de cada instrucción elif indica que cosas se realizarán si se cumple su respectiva condición (consecuentemente, si no se cumplen las condiciones anteriores)

De manera equivalente, en Trinket, cada condición tiene su propio espacio interno en el bloque de rompecabezas.

In [4]:
from IPython.display import IFrame
IFrame('https://trinket.io/embed/blocks/1c77839c3a?hideGeneratedCode=true', width="75%", height=300)
Out[4]:

Condicional if-elif-else: Diagrama de flujo explicativo

Ejemplos

  1. Escriba un programa que califique el rendimiento del alumno en una asignatura según la nota obtenida.
In [18]:
from IPython.display import IFrame
IFrame('https://trinket.io/embed/blocks/ad88304c71?hideGeneratedCode=true', width="100%", height=600)
Out[18]:
In [19]:
nota = int(input("Ingrese su nota: "))
if nota >= 80:
    print("Usted es un alumno destacado.")
elif nota >= 65:
    print("Usted ha aprobado.")
elif nota >= 55:
    print("Usted aprobó con algunas dificultades.")
elif nota >= 45:
    print("Con un poco mas de empeño hubiese aprobado.")
else:
    print("Nos vemos el próximo semestre.")
Ingrese su nota: 62
Usted aprobó con algunas dificultades.
  1. Considerar la siguiente tabla que muestra la tasa de impuesto a pagar por una persona según su sueldo.
Sueldo Tasa de impuesto
menos de 1000 0%
1000 ≤ sueldo < 2000 5%
2000 ≤ sueldo < 4000 10%
4000 o más 12%

Un ejemplo de como se calcula el impuesto sería el siguiente:

In [20]:
sueldo = int(input("Ingrese su sueldo: "))
if sueldo < 1000:
    print("caso 1")
    tasa = 0.00
elif sueldo < 2000:
    print("caso 2")
    tasa = 0.05
elif sueldo < 4000:
    print("caso 3")
    tasa = 0.10
else:
    print("caso falso")
    tasa = 0.12
print("Usted debe pagar", int(tasa*sueldo), "de impuesto.")
Ingrese su sueldo: 1050
caso 2
Usted debe pagar 52 de impuesto.

Otra forma de calcular el impuesto es la siguiente:

In [21]:
sueldo = int(input("Ingrese su sueldo: "))
if sueldo < 1000: #1000 > sueldo:
    print("caso 1")
    tasa = 0.00
if sueldo >= 1000 and sueldo < 2000: #if 1000 <= sueldo < 2000:
    print("caso 2")
    tasa = 0.05
if 2000 <= sueldo < 4000:
    print("caso 3")
    tasa = 0.10
if 4000 <= sueldo: #sueldo>= 4000
    print("caso falso")
    tasa = 0.12
print("Usted debe pagar", int(tasa*sueldo), "de impuesto.")
Ingrese su sueldo: 1050
caso 2
Usted debe pagar 52 de impuesto.

¿En qué se diferencian los dos programas anteriores?

Conclusión

  • Las estructuras condicionales nos permiten realizar labores diferentes dependiendo si se cumple alguna condición.
  • La tabulación/sangría indica que elementos se realizan al cumplir una condición. Este proceso se llama Indentación.
  • Una estructura condicional tiene al if como instrucción obligatoria.
  • Las instrucciones elif y else son opcionales. Si son utilizadas, siempre irán en compañía de un if.

Ejercicio 1

Desarrolle un programa que genere aleatoriamente el lanzamiento de una moneda e indique el resultado del éste.

In [22]:
from random import randint

moneda=randint(0,1)

if moneda==0:
    print("El lanzamiento es CARA.")
else:
    print("El lanzamiento es SELLO.")
El lanzamiento es CARA.

Ejercicio 2

Un año es bisiesto si es divisible por 4, excepto si es divisible por 100 y no por 400. Escriba un programa que reciba un año como entrada e indique True si un año es bisiesto o False si no lo es.

In [23]:
año=int(input('Ingrese año a consultar: '))

if año % 4 == 0:
    if año % 100 == 0 and año % 400 != 0:
        bisiesto = False
    else:
        bisiesto = True
else:
    bisiesto = False

print(bisiesto)
Ingrese año a consultar: 2019
False
In [24]:
year=int(input('Ingrese año a consultar: '))

if year % 400 == 0:
    bisiesto = True
elif year % 100 == 0:
    bisiesto = False
elif year % 4 == 0:
    bisiesto = True
else:
    bisiesto = False

print(bisiesto)
Ingrese año a consultar: 2019
False

Solución reducida con salida modificada:

In [25]:
a=int(input('Ingrese año a consultar: '))

bisiesto = ((a %4 == 0 and a %100 != 0) or a %400 == 0)

if bisiesto:
    print("El año", a, "es bisiesto.")
else:
    print("El año", a, "no es bisiesto.")
Ingrese año a consultar: 2019
El año 2019 no es bisiesto.

Ejercicio 3

El riesgo de que una persona sufra enfermedades coronarias depende de su edad y su índice de masa corporal:

edad < 45 edad ≥ 45
IMC < 22 bajo medio
IMC ≥ 22 medio alto

El índice de masa corporal (IMC) es el cuociente entre el peso del individuo en kilos y el cuadrado de su altura en metros.

Escriba un programa que reciba como entrada la altura, el peso y la edad de una persona, y entregue su IMC en conjunto a su condición de riesgo.

In [26]:
edad=int(input("Ingrese su edad [años]: "))
peso=float(input("Ingrese su peso [kg]: "))
alt=float(input("Ingrese su altura [m]: "))

IMC = peso / alt**2

print ("Su índice de masa corporal es:", round(IMC,2))

if IMC<22 and edad<45:
        print("Su nivel de riesgo es bajo.")
elif IMC<22 and edad>=45:
        print("Su nivel de riesgo es medio.")
else:
    if edad<45:
        print("Su nivel de riesgo es medio.")
    else:
        print("Su nivel de riesgo es alto.")
Ingrese su edad [años]: 30
Ingrese su peso [kg]: 70
Ingrese su altura [m]: 1.7
Su índice de masa corporal es: 24.22
Su nivel de riesgo es medio.

Ejercicio 3-bis

Realice un ruteo, utilizando la solución diseñada en el Ejercicio 3, para los siguientes valores de entrada:

  • Edad 50, peso 65 y altura 1.70.
  • Edad 19, peso 80 y altura 1.59.
edad peso alt IMC
50
65.0
1.7
22.49
Pantalla:
Su índice de masa corporal es: 22.49
Su nivel de riesgo es alto.

¿Cómo se vería el ruteo con otros valores de entrada?

In [ ]: