Fundamentos de Python Sintaxis, Tipos de Datos y Estructuras de Control

Python Fundamentals Syntax, Data Types, and Control Structures

 

¿Eres un principiante que busca aprender a programar con Python? Si es así, este tutorial amigable para principiantes es para que te familiarices con los conceptos básicos del lenguaje. 

Este tutorial te presentará la sintaxis de Python, que es bastante amigable para los que hablan inglés. También aprenderás a trabajar con diferentes tipos de datos, declaraciones condicionales y bucles en Python.

Si ya tienes Python instalado en tu entorno de desarrollo, inicia un REPL de Python y programa junto con nosotros. O si quieres saltarte la instalación y comenzar a programar de inmediato, te recomiendo ir a Google Colab y programar allí.

 

¡Hola, Python!

 

Antes de escribir el clásico programa “¡Hola, mundo!” en Python, aquí tienes un poco de información sobre el lenguaje. Python es un lenguaje interpretado. ¿Qué significa esto?

En cualquier lenguaje de programación, todo el código fuente que escribas debe traducirse al lenguaje de máquina. Mientras que los lenguajes compilados como C y C++ necesitan el código de máquina completo antes de que se ejecute el programa, un intérprete analiza el código fuente e interpreta en tiempo real.

Crea un script de Python, escribe el siguiente código y ejecútalo:

print("¡Hola, mundo!")

 

Para imprimir “¡Hola, mundo!”, hemos utilizado la función `print()`, una de las muchas funciones incorporadas en Python.

En este ejemplo súper simple, observa que “¡Hola, mundo!” es una secuencia, es decir, una cadena de caracteres. Las cadenas de Python se delimitan mediante comillas simples o dobles. Por lo tanto, para imprimir cualquier cadena de texto, puedes usar `print(“<cadena_de_texto>”)`.

 

Lectura de entrada del usuario

 

Ahora vamos un paso más allá y vamos a leer una entrada del usuario utilizando la función `input()`. Siempre debes solicitar al usuario que ingrese algo para que sepa qué debe ingresar.

Aquí tienes un programa simple que recibe el nombre del usuario como entrada y le da la bienvenida.

Los comentarios ayudan a mejorar la legibilidad de tu código al proporcionar contexto adicional al usuario. Los comentarios de una línea en Python comienzan con un #.

Observa que la cadena en el fragmento de código a continuación está precedida por una `f`. A estas cadenas se les llama cadenas formateadas o f-strings. Para reemplazar el valor de una variable en una f-string, especifica el nombre de la variable entre llaves, como se muestra:

# Obtén la entrada del usuario
user_name = input("Por favor, ingresa tu nombre: ")

# Saluda al usuario
print(f"¡Hola, {user_name}! ¡Mucho gusto!")

 

Cuando ejecutes el programa, se te pedirá la entrada primero y luego se imprimirá el mensaje de bienvenida:

Por favor, ingresa tu nombre: Bala
¡Hola, Bala! ¡Mucho gusto!

 

Continuemos aprendiendo sobre las variables y los tipos de datos en Python.

 

Variables y tipos de datos en Python

 

Las variables, en cualquier lenguaje de programación, son como contenedores que almacenan información. En el código que hemos escrito hasta ahora, ya hemos creado una variable `user_name`. Cuando el usuario ingresa su nombre (una cadena), se almacena en la variable `user_name`.

 

Tipos de datos básicos en Python

 

Veamos los tipos de datos básicos en Python: `int`, `float`, `str` y `bool`, utilizando ejemplos simples que se basan en cada uno de ellos:

Entero (`int`): Los enteros son números enteros sin punto decimal. Puedes crear enteros y asignarlos a variables de la siguiente manera:

age = 25
discount = 10

 

Estas son declaraciones de asignación que asignan un valor a la variable. En lenguajes como C, debes especificar el tipo de datos al declarar variables, pero Python es un lenguaje típicamente tipado. Infieren el tipo de datos a partir del valor. Por lo tanto, puedes volver a asignar una variable para que contenga un valor de un tipo de dato completamente diferente:

