Python logo - Curso de Python desde cero

Condicionales I: Instrucción if

Vemos las principales características de esta estructura de control de flujo

Después de ver los diccionarios, en esta entrega de este curso online de programación en python desde cero, se abordarán las estructuras de control de flujo, divididas en dos grandes grupos: condicionales y bucles. En este post, se explicará la estructura condicional más importante, la instrucción «if«.

Antes de explicar la sintaxis, se hace referencia al flujo de ejecución de un programa, lo que es importante para comprender las estructuras condicionales. Se recomienda prestar atención a este concepto para aquellos que estén aprendiendo a programar con Python.

Flujo de ejecución de un programa

El flujo de ejecución de un programa es el orden en que se ejecutan sus instrucciones, normalmente de arriba hacia abajo, pero que puede ser alterado por estructuras de control de flujo.

Estas estructuras modifican el orden natural de ejecución del programa. Un ejemplo de estructura de control de flujo es el condicional if, que es como un bloque de código que contiene una o varias líneas de código dentro de él.

Cómo funciona un condicional if en el flujo de ejecución

Supongamos que tenemos un código con varias líneas, dentro del cual se encuentra un bloque que contiene un condicional if con algunas líneas de código.

En este ejemplo de pseudocódigo, he añadido un condicional if y, utilizando una pequeña sangría, he incluido dos instrucciones dentro del mismo. Un condicional if es como un bloque de código que puede contener una o varias líneas de código en su interior.

Instrucción
Instrucción
Instrucción

Condicional if
    Instrucción
    Instrucción

Instrucción
Instrucción
Instrucción

¿Cuál es el orden de ejecución de este programa? Al ejecutar el programa, seguirá un flujo secuencial, desde la primera línea hasta la última, ejecutando cada instrucción en el orden en que aparecen.

Cuando llega a una estructura condicional, el flujo se detiene para evaluar la condición y determinar si es verdadera o falsa. Una estructura condicional es simplemente una condición que se evalúa dentro del programa. Si la condición es verdadera, el programa ejecutará todas las instrucciones dentro del bloque de código correspondiente a la condición. Si la condición es falsa, el programa omitirá las instrucciones dentro del bloque y continuará con la siguiente instrucción después de la estructura condicional.

En resumen, una estructura condicional if es una característica común en muchos lenguajes de programación y funciona de la misma manera en todos ellos. La sintaxis puede variar de un lenguaje a otro, pero el principio básico es el mismo.

Sintaxis del condicional if

Utilizaremos los conocimientos previos de post anteriores y los mezclaremos con nuevos conceptos del bloque condicional if para crear una función llamada «evaluacion«. Hay varias maneras de hacerlo, pero lo haremos de la manera más sencilla para explicar el condicional if.

La función «evaluacion» recibirá numero como parámetro y determinará sí es apto o no es apto en función del número recibido. Si el número es igual o superior a 5, es apto; de lo contrario, no es apto.

Para hacerlo, creamos una variable llamada «prueba» y la inicializamos en «Apto» por defecto. Luego utilizamos el condicional if para evaluar si el número es inferior a 5. Si es cierto, cambiamos el valor de «prueba» a «No apto» y devolvemos el resultado correspondiente con el return.

Aquí está el código:

def evaluacion(numero):
    prueba = "Apto"
    if numero < 5:
        prueba = "No apto"
    return prueba 

A continuación se presenta una explicación sobre la sintaxis del condicional if en Python:

Cuando utilizamos el condicional if en Python, se coloca la palabra reservada «if» seguida de la condición a evaluar y dos puntos. A diferencia de otros lenguajes de programación, Python no utiliza paréntesis o llaves para definir el bloque de código que se ejecutará si se cumple la condición. En su lugar, se utiliza una sangría para indicar las líneas de código que forman parte del bloque if.

Por ejemplo, si queremos evaluar si un número es menor que 5, podemos utilizar la siguiente sintaxis:

if numero < 5 :

Dentro del bloque if, podemos incluir cualquier número de líneas de código que queramos. En el ejemplo anterior, la línea de código con la sangría se ejecutará solo si la condición es verdadera.

