1.3. Bifurcación#

1.3.1. Contenido#

1.3.2. La estructura if-elif-else#

Enlaces

Una bifurcación en un programa es un punto en el cual existen varias opciones para continuar con su ejecución. La opción que se escoge depende de que se cumplan ciertas condiciones.

Ejemplo Cuando llegues a la esquina, si el semáforo de peatones está en verde cruza la calle. Si no, espera a que cambie a verde

La estructura de la bifurcación if es:

if (condición):
    (acción)
else:
    (acción)

Observación: El uso de else es opcional. Por ejemplo:

semaforo = 'no verde'

if semaforo != 'verde':
    print('¡Espera la luz verde!')
¡Espera la luz verde!
numero = float(input('Escriba un número: '))

if numero < 5:
    print('El número es menor que 5')

Con acción alternativa si no se verifica la condición

semaforo = 'verde'

if semaforo == 'verde':
    print('cruza')
else:
    print('espera la luz verde')
cruza
semaforo = 'no verde'

if semaforo == 'verde':
    print('cruza')
else:
    print('espera la luz verde')
espera la luz verde
numero = float(input('Escriba un número: '))

if numero < 5:
    print('El número es menor que 5')
else:
    print('El número es mayor o igual que 5')
    
print('Acabamos')

Observad el sangrado y los colores de las palabras que aparecen en el programa

1.3.2.1. Esquema de una bifurcación simple#

_images/U1-2_bifurcacion_1.jpg

1.3.2.2. Elementos de una bifurcación:#

  • Un test (expresión cuyos valores son True or False)

  • Un bloque de expresiones que se ejecutarán si el valor del test es True

  • Un bloque opcional que se ejecutará si el valor del test es False. Cuando este bloque no existe y la condición de if tiene valor False no se ejecuta ninguna expresión.

Ejercicio: Escribe un script que pregunte tu edad e imprima:

  • Eres mayor de edad, si tu edad es mayor o igual a 18. Nada en caso contrario.

  • Eres mayor de edad, si tu edad es mayor o igual a 18. En caso contrario, que imprima cuantos años aún te faltan para ser mayor de edad

1.3.3. Bifurcaciones con varias opciones#

if (condición1):
    (acción1)
elif (condición2):
    (acción2)
elif (condición3):
    (acción3)
else:
    (acción_alternativa)

1.3.3.1. Observaciones#

  1. El bloque correspondiente a la primera de las condiciones (tests) que hay en if o elif, se ejecutará y no se explorarán más posibilidades.

  2. El bloque de código else se ejecuta cuando todos condiciones if o elif anteriores no se verifican (el correspondiente test arroja un valor False)

  3. La sección else sigue siendo opcional. Cuando este bloque no existe y todas las condiciones de if y elif que haya tienen valor False no se ejecuta ninguna expresión, no ocurre nada.

1.3.4. Ejemplos#

Ejemplo 1

Escribir un programa que dado un número escriba en la pantalla, según el caso, ‘El número es negativo’, ‘El número es positivo’ o ‘Es el número cero’

número = float(input('Escriba un número: '))

if número < 0:
    print('El número es negativo')
elif número > 0:
    print('El número es positivo')
else:
    print('Es el número cero')
print('Hemos acabado')

Ejemplo 2 Escribir un programa que, dado un color en la variable color escriba por pantalla:

  • bonito color, si el color es azul

  • mi favorito, si el color es naraja

  • no me gusta ese color, en caso contrario

color = 'verde'
if color == 'azul':
    print('bonito color')
elif color == 'naranja':
    print('mi favorito')
else:
    print('no me gusta ese color')
no me gusta ese color

Podemos introducir el color por teclado:

color = input('¿De que color son tus calcetines? ')
if color == 'azul':
    print('bonito color')
elif color == 'naranja':
    print('mi favorito')
else:
    print('no me gusta ese color')

Ejemplo 3

Bifurcación con tres elecciones: dado un número n, el programa debe decir si es mayor, igual o menor el 5

n = int(input('Dame un número: '))

if n > 5:
    print('Es mayor que cinco')
elif n == 5:
    print('Es igaul a 5')
else:
    print('Es menor que cinco')

Ejemplo 4

Bifurcación con cuatro o más elecciones: si un número es mayor, igual o menor que el 3 y 5

n = int(input('Dame un número: '))

if n > 5:
    print('Es mayor que cinco')
elif n == 5:
    print('Es igual a 5')
elif n < 5 and n > 3:
    print('Es menor que 5 y mayor que 3')    
elif n == 3:
    print('Es igual a 3')    
else:
    print('Es menor que 3')

Ejemplo 5

Programa que escribe en la pantalla si un entero es par o impar

x = int(input('Escribe un entero: '))

if x%2  == 0:
    print('')
    print(' Par  ')
else:
    print('')
    print(' Impar')

print('')
print('Se ha acabado el condicional')

Ejemplo 6

Determinar el menor de tres números enteros