número = 1
número = 'uno'

 

Puedes verificar el tipo de datos de cualquier variable en Python utilizando la función `type`:

número = 1
print(type(número))

 

`número` es un entero:

Resultado >>> 

 

Ahora estamos asignando un valor de cadena a `número`:

número = 'uno'
print(type(número))

 

Resultado >>> 

 

Número de punto flotante (`float`): Los números de punto flotante representan números reales con un punto decimal. Puedes crear variables de tipo de datos `float` de la siguiente manera:

altura = 5.8
pi = 3.14159

 

Puedes realizar varias operaciones, como suma, resta, división entera, exponente, y más, en los tipos de datos numéricos. Aquí tienes algunos ejemplos:

# Definir variables numéricas
x = 10
y = 5

# Suma
resultado_suma = x + y
print("Suma:", resultado_suma)  # Resultado: 15

# Resta
resultado_resta = x - y
print("Resta:", resultado_resta)  # Resultado: 5

# Multiplicación
resultado_multiplicación = x * y
print("Multiplicación:", resultado_multiplicación)  # Resultado: 50

# División (resultado de punto flotante)
resultado_división = x / y
print("División:", resultado_división)  # Resultado: 2.0

# División entera (división entera)
resultado_división_entera = x // y
print("División entera:", resultado_división_entera)  # Resultado: 2

# Módulo (resto de la división)
resultado_módulo = x % y
print("Módulo:", resultado_módulo)  # Resultado: 0

# Exponente
resultado_exponente = x ** y
print("Exponente:", resultado_exponente)  # Resultado: 100000

 

Cadena (`str`): Las cadenas son secuencias de caracteres, encerrados entre comillas simples o dobles.

nombre = "Alice"
cita = '¡Hola, mundo!'

 

Booleano (`bool`): Los booleanos representan `True` o `False`, indicando el valor de verdad de una condición.

es_estudiante = True
tiene_licencia = False

 

La flexibilidad de Python para trabajar con diferentes tipos de datos te permite almacenar, realizar una amplia gama de operaciones y manipular datos de manera efectiva.

Aquí tienes un ejemplo que combina todos los tipos de datos que hemos aprendido hasta ahora:

# Usar diferentes tipos de datos juntos
edad = 30
puntuación = 89.5
nombre = "Bob"
es_estudiante = True

# Comprobar si la puntuación está por encima del umbral de aprobación
umbral_aprobación = 60.0
está_aprobando = puntuación >= umbral_aprobación

print(f"{nombre=}")
print(f"{edad=}")
print(f"{es_estudiante=}")
print(f"{puntuación=}")
print(f"{está_aprobando=}")

 

Y aquí está la salida:

Resultado >>>

nombre='Bob'
edad=30
es_estudiante=True
puntuación=89.5
está_aprobando=True

 

Más allá de los Tipos de Datos Básicos

 

Supongamos que estás gestionando información sobre estudiantes en un aula. Sería útil crear una colección para almacenar información de todos los estudiantes en lugar de definir variables repetidamente para cada estudiante.

 

Listas

 

Las listas son colecciones ordenadas de elementos, encerrados entre un par de corchetes. Los elementos de una lista pueden ser del mismo tipo de datos o de tipos de datos diferentes. Las listas son mutables, lo que significa que puedes cambiar su contenido después de su creación.

Aquí, `nombres_estudiantes` contiene los nombres de los estudiantes:

# Lista
nombres_estudiantes = ["Alice", "Bob", "Charlie", "David"]

 

Tuplas

 

Las tuplas son colecciones ordenadas similares a las listas, pero son inmutables, lo que significa que no se puede cambiar su contenido después de su creación.

Supongamos que quieres que `student_scores` sea una colección inmutable que contenga las notas de los exámenes de los estudiantes.