También es importante recordar que Python utiliza operadores de comparación para evaluar las condiciones en los condicionales. Estos operadores de comparación se utilizan muchísimo a la hora de trabajar tanto con condicionales como con bucles.

Es importante notar que, para indicar que las siguientes líneas de código estarán dentro del bloque if, debemos hacer una pequeña sangría. Todas las líneas que tengan esta sangría después del condicional forman parte del bloque if, mientras que las líneas que no tienen esa sangría ya no forman parte del condicional.

Si la condición es verdadera, la línea de código dentro del condicional if se ejecutará, lo que en este caso significa cambiar el estado de «Apto» a «No apto». Si la condición no es verdadera, el programa simplemente ignorará la línea dentro del condicional if y continuará su ejecución.

La lógica de esta función

Para aquellos que están aprendiendo programación a través de este curso, es importante prestar atención a la estructura lógica de una función. Aunque para aquellos con conocimientos previos en programación esto puede parecer simple, para los principiantes es fundamental comprender cómo funciona una función.

Al llamar a la función, la primera línea [prueba = "Apto"] se ejecutará siempre, mientras que la última línea [return prueba] también se ejecutará sin excepción. Esto significa que si el bloque if no se ejecuta, la función siempre devolverá «Apto». Sin embargo, si se ejecuta el bloque if, el valor de la variable prueba cambiará y la función devolverá ese valor.

Para usar esta función, simplemente debemos llamarla y pasarle un parámetro en la llamada. Usaremos la instrucción print() para imprimir el resultado en la consola. Por ejemplo, si pasamos un 4 como parámetro, la función devolverá «No apto»:

>>> print(evaluacion(4))
No apto
>>> print(evaluacion(7))
Apto

Este es un ejemplo básico del funcionamiento de una estructura condicional if en programación. Es importante entender cómo funciona la lógica de una función para poder escribir código eficiente y efectivo.

Ejemplo del condicional if con input()

En este ejemplo vamos a añadir un nivel de complejidad adicional utilizando por primera vez un código que nos permitirá ingresar información mediante el teclado. Esto nos permitirá introducir la nota del alumno por medio del teclado cuando se ejecute el programa.

La función predefinida de Python que nos permitirá introducir la nota por teclado es input(). Cuando el programa alcance esta instrucción, se detendrá y esperará a que ingresemos un valor por medio del teclado. El flujo de ejecución no continuará hacia abajo hasta que se introduzca un valor y se pulse la tecla Enter.

Para empezar, colocaremos esta instrucción en primer lugar. Crearemos una variable llamada «evaluar_numero», a la que se le asignará el valor ingresado por medio de la función input().

evaluar_numero = input()

def evaluacion(numero):
    prueba = "Apto"
    if numero < 5:
        prueba = "No apto"
    return prueba

Entonces, al analizar el flujo de ejecución del programa, podemos observar que al ejecutarlo, el primer paso es leer la primera línea de código. Una vez que el flujo de ejecución llega allí, se detiene temporalmente y espera que el usuario ingrese un valor a través del teclado.

Es importante señalar que esta instrucción provocará un pequeño error, pero se pretende utilizar este error para ilustrar la naturaleza del problema. Aunque se mantendrá la función definida tal y como está, ahora se hará una llamada a dicha función de manera distinta.

En lugar de pasarle un numero fijo, se desea introducir la nota que el usuario escriba a través del teclado. Como resultado, la llamada a la función deberá ser diferente. En lugar de «print(evaluacion(4))», se deberá utilizar «evaluar_numero», para que la función se ejecute correctamente.

>>> print(evaluacion(evaluar_numero))
evaluar_numero = input()

def evaluacion(numero):
    prueba = "Apto"
    if numero < 5:
        prueba = "No apto"
    return prueba

print(evaluacion(evaluar_numero))

Es fundamental tener una comprensión clara del flujo de ejecución para entender este proceso:

  1. En primer lugar, se ejecuta la primera línea del programa y éste espera la introducción de datos por parte del usuario a través del teclado.
  2. Cuando se ingresa un valor, éste se almacena en la variable ‘evaluar_numero‘.
  3. A continuación, el programa ejecuta la función ‘print(evaluacion(evaluar_numero))‘, que llama a la función ‘evaluacion‘.