x = int(input('Escribe un número entero x: '))
y = int(input('Escribe un número entero y: '))
z = int(input('Escribe un número entero z: '))

if x < y and x < z:
    print('x es el menor')
elif y < z:
    print('y es el menor')
else:
    print('z es el menor')

Ejemplo 7

Bifurcaciones anidadas: Determinar si un número es mayor que 5 y en caso de que sea menor, determinar si es positivo o no.

n = int(input('Dame un número: '))

if n > 5:
    print('Es mayor que cinco')
else:
    if n > 0:
        print('Es un número positivo menor que 5')
    else:
        print('Es un número negativo menor que 5')

Ejemplo 8

Bifurcaciones anidadas: Determinar si un número entero es divisible por 2 y por 3, solo por 2 o por 3, o por ninguno de los dos.

Primera versión

x=int(input("Escribe un número entero "))

if x%2 == 0 and x%3==0:
    print("Divisible por 2 y 3")
if x%2 != 0 and x%3==0:
    print("no divisible por 2 y si por  3")
if x%2 == 0 and x%3!=0:
    print("Divisible por 2 y no por 3")
if x%2 != 0 and x%3!=0:
    print("No divisible por 2 ni  3")

Segunda versión

x=int(input("Escribe un número entero "))

if x%2 == 0:
    if x%3 == 0:
        print("Divisible por 2 y 3")
    else:
        print("Divisible por 2 pero no por 3")
elif x%3 == 0:
    print("Divisible por 3 pero no por 2")
else:
    print("No divisible por 2 ni por 3")

Tercera versión

x=int(input("Escribe un número entero "))

if x%2 == 0:
    if x%3 == 0:
        print("Divisible por 2 y 3")
    else:
        print("Divisible por 2 pero no por 3")
else: 
    if x%3 == 0:
        print("Divisible por 3 pero no por 2")
    else:
        print("No divisible por 2 ni por 3")
    

Ejemplo 9

Un bifurcación especial

if True:
    print('hola')
else:
    print('adiós')
hola

Ejemplo 10

Pedimos al usuario que escriba dos número enteros y devolvemos un mensaje que indica cual es el mayor

x = int(input('Escribe un número entero: '))
y = int(input('Escribe otro número entero: '))

if x>y:
    print("el mayor de los dos números es ",x)
else:
    print("el mayor de los dos números es ",y)

Ejemplo 11

Pedimos al usuario la edad y que escriba la palabras SI o NO si tiene un permiso paternal.

  • si es mayor de edad o tiene permiso parental debe imprimir Puedes acceder

  • en caso contrario, imprimirá Acceso denegado

edad=int(input("Escribe tu edad "))
permiso=input("Escribe la palabra SI encaso de tener permiso y NO en caso de no tenerlo ")

if edad>=18 or permiso=="SI":
    print("Puedes acceder")
else:
    print("Acceso denegado")

1.3.5. Ejercicios#

En los siguientes ejercicios, escribe un script que realice las acciones que se indican:

  1. Definir la variable N pidiendo por teclado su valor. Imprimir True si N es mayor que 7 y False en caso contrario.

  2. Definir la variable N pidiendo por teclado su valor. Imprimir True si N es mayor que 5 y menor que 18 y False en caso contrario.

  3. Nos pregunta un número \(0\) ó \(1\) e imprime A si hemos introducido \(0\) y B si hemos introducido \(1\).

  4. Pide los valores de dos números a y b e imprime Hola si \(a>b\) y Adiós en caso contrario.

  5. Pide los valores de dos números e imprime el mayor de ellos. Si los números son iguales, debe imprimir Números iguales.

  6. Pide los valores de cuatro números e imprime el mayor de ellos.

  7. Pide los valores de cuatro números e imprime Hay números repetidos o No hay números repetidos segun sea el caso.

  8. Pide las coordenadas \(x\), \(y\) de un punto del plano e imprime en qué cuadrante se encuentra el punto.

  9. Escribir un programa que permita determinar si un número entero es múltiplo de 3 o no. En caso afirmativo debe imprimir Es múltiplo de 3; en caso contrario imprimirá No es múltiplo de 3.

  10. Pregunta el valor de x e imprime True ó False según se cumplan las dos condiciones

    • \(p(x) = x^3 - 2x >0\) y

    • \( q(x) = x^2 + 3x +1 <0\).

  11. Pide los valores de los coeficientes \(p\) y \(q\) e imprime el número de soluciones reales de la ecuación \(x^2+px+q=0\).

  12. Pide los valores de los coeficientes \(p\) y \(q\) e imprime las soluciones reales de la ecuación \(x^2+px+q=0\). En caso de no tener, debe imprimir Soluciones complejas.

  13. Dado el polinomio \(P(x) = x^4 -3x^2 -x +1\) decir si se cumplen las dos siguientes condiciones:

    • \(P(3) < 0\)

    • \(P(1) > P(0.5)\)

1.3.6. Cuestionario Moodle#

Cuestionario Bifurcación