# Tupla
student_scores = (85, 92, 78, 88)

 

Diccionarios

 

Los diccionarios son colecciones de pares clave-valor. Las claves de un diccionario deben ser únicas y se asignan a valores correspondientes. Son mutables y te permiten asociar información con claves específicas.

Aquí, `student_info` contiene información sobre cada estudiante: nombres y notas, como pares clave-valor:

student_info = {'Alice': 85, 'Bob': 92, 'Charlie': 78, 'David': 88}

 

Pero espera, hay una forma más elegante de crear diccionarios en Python.

Estamos a punto de aprender un nuevo concepto: comprensión de diccionarios. No te preocupes si no queda claro de inmediato. Siempre puedes aprender más y trabajar en ello más adelante.

Pero las comprensiones son bastante intuitivas de entender. Si quieres que el diccionario `student_info` tenga los nombres de los estudiantes como claves y sus respectivas notas de examen como valores, puedes crear el diccionario de la siguiente manera:

# Usando una comprensión de diccionario para crear el diccionario student_info
student_info = {nombre: nota for nombre, nota in zip(student_names, student_scores)}

print(student_info)

 

Observa cómo hemos utilizado la función `zip()` para iterar simultáneamente tanto la lista `student_names` como la tupla `student_scores`.

Salida >>>

{'Alice': 85, 'Bob': 92, 'Charlie': 78, 'David': 88}

 

En este ejemplo, la comprensión de diccionario empareja directamente cada nombre de estudiante de la lista `student_names` con la nota de examen correspondiente de la tupla `student_scores` para crear el diccionario `student_info` con los nombres como claves y las notas como valores.

Ahora que estás familiarizado con los tipos de datos primitivos y algunas secuencias/iterables, pasemos a la siguiente parte de la discusión: estructuras de control.

 

Estructuras de Control en Python

 

Cuando ejecutas un script de Python, la ejecución del código ocurre secuencialmente en el mismo orden en el que aparecen en el script.

A veces, necesitarás implementar lógica para controlar el flujo de ejecución en función de ciertas condiciones o recorrer un iterable para procesar los elementos que contiene.

Aprenderemos cómo las sentencias if-else facilitan el branching y la ejecución condicional. También aprenderemos cómo iterar sobre secuencias usando bucles y las sentencias de control de bucle break y continue.

 

Sentencia if

 

Cuando necesitas ejecutar un bloque de código solo si una condición particular es verdadera, puedes usar la sentencia `if`. Si la condición se evalúa como falsa, el bloque de código no se ejecuta.

   

Considera este ejemplo:

nota = 75

if nota >= 60:
    print("¡Felicidades! Pasaste el examen.")

 

En este ejemplo, el código dentro del bloque `if` se ejecutará solo si la `nota` es mayor o igual a 60. Dado que la `nota` es 75, se imprimirá el mensaje “¡Felicidades! Pasaste el examen”.

Salida >>> ¡Felicidades! Pasaste el examen.

 

Sentencias condicionales if-else

 

La sentencia `if-else` te permite ejecutar un bloque de código si la condición es verdadera y un bloque diferente si la condición es falsa.

   

Vamos a construir sobre el ejemplo de las calificaciones de prueba:

puntuación = 45

if puntuación >= 60:
    print("¡Felicidades! Pasaste el examen.")
else:
    print("Lo siento, no pasaste el examen.")

 

Aquí, si la `puntuación` es menor que 60, se ejecutará el código dentro del bloque `else`:

Salida >>> Lo siento, no pasaste el examen.

 

Escalera de if-elif-else

 

La declaración `if-elif-else` se utiliza cuando tienes múltiples condiciones que verificar. Te permite probar múltiples condiciones y ejecutar el bloque de código correspondiente para la primera condición verdadera encontrada. 

Si las condiciones en la declaración `if` y todas las declaraciones `elif` se evalúan como falsas, se ejecuta el bloque `else`.

   