Es importante destacar que el valor almacenado en ‘evaluar_numero‘ se transfiere y se guarda en la variable ‘numero‘. Esto es válido tanto si se trata de una variable como si se trata de un valor fijo, ya que el comportamiento del parámetro será el mismo.

Como se mencionó anteriormente, el programa falla en este punto y se explicará por qué. Si, por ejemplo, se introduce un valor de 9 y se presiona Enter, ese valor se almacenará en ‘evaluar_numero‘. Posteriormente, el programa leerá la instrucción ‘print‘, el valor 9 se transferirá a ‘numero‘, la función se ejecutará por completo y debería devolver un resultado. No obstante, se observará que se produce un error.

print(evaluacion(evaluar_numero))
 Traceback (most recent call last):
   File "", line 1, in 
     print(evaluacion(evaluar_numero))
   File "", line 3, in valoracion
     if numero < 5 :
 TypeError: '<' not supported between instances of 'str' and 'int'

Observa la descripción del error que indica que no se admiten instancias de string e int. Esto significa que el valor que hemos ingresado mediante teclado, como el 9, es considerado como un valor de texto por Python.

Cualquier entrada realizada mediante la instrucción input() es considerada como texto por defecto, lo que significa que para Python, el 9 no es un valor numérico que pueda ser utilizado en operaciones, sino más bien un valor de texto. Debido a esto, se produce un error al intentar comparar un int con un string.

Para solucionar este problema, necesitamos informar a Python que cualquier entrada realizada mediante input() debe ser considerada como un valor numérico. Para ello, podemos utilizar la función predefinida de Python int(). Esta función convierte en entero cualquier cosa que sea posible ingresar como parámetro en la función int().

Convirtiendo en entero con int()

Al emplear la instrucción «print», «evaluacion» y la función «int» en «evaluar_numero», le estamos indicando que convierta el dato, que por defecto es texto, en un valor numérico entero.

print(evaluacion(int(evaluar_numero)))

Tras esta transformación, el valor numérico es transmitido y almacenado en «numero», lo que significa que ya no se trata de texto sino de un valor numérico que permite el correcto funcionamiento del programa.

Últimos apuntes

Antes de finalizar, es importante destacar que la función «input» tiene la capacidad de aceptar parámetros. Es común incluir un mensaje dentro de los parámetros de dicha función, con el fin de brindar información al usuario. Por ejemplo:

evaluar_numero = input("Por favor, introduzca un número para ser evaluado")
Por favor, introduzca un número para ser evaluado

Para proporcionar una experiencia más fluida a los usuarios, es recomendable mostrar un mensaje indicando el tipo de datos que se esperan antes de que el cursor parpadeante aparezca esperando su entrada.

Además, es importante considerar el ámbito de las variables cuando se trabaja con condicionales y funciones. Aunque se abordará este tema más adelante en el curso, es fundamental comprender que una variable solo es accesible dentro de su ámbito.

Por ejemplo, tomemos la variable «evaluacion» de nuestro ejemplo, que se declara dentro de una función. Es esencial saber dónde comienza y termina esta función para entender su ámbito. La función comienza con su declaración y finaliza con la instrucción «return». Fuera de este ámbito, la variable «evaluacion» no es accesible ni se puede manipular.

De igual manera, si declaramos otra variable dentro de un bloque condicional como «if», esta solo será accesible dentro de ese bloque, desde que se abre hasta que se cierra.

Quería mencionar esto antes de profundizar más en el ámbito en el curso, ya que algunos pueden experimentar errores al cambiar las cosas de lugar sin comprender el ámbito de una variable. Por lo tanto, es importante tener en cuenta el ámbito de una variable al utilizarla fuera de su alcance declarado y así evitar errores innecesarios.

Bueno, pues vamos a dejar este post en el punto en el que nos encontramos y os digo lo de siempre; os invito a que continuéis con la siguiente entrega donde vemos las Instrucción else y elif. Hasta entonces.

Scroll al inicio