puntuación = 82

if puntuación >= 90:
    print("¡Excelente! Obtuviste una A.")
elif puntuación >= 80:
    print("¡Buen trabajo! Obtuviste una B.")
elif puntuación >= 70:
    print("¡No está mal! Obtuviste una C.")
else:
    print("Necesitas mejorar. Obtuviste una F.")

 

En este ejemplo, el programa verifica la `puntuación` contra múltiples condiciones. Se ejecutará el código dentro del bloque de la primera condición verdadera. Dado que la `puntuación` es 82, obtenemos:

Salida >>> ¡Buen trabajo! Obtuviste una B.

 

Declaraciones if anidadas

 

Las declaraciones `if` anidadas se utilizan cuando necesitas verificar múltiples condiciones dentro de otra condición.

nombre = "Alice"
puntuación = 78

if nombre == "Alice":
    if puntuación >= 80:
        print("¡Gran trabajo, Alice! Obtuviste una A.")
    else:
        print("¡Buen esfuerzo, Alice! Sigue así.")
else:
    print("Lo estás haciendo bien, pero este mensaje es para Alice.")

 

En este ejemplo, hay una declaración `if` anidada. Primero, el programa verifica si `nombre` es “Alice”. Si es verdadero, verifica la `puntuación`. Dado que la `puntuación` es 78, se ejecuta el bloque `else` interno, imprimiendo “¡Buen esfuerzo, Alice! Sigue así.”

Salida >>> ¡Buen esfuerzo, Alice! Sigue así.

 

Python ofrece varios bucles para iterar sobre colecciones o realizar tareas repetitivas. 

 

Bucle For

 

En Python, el bucle `for` proporciona una sintaxis concisa que nos permite iterar sobre iterables existentes. Podemos iterar sobre la lista `student_names` de esta manera:

student_names = ["Alice", "Bob", "Charlie", "David"]

for name in student_names:
    print("Estudiante:", name)

 

El código anterior muestra:

Salida >>>

Estudiante: Alice
Estudiante: Bob
Estudiante: Charlie
Estudiante: David

 

Bucle While

 

Si quieres ejecutar un fragmento de código mientras una condición sea verdadera, puedes usar un bucle `while`.

Utilicemos la misma lista `student_names`:

# Usando un bucle while con un iterable existente

student_names = ["Alice", "Bob", "Charlie", "David"]
index = 0

while index < len(student_names):
    print("Estudiante:", student_names[index])
    index += 1

 

En este ejemplo, tenemos una lista `student_names` que contiene los nombres de los estudiantes. Usamos un bucle `while` para iterar a través de la lista llevando un seguimiento de la variable `index`.

El bucle continúa mientras el `índice` sea menor que la longitud de la lista. Dentro del bucle, imprimimos el nombre de cada estudiante y incrementamos el `índice` para pasar al siguiente estudiante. Observa el uso de la función `len()` para obtener la longitud de la lista.

Esto logra el mismo resultado que usar un bucle `for` para iterar sobre la lista:

Salida >>>

Estudiante: Alice
Estudiante: Bob
Estudiante: Charlie
Estudiante: David

Usemos un bucle `while` que elimine elementos de una lista hasta que la lista esté vacía:

nombres_estudiantes = ["Alice", "Bob", "Charlie", "David"]

while nombres_estudiantes:
    estudiante_actual = nombres_estudiantes.pop()
    print("Estudiante actual:", estudiante_actual)

print("Todos los estudiantes han sido procesados.")

El método `pop` de la lista elimina y devuelve el último elemento presente en la lista.

En este ejemplo, el bucle `while` continúa mientras haya elementos en la lista `nombres_estudiantes`. Dentro del bucle, se utiliza el método `pop()` para eliminar y devolver el último elemento de la lista, y se imprime el nombre del estudiante actual.

El bucle continúa hasta que se hayan procesado todos los estudiantes y se imprime un mensaje final fuera del bucle.

Salida >>>

Estudiante actual: David
Estudiante actual: Charlie
Estudiante actual: Bob
Estudiante actual: Alice
Todos los estudiantes han sido procesados.

El bucle `for` generalmente es más conciso y fácil de leer para iterar sobre iterables existentes como listas. Pero el bucle `while` puede ofrecer más control cuando la condición del bucle es más compleja.

Sentencias de control de bucle

`break` sale prematuramente del bucle y `continue` omite el resto de la iteración actual y pasa a la siguiente.

Aquí hay un ejemplo:

nombres_estudiantes = ["Alice", "Bob", "Charlie", "David"]

for nombre in nombres_estudiantes:
    if nombre == "Charlie":
        break
    print(nombre)

El control sale del bucle cuando el `nombre` es Charlie, dándonos la salida:

Salida >>>
Alice
Bob

Emulando el comportamiento del bucle `do-while`

En Python, no hay un bucle `do-while` incorporado como en algunos otros lenguajes de programación. Sin embargo, puedes lograr el mismo comportamiento utilizando un bucle `while` con una declaración `break`. Así es como puedes emular un bucle `do-while` en Python:

while True:
    entrada_usuario = input("Ingresa 'salir' para detenerse: ")
    if entrada_usuario == 'salir':
        break

En este ejemplo, el bucle continuará ejecutándose indefinidamente hasta que el usuario ingrese ‘salir’. El bucle se ejecuta al menos una vez porque la condición se establece inicialmente en `True`, y luego se verifica la entrada del usuario dentro del bucle. Si el usuario ingresa ‘salir’, se ejecuta la declaración `break`, que sale del bucle.

Aquí hay una muestra de salida:

Salida >>>
Ingresa 'salir' para detenerse: hola
Ingresa 'salir' para detenerse: adiós
Ingresa 'salir' para detenerse: intenta más!
Ingresa 'salir' para detenerse: salir

Ten en cuenta que este enfoque es similar a un bucle `do-while` en otros lenguajes, donde el cuerpo del bucle se garantiza que se ejecute al menos una vez antes de que se verifique la condición.

Conclusión y próximos pasos

Espero que hayas podido seguir este tutorial sin dificultades. Ahora que has adquirido una comprensión de los conceptos básicos de Python, es hora de comenzar a codificar proyectos súper simples aplicando todos los conceptos que has aprendido.     Bala Priya C es una desarrolladora y escritora técnica de India. Le gusta trabajar en la intersección de las matemáticas, la programación, la ciencia de datos y la creación de contenido. Sus áreas de interés y experiencia incluyen DevOps, ciencia de datos y procesamiento del lenguaje natural. Le gusta leer, escribir, programar y tomar café. Actualmente, está trabajando en aprender y compartir sus conocimientos con la comunidad de desarrolladores escribiendo tutoriales, guías prácticas, opiniones y más.  

We will continue to update Zepes; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

Inteligencia Artificial

Investigadores de OpenAI pioneros en modelos avanzados de consistencia para muestreo de datos de alta calidad sin entrenamiento adversario'.

Los modelos de consistencia representan una categoría de modelos generativos diseñados para generar datos de alta cal...

Inteligencia Artificial

Herramientas de IA Generativa se están quedando rápidamente 'sin texto' para entrenarse

Es la última preocupación planteada en relación a las prácticas de recopilación de datos de OpenAI y otros desarrolla...

Inteligencia Artificial

Una forma más rápida de enseñar a un robot

Una nueva técnica ayuda a un usuario no técnico a entender por qué un robot falló, y luego ajustarlo con un esfuerzo ...

Inteligencia Artificial

Investigadores de Meta IA publican como código abierto Pearl una biblioteca de agentes de IA de aprendizaje por refuerzo lista para la producción.

Aprendizaje por refuerzo (RL) es un subcampo del aprendizaje automático en el cual un agente toma acciones adecuadas ...