Introducción A La Programación Con Python - Colaboratory
Introducción A La Programación Con Python - Colaboratory
En este primer material se discutirán los conceptos fundamentales del lenguaje de programación
Python, desde el concepto de valor, tipo de dato, variable, operador y expresión, y se describirán
algunas de sus aplicaciones básicas.
Para realizar esta comunicación con el computador no es suficiente con escribir texto válido con
respecto a estas reglas, sino que es necesario contar con software adicional que sea capaz de
interpretar lo que escribimos y de ejecutar los procesos que pretendemos que se ejecuten. En este
curso vamos a trabajar con la plataforma Google Colaboratory, un sistema de Google que permite
crear documentos interactivos llamados Notebooks y que cuenta con el software necesario para
https://colab.research.google.com/drive/1l5SMduz7TYna2dyxiwfCBt9MIyAIyprl#printMode=true 1/40
28/4/22, 7:47 Introducción a la programación con Python - Colaboratory
interpretar y ejecutar código en Python. En este sentido, es suficiente con crear y ejecutar una
sección o celda de código y la infraestructura en la nube de Google se encargará de ejecutarlo.
Antes de comenzar es necesario mencionar que, como en muchas aplicaciones, Python es una
herramienta en constante evolución, y es muy importante tener en cuenta la versión en la que
ejecutamos nuestro código. En esta ocasión, puede ejecutar la siguiente celda de código para
conocer esta información:
[ ] ↳ 2 celdas ocultas
Antes de comenzar con el diseño de programas más complejos, es necesario entender sus
componentes básicos. En ese sentido tenemos el valor, la unidad básica de información que se
puede considerar en la creación de un programa. Estos valores pueden tener formas distintas,
conocidas como tipo de dato, que le permiten al intérprete de Python realizar una acción u otra
según el contexto. En esta sección veremos dos de los valores básicos que se pueden considerar.
Un tipo básico, que puede usarse para representar conceptos más generales como una fecha o un
nombre, es el texto. En Python, es tan sencillo como escribir texto encerrado en comillas simples '
o dobles " :
'Hola'
'Hola'
Como puede notar, al escribir el valor 'Hola' y ejecutar la celda aparece debajo de esta
nuevamente el valor 'Hola' . Esta es la salida del programa, que contiene el resultado de la
ejecución del código. En este caso la tarea es sencilla, indicar y evaluar un valor que resulta ser el
valor de texto "Hola" .
"Mundo"
https://colab.research.google.com/drive/1l5SMduz7TYna2dyxiwfCBt9MIyAIyprl#printMode=true 2/40
28/4/22, 7:47 Introducción a la programación con Python - Colaboratory
'Mundo'
En Python, y en muchos lenguajes de programación, los tipos de dato de texto se conocen como
cadenas de caracteres o strings. En el computador, son representados como una secuencia de
caracteres (símbolos como '1' , 'h' o '#' ) que han sido codificados previamente en una tabla.
En este caso, la codificación es UTF-8. Los detalles de este estándar se escapan del alcance de
este curso, pero vamos a mencionar algunos de los caracteres más importantes de esta
especificación.
Por ejemplo, una de las secuencias de escape más importantes es la que permite representar el
salto de línea, definida con la secuencia '\n' :
"1. Hola\n2. Mundo"
Hasta el momento hemos aprovechado una de las características del intérprete de Python y de
Google Colaboratory, que enseña en la salida del programa el valor del dato ubicado en la última
línea. Es por esto que la representación anterior que encontramos en la salida se muestra con los
paréntesis en los extremos y el texto '/n' de forma literal.
Para evitar esto, y para imprimir texto en la salida tal como se vería en un archivo de texto podemos
usar la función print(valor) . Esta a su vez permite realizar una operación de salida en cualquier
línea del programa y tantas veces como sea necesario.
print("1. Hola\n2. Mundo")
1. Hola
2. Mundo
Otro carácter especial importante es el carácter de tabulación, que se podría lograr al usar la tecla
"Tab" del teclado, escribe espacios a intervalos regulares, permitiendo alinear texto en líneas
https://colab.research.google.com/drive/1l5SMduz7TYna2dyxiwfCBt9MIyAIyprl#printMode=true 3/40
28/4/22, 7:47 Introducción a la programación con Python - Colaboratory
print('Primero\tSegundo\tTercero')
print('1\t2\t3')
print('1ro\t2do\t3ro')
print('El primero\tEl segundo\tEl tercero')
1 2 3
Como puede notar, no es un método infalible para alinear palabras, dado que "llena" el espacio
entre los segmentos hasta un máximo de 8 caracteres. La cuarta sentencia tiene cadenas con más
caracteres que este límite, por lo que es alineada con el siguiente punto de parada.
De esta forma también podemos expresar caracteres que de otra forma tendrían otra
interpretación. Por ejemplo, ¿qué sucede si intentamos usar comillas dentro de una cadena de
texto?
'Esta es una comilla simple: (')'
En esta ocasión la ejecución produce un error de sintaxis (del inglés Syntax Error). Esto significa
que alguna de las palabras o elementos de texto de nuestro código no cumple las reglas
especificadas por el lenguaje. En este caso la regla que se incumplió es que cada comilla (simple o
doble) que se encuentre en el código debe tener en algún punto de la línea un símbolo igual que
indique donde termina la cadena. Es decir, las comillas que se encuentran dentro de nuestro texto
son interpretadas como esta cadena:
'Estas es una comilla simple: ('
Dejando al final de la línea código que no corresponde a ninguna regla. A menos que las comillas
sean del tipo contrario al usado como inicio y final de la cadena (como se ve en el siguiente
ejemplo), es necesario utilizar el prefijo \ para indicar que el carácter usado es especial.
https://colab.research.google.com/drive/1l5SMduz7TYna2dyxiwfCBt9MIyAIyprl#printMode=true 4/40
28/4/22, 7:47 Introducción a la programación con Python - Colaboratory
print("Estas comillas son simples (')")
print('Estas comillas son dobles (")')
print("Estas son comillas simples (\') y estas son dobles (\")")
Para textos más largos y complejos, es posible definir cadenas de texto de múltiples líneas. Para
esto debemos usar tres comillas de cualquier tipo ( ''' o """ ) como inicio y final. De esta manera
se codifican saltos de línea como separadores de la cadena de forma directa, y se conservan los
espacios al final y al principio de cada línea.
"""
1. Hola
2. Mundo
* Hola mundo
"""
Podemos tomar este valor en múltiples líneas y utilizarlo dentro de la función print , dejando el
paréntesis final para la última línea:
print("""
1. Hola
2. Mundo
* Hola mundo
""")
1. Hola
2. Mundo
* Hola mundo
2.2. Números
Además del texto, una de las aplicaciones y pilares fundamentales de la programación es el manejo
de valores numéricos de distintos tipos. En Python los números se expresan como se expresarían
en una calculadora o en una hoja de cálculo de herramientas como Excel:
500
500
https://colab.research.google.com/drive/1l5SMduz7TYna2dyxiwfCBt9MIyAIyprl#printMode=true 5/40
28/4/22, 7:47 Introducción a la programación con Python - Colaboratory
Esta celda no realiza nada del otro mundo, pero nos permite conocer un primer detalle importante.
El texto que escribamos tiene que ser válido para el intérprete o de lo contrario la ejecución no
llegará a su fin. Ejecute la siguiente celda:
500$
500$
Nuevamente, encontramos que este código no es válido de acuerdo a las reglas del lenguaje. El
programador pudo haber querido evaluar un valor monetario, pero Python no distingue el concepto
de moneda con el carácter $ y simplemente lo identifica como un error.
Entonces, ¿cuáles son las reglas para escribir valores numéricos en Python?
Al igual que el ejemplo anterior, los números enteros sencillos se escriben con los dígitos del 0 al 9
y sin espacios entre ellos.
1234567890
1234567890
Como una excepción en esta regla se define que no es válido utilizar ceros a la izquierda de un
valor numérico:
0001
0001
https://colab.research.google.com/drive/1l5SMduz7TYna2dyxiwfCBt9MIyAIyprl#printMode=true 6/40
28/4/22, 7:47 Introducción a la programación con Python - Colaboratory
Los valores negativos se pueden expresar con el signo de resta - antes de un valor numérico
válido (aplica también para otros tipos de número). Sin embargo, y como veremos más adelante,
este no es un tipo de valor numérico literal.
-5000
-5000
Estos números enteros son interpretados con la base decimal. Python también permite utilizar
otras bases como la binaria (base 2 ), octal (base 8 ) y hexadecimal (base 16). En esta sección
describiremos con ejemplos la idea detrás de estas representaciones de valores numéricos, sin
entrar en detalles matemáticos concretos. Estas se definen de la siguiente manera:
Números enteros binarios: para escribir este tipo de enteros se utiliza el prefijo 0b o 0B y se
indican a continuación una combinación de los dígitos 0 y 1 . Al evaluar su valor, Python
retorna su interpretación en el sistema decimal. A continuación, un ejemplo de una
conversión entre estas bases:
3 2 1 0
0b1110 → 1(2 ) + 1(2 ) + 1(2 ) + 0(2 ) = 8 + 4 + 2 = 14
0b1110
14
Números enteros octales: para escribir este tipo de enteros se utiliza el prefijo 0o o 0O y se
indican a continuación una combinación de los dígitos entre 0 y 7 . Al evaluar su valor, Python
retorna su interpretación en el sistema decimal. A continuación, un ejemplo de una
conversión entre estas bases:
2 1 0
0o106 → 1(8 ) + 0(8 ) + 6(8 ) = 64 + 6 = 70
0o106
70
Números enteros hexadecimales: para escribir este tipo de enteros se utiliza el prefijo 0x o
0X y se indican a continuación una combinación de los digitos entre 0 y 9 , además de
alguna de las letras de la A a la F en minúscula o mayúscula (de esta manera cada digito
tiene 16 valores distintos). Estas letras representan los siguientes números en base decimal:
Letra Valor
https://colab.research.google.com/drive/1l5SMduz7TYna2dyxiwfCBt9MIyAIyprl#printMode=true 7/40
28/4/22, 7:47 Introducción a la programación con Python - Colaboratory
Letra Valor
A 10
B 11
C 12
D 13
E 14
F 15
0xAC
172
Python se caracteriza por su expresividad, y vela por proveer herramientas para facilitar la
legibilidad del código. Una de estas características (conocidas usualmente como syntax sugar o
azúcar sintáctico) es la posibilidad de usar el símbolo barra al piso ( _ ) como separador en valores
literales numéricos para permitir la legibilidad.
Nota: otra de las formas inválidas de definir valores numéricos es utilizar puntos ( . )
o comas ( , ) como separadores. Como verá en el transcurso del curso, estos
símbolos son muy importantes en otras funcionalidades.
1_000_000
1000000
Por debajo, Python es capaz de identificar que una cadena escrita con estas reglas corresponde a
un número entero.
print(5)
print('5')
https://colab.research.google.com/drive/1l5SMduz7TYna2dyxiwfCBt9MIyAIyprl#printMode=true 8/40
28/4/22, 7:47 Introducción a la programación con Python - Colaboratory
Ambos tienen la misma representación de cadena de texto y son a simple vista indistinguibles.
Para esto, Python identifica y guarda de manera implícita el tipo de dato de un valor. Podemos
consultar este tipo de dato con ayuda de la función type(valor) :
type(5)
int
type('5')
str
En este caso, tenemos los tipos de dato int para números enteros y str para cadenas de texto.
Los números decimales se escriben de manera similar a los números enteros de base decimal,
usando el carácter de punto . para separar la parte entera de la parte decimal.
400.125
400.125
Tanto la parte entera como la parte decimal pueden ser omitidas en los casos en que estas tengan
0 como valor:
.15
0.15
20.
20.0
De esta manera podemos definir valores que también entran en la categoría de números enteros
con valores de tipo decimal de manera explícita:
type(20)
int
https://colab.research.google.com/drive/1l5SMduz7TYna2dyxiwfCBt9MIyAIyprl#printMode=true 9/40
28/4/22, 7:47 Introducción a la programación con Python - Colaboratory
type(20.)
float
El tipo de dato asociado a este tipo de número es float , que proviene del concepto de punto
flotante, con el cual se codifica de manera eficiente este tipo de valores.
Al igual que en la mayoría de calculadoras científicas, Python permite el uso de notación científica
con el carácter e . De esta forma, se obtiene una equivalencia de notaciones como la del siguiente
ejemplo:
5
-23e5 → −23 × 10
-23e5
-2300000.0
Finalmente, podemos utilizar el separador de barra al piso _ para separar los números decimales
tanto en su parte real como en su parte entera:
1_500.42_42
1500.4242
Python permite utilizar números complejos, un tipo de número muy importante en áreas como la
física, que están compuestos por una parte real y una parte imaginaria.
Para declarar este tipo de números se puede utilizar el carácter j para definir la parte imaginaria
de un número complejo. Como veremos más adelante, se puede definir su parte real con
operaciones como la suma y la resta con números decimales o enteros.
5j
5j
Las demás reglas de notación para números flotantes aplican con cada componente del número
complejo.
3_000_2.5e52j
https://colab.research.google.com/drive/1l5SMduz7TYna2dyxiwfCBt9MIyAIyprl#printMode=true 10/40
28/4/22, 7:47 Introducción a la programación con Python - Colaboratory
3.00025e+56j
type(5j)
complex
Como veremos más adelante con las operaciones matemáticas, Python permite la operación de
números complejos con sus detalles matemáticos correspondientes.
Es común necesitar el uso de conversiones entre estos tipos de dato básicos. Para esto, Python
proporciona algunas funciones simples que nos permitirán realizar este proceso. Las funciones
str(valor) , int(valor) , float(valor) y complex(valor) convertirán (o intentarán convertir) los
argumentos en los tipos str , int , float y complex , respectivamente. Llamamos a estas
funciones de conversión de tipo.
str(0xAAAA)
'43690'
str(500_000.54e-5)
'5.0000054'
str(50j)
'50j'
La función int puede tomar una cadena y convertirlo en un int con base 10.
int('5_000')
5000
Para enteros en otra base, se escribe una coma , seguida del número de la base.
https://colab.research.google.com/drive/1l5SMduz7TYna2dyxiwfCBt9MIyAIyprl#printMode=true 11/40
28/4/22, 7:47 Introducción a la programación con Python - Colaboratory
print(int('0b100', 2))
print(int('0x100', 16))
256
Para los números de punto flotante se descarta la parte decimal del número, un proceso que
llamamos truncamiento hacia cero.
int(2.3)
La función float permite tomar cadenas de texto con las reglas descritas para este tipo de dato y
realiza una conversión de tipo a los valores enteros con 0 en su parte decimal.
print(float("123450"))
123450.0
print(float(0b1000))
8.0
complex(50)
(50+0j)
complex(.500)
(0.5+0j)
3. Variables y memoria
Al igual que existe el concepto de salida de un programa, que implica un mensaje que proviene del
computador, podemos realizar el proceso contrario y definir una entrada al programa. Esta se
https://colab.research.google.com/drive/1l5SMduz7TYna2dyxiwfCBt9MIyAIyprl#printMode=true 12/40
28/4/22, 7:47 Introducción a la programación con Python - Colaboratory
Por ejemplo, para obtener una cadena de texto cualquiera del usuario podemos utilizar la función
input(mensaje) , con un mensaje opcional que imprimir antes de solicitar la entrada. Al ejecutar la
siguiente celda, aparecerá en la salida un recuadro en el que puede ingresar texto.
input('Ingrese su nombre: ')
'Eliana'
Esta función tiene un valor de retorno, lo que significa que se convierte en el valor de texto
ingresado por el usuario.
Para declarar una variable tenemos que escribir una asignación, posible al usar el separador = . Por
ejemplo, utilicemos la función input para obtener el nombre del usuario y guardémoslo en una
variable llamada nombre :
nombre = input('Ingrese su nombre: ')
En esta ocasión no se imprimió el valor de retorno de la función input , pero quedó asociado a la
variable nombre . La razón por la que no se imprimió el valor en la salida de la primera celda es
porque una asignación es una sentencia. Estas son un tipo de fragmento del código que realizan
una operación, pero no retornan ningún valor.
Otro tipo de instrucción que ya utilizamos en este material y que aparentemente no retornaba nada
es la función print , que realiza una acción (imprimir algo en la salida) pero que no tiene valor real
que retornar.
https://colab.research.google.com/drive/1l5SMduz7TYna2dyxiwfCBt9MIyAIyprl#printMode=true 13/40
28/4/22, 7:47 Introducción a la programación con Python - Colaboratory
Nota: las variables y sus valores almacenados son conservados entre celdas siempre
y cuando el entorno de ejecución no cambie. Esto puede suceder después de un
tiempo de inactividad o al recargar la página. Si esto sucede, celdas como la anterior
pueden fallar pues en la nueva conexión aún no está declarada la variable nombre .
print(nombre)
Eliana
p = print('Hola')
Hola
La salida de la última celda corresponde a una tarea realizada por la función print , más no retorna
la cadena. En este caso sí se imprime la cadena, aún cuando la operación es una sentencia de
asignación.
La celda se ejecuta, pero no se imprime nada. Esto es debido a que la variable tiene como valor
literalmente nada, o como se define en Python, una variable con valor None , de tipo NoneType .
print(p)
type(p)
None
NoneType
El concepto de variable nos ofrece una gran flexibilidad a la hora de escribir programas. Como ya
habíamos mencionado, podemos volver a asignar un valor distinto a la misma variable y nombrar
tantas como sea necesario.
Vamos a crear una variable llamada num y asignarle un valor numérico obtenido de la entrada del
programa.
https://colab.research.google.com/drive/1l5SMduz7TYna2dyxiwfCBt9MIyAIyprl#printMode=true 14/40
28/4/22, 7:47 Introducción a la programación con Python - Colaboratory
num = input("Ingrese un número entre 0 y 100: ")
num
'69'
Como puede notar, aunque solicitamos un número, la entrada de texto siempre llega en forma de
cadena de texto. Si queremos un valor numérico en vez de una cadena, podemos realizar una
conversión de tipos con la función int .
Nota: tenga en cuenta que la cadena dada debe ser un número válido o la siguiente
celda fallara. Para evitar esto, ejecute nuevamente la celda en la que se obtiene la
entrada del programa e ingrese un número válido según las reglas discutidas para
números enteros, como 100 o 234_000 .
num = int(num)
print(num)
123
El token de asignación (=) no debe confundirse con una comparación de igualdad (que veremos
más adelante en este material). La sentencia de asignación vincula un nombre, en el lado izquierdo
del operador, con un valor, en el lado derecho. Es por esto que recibirá un error si se realiza en el
orden contrario:
17 = n
17 = n
Consejo: Cuando lea o escriba el código, dígase a sí mismo "n tiene asignado 17" o
"n obtiene el valor 17" o "n es una referencia al objeto 17" o "n se refiere al objeto
17". No diga "n es igual a 17" pues esto puede denotar una comparación de igualdad.
https://colab.research.google.com/drive/1l5SMduz7TYna2dyxiwfCBt9MIyAIyprl#printMode=true 15/40
28/4/22, 7:47 Introducción a la programación con Python - Colaboratory
Una forma común de representar las variables en papel es escribir el nombre con una flecha que
apunta al valor de la variable. Este diagrama muestra el resultado de ejecutar las instrucciones de
asignación que se muestran arriba:
n = 17
pi = 3.14159
message = "¡Hola! ¿Qué tal todo?"
Las variables, al contener un valor, también tienen un tipo de dato asociado. Este corresponde al
tipo del valor al cual se refiere:
print(type(pi))
print(type(message))
print(type(n))
<class 'float'>
<class 'str'>
<class 'int'>
Atención: Python es débilmente tipado. Esto quiere decir que para almacenar un dato
en una variable, no se requiere definir de antemano qué tipo de dato va a representar,
simplificando la definición de variables para escribir código rápidamente. Por esta
razón no se fija de forma estricta el tipo de dato de una variable, permitiendo casos
como el ejemplo anterior, en el que se asigna una cadena de texto y luego un valor
numérico. Este detalle puede producir resultados inesperados si no se trata con
cuidado con el tipo de dato que se utiliza.
https://colab.research.google.com/drive/1l5SMduz7TYna2dyxiwfCBt9MIyAIyprl#printMode=true 16/40
28/4/22, 7:47 Introducción a la programación con Python - Colaboratory
n = "2"
print(type(n))
<class 'str'>
n = 2
print(type(n))
<class 'int'>
Podemos incluso asignar valores entre variables. En este caso, vamos a asignar a la variable n el
valor de la variable nombre .
n = nombre
'Eliana'
Pregunta: ¿cuál cree que será el resultado de ejecutar la siguiente celda? ¿es válida
la sentencia de la línea 5?
a = 10
b = 15
c = 20
c = b = a = 1
print(c)
Respuesta
Los nombres permitidos para variables en Python deben cumplir las siguientes condiciones.
Deben estar compuestos por números del 0-9 , caracteres alfabéticos en mayúscula o
minúscula ( A-Z y a-z ) y por el símbolo de guion bajo _ .
https://colab.research.google.com/drive/1l5SMduz7TYna2dyxiwfCBt9MIyAIyprl#printMode=true 17/40
28/4/22, 7:47 Introducción a la programación con Python - Colaboratory
primer_nombre = "Eliana"
print(primer_nombre)
Eliana
1er_nombre = "Juan"
print(1er_nombre)
1er_nombre = "Juan"
__123__ = 123
print(__123__)
123
Los nombres de variables distinguen entre mayúsculas y minúsculas. Por ejemplo, var , VAR y Var
se interpretan como variables distintas.
var = 1
VAR = 2
Var = 3
print(var)
print(VAR)
print(Var)
También existen ciertas palabras especiales que NO pueden ser usadas como nombres de
variables, estas son las palabras reservadas. El lenguaje de programación usa las palabras
reservadas para definir sus reglas y estructura. Python tiene aproximadamente 30 palabras
reservadas, las cuales se enlistan a continuación:
help("keywords")
https://colab.research.google.com/drive/1l5SMduz7TYna2dyxiwfCBt9MIyAIyprl#printMode=true 18/40
28/4/22, 7:47 Introducción a la programación con Python - Colaboratory
Here is a list of the Python keywords. Enter any keyword to get more help.
as elif in try
Muchas de ellas las iremos introduciendo a lo largo del curso. Además de estas, existen nombres
de variables que, si bien están permitidas, no deberían usarse pues sobreescribirían funciones de la
librería estándar.
Por ejemplo, no se recomienda crear una variable llamada print pues reemplazaría el método de
impresión en la salida del código.
4. Operadores
Tras discutir la similitud de la escritura de valores numéricos con una calculadora científica es
lógico pensar que se puede realizar este tipo de operaciones en un programa de Python. Esto es
posible con el concepto de operadores, otra unidad gramatical del lenguaje que relaciona valores
con el objetivo de obtener un resultado apropiado. En esta sección discutiremos los operadores
básicos usados en los tipos de datos de texto y numérico.
La especificación de Python define una serie de operadores matemáticos básicos que pueden ser
usados con sus tipos de datos numéricos. El más básico de ellos es el de negación numérica. Este
indica al intérprete que el valor que se encuentre a continuación deberá ser negado, o multiplicado
por −1 .
-5000
-5000
https://colab.research.google.com/drive/1l5SMduz7TYna2dyxiwfCBt9MIyAIyprl#printMode=true 19/40
28/4/22, 7:47 Introducción a la programación con Python - Colaboratory
Como se mencionó antes, este valor no es un literal numérico, sino que tiene la siguiente
estructura:
OPERADOR VALOR
Para el resto de operadores, se considera una estructura que involucra dos valores literales A y B :
VALOR_A OPERADOR VALOR_B
Por ejemplo, para realizar una suma y una resta se utilizan los símbolos + y - , que son
interpretados como operadores válidos de Python.
100 + 20
120
100- 20
80
10.5 + 4.0
14.5
Python permite realizar este tipo de operaciones produciendo un valor en un tipo de dato más
general, cuando la operación sea válida en su definición. Por ejemplo, definamos tres variables con
cada tipo de dato y realicemos su operación.
var_i = 20
type(var_i)
int
var_f = 10.5
type(var_f)
float
var_c = 23 + 10.5j
type(var_c)
https://colab.research.google.com/drive/1l5SMduz7TYna2dyxiwfCBt9MIyAIyprl#printMode=true 20/40
28/4/22, 7:47 Introducción a la programación con Python - Colaboratory
complex
Si sumamos dos valores del mismo tipo de dato, el resultado será del mismo tipo.
var_i + var_i
40
var_f + var_f
21.0
var_c + var_c
(46+21j)
Si cruzamos tipos, se intenta generalizar y convertir uno de los tipos y realizar la operación en tipos
iguales. Por ejemplo, si sumamos el entero y el decimal, se puede interpretar al entero como un
valor real con 0 en su parte decimal.
var_i + var_f
30.5
type(var_i + var_f)
float
Finalmente, si se opera un entero o un decimal con un complejo, estos se interpretan como la parte
real de un complejo con 0 en su parte imaginaria. Veamos el resultado:
var_i + var_c
(43+10.5j)
var_f + var_c
(33.5+10.5j)
Esta regla se aplica al resto de operadores, siempre y cuando su operación tenga sentido para el
tipo de dato. A continuación, se presenta una tabla de operadores matemáticos:
https://colab.research.google.com/drive/1l5SMduz7TYna2dyxiwfCBt9MIyAIyprl#printMode=true 21/40
28/4/22, 7:47 Introducción a la programación con Python - Colaboratory
+ Adición a + b a + b
* Multiplicación a * b a × b
/ División a / b a ÷ b
** Exponenciación a ** b a
b
Por ejemplo, si quisiéramos saber a cuánto equivalen 951 minutos en el formato de horas y
minutos podemos realizar la división 951 ÷ 60, de la que obtendríamos como cociente el valor 15
y como residuo o resto el valor 51, para un total de 15 horas con 51 minutos.
Podemos obtener estos valores con las operaciones de módulo y división piso:
# Operador division normal
951 / 60
15.85
# Operador división entera
951 // 60
15
https://colab.research.google.com/drive/1l5SMduz7TYna2dyxiwfCBt9MIyAIyprl#printMode=true 22/40
28/4/22, 7:47 Introducción a la programación con Python - Colaboratory
# Operador módulo o residuo
951 % 60
51
El valor obtenido al realizar división piso con números negativos es distinto al cociente de la
división. Por ejemplo:
951 // 60
15
- 951 // 60
-16
Este detalle es importante pues la división piso es una operación más común en computación.
Ninguno de estos dos operadores está definido para números complejos. Ejecutar una operación
dará como resultado un error de tipo.
c // a
---------------------------------------------------------------------------
<ipython-input-76-42675b65c4ca> in <module>()
----> 1 c // a
Cuando se manejan variables es muy común realizar operaciones sobre algo y reasignarlo, como
vimos en el primer ejercicio de la sección.
a = 500
a = a + 20
a = a * 2
1040
Python permite resumir esta tarea con los distintos operadores de asignación asociados a cada
operador. Para esto, usamos una secuencia compuesta por el operador a utilizar (por ejemplo, una
https://colab.research.google.com/drive/1l5SMduz7TYna2dyxiwfCBt9MIyAIyprl#printMode=true 23/40
28/4/22, 7:47 Introducción a la programación con Python - Colaboratory
suma con + ) seguido por el carácter de asignación = , dando como resultado el operador de
asignación += . Entonces, una operación como esta:
a = 2
a = a + 1
a = 2
a += 1
a = 0
a += 10
a -= 5
a *= 2
a /= 5
a **= 3
8.0
De acuerdo con el contexto, Python determina la acción apropiada para cada tipo de dato cuando
se utiliza un operador determinado. En el caso de las cadenas de texto, operaciones como la suma
o la multiplicación no están definidas, por lo que operadores como + y * quedan disponibles para
darles un significado y una operación distinta.
En el caso del operador + es posible realizar la operación de concatenación. Esta operación genera
una cadena con el contenido de sus operandos uno detrás del otro. Por ejemplo, intentemos
realizar una operación entre las cadenas '5' y '10' .
https://colab.research.google.com/drive/1l5SMduz7TYna2dyxiwfCBt9MIyAIyprl#printMode=true 24/40
28/4/22, 7:47 Introducción a la programación con Python - Colaboratory
'5' + '10'
'510'
En este caso, es necesario que los dos operandos sean valores de tipo texto. Si intentamos sumar
un valor de otro tipo, como un número entero, con una cadena, se producirá un error de tipo.
50 + '5'
---------------------------------------------------------------------------
<ipython-input-80-2325ac1feebf> in <module>()
----> 1 50 + '5'
Para solucionar esto, es tan sencillo como realizar la conversión (tal como se vio en secciones
anteriores) del valor que no corresponda al tipo adecuado. Si queremos realizar una concatenación
convertimos el número a una cadena:
str(50) + '5'
'505'
50 + int('5')
55
Por su parte, el operador * permite realizar la operación de repetición. Para esta, el segundo
operando debe ser un número entero con la cantidad de veces por las que se desea concatenar
una cadena por sí misma.
'Ora' * 10
'OraOraOraOraOraOraOraOraOraOra'
https://colab.research.google.com/drive/1l5SMduz7TYna2dyxiwfCBt9MIyAIyprl#printMode=true 25/40
28/4/22, 7:47 Introducción a la programación con Python - Colaboratory
También existen operadores creados a partir de palabras reservadas, como el operador in que, en
el caso de las cadenas de texto, permite determinar si una subcadena se encuentra dentro de otra:
'ora' in 'Adorable'
True
"¡Hola %s!" % "Mundo"
'¡Hola Mundo!'
Una de las aplicaciones más útiles de esta idea es la posibilidad de definir un límite de dígitos
decimales de un valor decimal que se van a mostrar en la cadena. Esto se consigue con secuencias
cómo %.2f , donde 2 corresponde a la cantidad de dígitos a mostrar después de la coma tras el
redondeo.
"La nota promedio de este curso es de %.2f" % 99.549678451
El uso de este operador no es recomendado, pues se prefieren alternativas como la función format
o la definición de cadenas literales con formato o f-strings. Estas cadenas se escriben con el
carácter f como prefijo y permiten indicar valores, variables y demás dentro de campos usados
para reemplazar valores, delimitados por llaves curvadas {} .
Por ejemplo, para obtener un nombre y utilizarlo en una oración realizaríamos una operación de
entrada de texto con la función input .
nombre = input('Ingrese su nombre: ')
https://colab.research.google.com/drive/1l5SMduz7TYna2dyxiwfCBt9MIyAIyprl#printMode=true 26/40
28/4/22, 7:47 Introducción a la programación con Python - Colaboratory
Ahora tenemos varias alternativas para usar este nombre en una frase de bienvenida. Una opción
es usar la concatenación de múltiples cadenas.
"¡Bienvenido " + nombre + "!"
'¡Bienvenido Eliana!'
"¡Bienvenido %s!" % nombre
'¡Bienvenido Pedro!'
Las cadenas f nacen como una alternativa más expresiva y comprensible de realizar operaciones
de este tipo. El equivalente en este tipo de cadenas de la instrucción anterior es el siguiente:
f'¡Bienvenido {nombre}!'
'¡Bienvenido Eliana!'
Para hacer esto, usamos el separador : e indicamos el número de caracteres que tendrá la
cadena:
f'Nombre de usuario: {nombre:16}-> id: {1000:10}'
Da igual forma podemos alinear el contenido con el uso de caracteres adicionales. Por ejemplo, si
usamos ^ antes de indicar el número de caracteres la cadena original quedará centrada, con <
alineada hacia la izquierda y con > alineada hacia la derecha.
f'¡Bienvenido {nombre:^24}!'
https://colab.research.google.com/drive/1l5SMduz7TYna2dyxiwfCBt9MIyAIyprl#printMode=true 27/40
28/4/22, 7:47 Introducción a la programación con Python - Colaboratory
f'¡Bienvenido {nombre:>24}!'
'¡Bienvenido Pedro!'
f'¡Bienvenido {nombre:<24}!'
Incluso podemos definir otro carácter con el cual rellenar el texto vacío, indicándolo justo antes del
modificador de alineación:
f'Bienvenido {nombre:!<24}'
'Bienvenido Pedro!!!!!!!!!!!!!!!!!!!'
Esto también se puede combinar con la cantidad de puntos decimales, de manera similar a la
sintaxis usada con el operador % . El siguiente ejemplo crea una cadena de por lo menos 32
caracteres y 2 puntos decimales.
num = 11198741.12399789923254
f"[Valor: {num:32.2f}]"
'[Valor: 11198741.12]'
Las cadenas de texto y los números son tipos de dato que, al igual que muchos otros, tienen la
opción de llamar métodos sobre ellos, una especie de función que se realiza con sus valores y
genera un resultado.
Para llamar un método, es suficiente con utilizar el separador punto . e indicar el nombre del
método. Por ejemplo, un método importante en las cadenas de texto es el anteriormente
mencionado format , que apoya por debajo la ejecución de los f-strings. Esta se realiza de la
siguiente forma:
cadena = "Hola {}"
cadena.format(nombre)
'Hola Eliana'
https://colab.research.google.com/drive/1l5SMduz7TYna2dyxiwfCBt9MIyAIyprl#printMode=true 28/40
28/4/22, 7:47 Introducción a la programación con Python - Colaboratory
En ella se indican las llaves de separación y se pasa el valor dentro de los paréntesis del método.
En las cadenas de texto hay una [gran variedad de métodos] para realizar todo tipo de operaciones
comunes. Algunas de ellas son las siguientes:
Podemos convertir las letras de una cadena a mayúsculas o minúsculas con los métodos
.upper() y .lower() , respectivamente.
cadena = "Python"
cadena.upper()
'PYTHON'
"Python".lower()
'python'
"Python programming language".count('g')
Podemos reemplazar todas las apariciones de la cadena a con la cadena b con el método
replace(a, b) .
"Hola a todos".replace('a', 'o')
'Holo o todos'
Podemos obtener una cadena sin espacios o saltos de línea al principio y al final con el
método lstrip() . Note que los espacios en la mitad de la cadena no son eliminados.
" ¡Bienvenido ! \n\n ".strip()
'¡Bienvenido !'
https://colab.research.google.com/drive/1l5SMduz7TYna2dyxiwfCBt9MIyAIyprl#printMode=true 29/40
28/4/22, 7:47 Introducción a la programación con Python - Colaboratory
5. Expresiones
Hasta el momento somos capaces de realizar las operaciones intermedias de suma, resta,
multiplicación, división y potencia con Python. Por ejemplo, podríamos hacerlo por pasos.
n = 7 ** 2
49
Después le sumamos 50. Podemos reutilizar la variable n , que pasaría a tener el valor 50 + 7 .
2
n = n + 50
99
m = 200 / 12.5
16.0
12.5
.
p = n - m
83.0
Finalmente, podemos tomar ese resultado y multiplicarlo por 0.5 para obtener el resultado final.
https://colab.research.google.com/drive/1l5SMduz7TYna2dyxiwfCBt9MIyAIyprl#printMode=true 30/40
28/4/22, 7:47 Introducción a la programación con Python - Colaboratory
p = p * 0.5
41.5
Lo que hicimos en las celdas anteriores es un proceso bastante largo, que con un par de detalles se
puede complicar. Es lógico pensar que un lenguaje como Python permita operaciones de este
estilo.
Las operaciones con operadores presentadas hasta ahora tienen en común que al ser evaluadas
dan como resultado un valor. Esta propiedad en común nos permite hablar de expresiones,
unidades gramaticales compuestas por cualquier combinación de valores, variables y operadores,
que den como resultado un valor válido. Una expresión siempre es evaluada con la idea de obtener
un valor, por lo que son reemplazables entre sí.
Por ejemplo, la función print recibe una expresión, por lo que cualquiera de estos ejemplos es
válido y equivalente para el valor recibido por la función:
print(500)
500
num = 500
print(num)
500
a = 50
b = 10
print(a * b)
500
nombre = input("Ingrese su nombre: ")
"¡Bienvenido " + nombre + "!"
'¡Bienvenido Eliana!'
5 + 4 - 2 + 9
16
Parece intuitivo, pero hay que tener en cuenta que los operadores están definidos en su mayoría
como operaciones entre dos valores. Veamos el siguiente ejemplo:
Pregunta: ¿cuál cree que será el resultado de esta expresión? ¿es válido realizar esta
sentencia? Intente realizar la operación en su mente o en una hoja de papel antes de
ejecutar la celda o revisar la respuesta.
2
7 − 6 + 5 ÷ 4 × 3
result = 7 - 6 + 5 / 4 * 3 ** 2
print(result)
Respuesta
7 - 6 + 5 / 4 * 3 ** 2
12.25
La operación siguió algunas reglas específicas. Primero realizó la exponenciación, luego la división,
la multiplicación, la resta y finalmente la suma.
En el ejercicio anterior a este utilizamos una lógica adquirida de las matemáticas y del uso natural y
frecuente de estas operaciones para realizar el proceso en el orden correcto con el apoyo de
variables.
Python realiza esta tarea con criterios de precedencia de operadores. Esto permite determinar qué
operador se debe resolver antes, de manera que toda expresión siempre se realice de la misma
manera.
En este caso la exponenciación tiene una prioridad o precedencia mayor al resto de operadores, por
lo que se resuelve antes de continuar con los demás valores. Tal como en el ejercicio planteado,
podemos utilizar paréntesis () para saltarnos estas reglas y especificar operaciones con una
precedencia mayor.
https://colab.research.google.com/drive/1l5SMduz7TYna2dyxiwfCBt9MIyAIyprl#printMode=true 32/40
28/4/22, 7:47 Introducción a la programación con Python - Colaboratory
50 + 7**2 - 200/12.5 * 0.5
91.0
((50 + 7**2) - 200/12.5) * 0.5
41.5
A continuación, se presenta una tabla de precedencia con los operadores vistos hasta el momento
en el curso. Conforme avance en el contenido se irá introduciendo nuevos operadores y
expresiones que se consideran al realizar el proceso de evaluación de una expresión.
Operador Asociatividad Descripción
Además del orden de precedencia, se considera el criterio de asociatividad para decidir en qué
orden se evalúan operadores con el mismo peso. Por ejemplo, con la división y multiplicación,
como están en el mismo nivel de precedencia, se evalúa de izquierda a derecha:
8 / 4 * 5 / 4 * 2
5.0
(((8 / 4) * 5) / 4) * 2
(8 / (4 * (5 / (4 * 2))))
https://colab.research.google.com/drive/1l5SMduz7TYna2dyxiwfCBt9MIyAIyprl#printMode=true 33/40
28/4/22, 7:47 Introducción a la programación con Python - Colaboratory
3
En cambio, la potenciación se evalúa de derecha a izquierda, por lo que una expresión como 32
produce como resultado 38 (desde la izquierda, evaluando primero 23 ) y no 93 (evaluando primero
).
2
3
3 ** 2 ** 3
6561
3 ** (2 ** 3)
6561
(3 ** 2) ** 3
729
a = 10
b = 15
c = 20
c = b = a
print(a)
print(b)
print(c)
10
10
10
6. Comentarios y ayuda
Hemos concluido el tema central de esta unidad, descubriendo conceptos como valor, tipo de dato,
variable, operador y expresión. A partir de ahora, todo el tema es acumulativo, y se utilizaran estas
ideas de forma natural para la presentación de conceptos más avanzados, por lo que le
recomendamos encarecidamente que practique y se apropie de las habilidades adquiridas.
En esta sección final, vamos a presentar algunas utilidades de ayuda que permiten al programador
facilitar la escritura de código en Python.
https://colab.research.google.com/drive/1l5SMduz7TYna2dyxiwfCBt9MIyAIyprl#printMode=true 34/40
28/4/22, 7:47 Introducción a la programación con Python - Colaboratory
6.1. Comentarios
En Python los comentarios son escritos con el carácter # . Cuando aparece este carácter, el resto
de la línea es ignorada y se pasa a ejecutar la siguiente. Veamos un ejemplo:
# Este texto es ignorado por el intérprete.
# No importa lo que se escriba después del símbolo
# Todo es ignorado (/.-+?\...), pero solo en la misma línea.
print("¡Bienvenido al módulo de Introducción a la programación con Python!")
print("Este fragmento no es ignorado.") # Este fragmento está en la misma línea y SÍ es ignor
De esta manera podemos estructurar nuestro código para hacerlo más comprensible:
# PROGRAMA 1 - Multiplicación
# Declaramos una variable con la cantidad inicial.
cantidad = 100
cantidad *= 0.5 # Multiplicamos el valor por 0.5 para obtener la mitad.
# Imprimimos en pantalla el valor resultante:
# print(cantidad) # Podemos descomentar esta línea para imprimir con la función 'print'.
cantidad
50.0
Estos comentarios funcionan línea por línea, y no existe en Python el concepto de comentario
multilínea. Sin embargo, podemos usar cadenas de texto multilínea para "simular" este tipo de
comentario.
'''
Este texto está escrito en una cadena
pero al ubicarlo antes del programa no
afecta la ejecución del código y nos permite
https://colab.research.google.com/drive/1l5SMduz7TYna2dyxiwfCBt9MIyAIyprl#printMode=true 35/40
28/4/22, 7:47 Introducción a la programación con Python - Colaboratory
usarlo como un comentario de múltiples
líneas.
'''
lenguaje = 'Python 3'
print(f'Este programa fue escrito en el lenguaje {lenguaje:^16}')
'''
CUIDADO:
Si no lo usamos con cuidado podemos mostrarlo
en pantalla o incluso asignarlo a variables de
manera no intencional.
'''
'\nCUIDADO: \nSi no lo usamos con cuidado podemos mostrarlo\nen pantalla o incluso asign
encional \n'
En programación se considera más valioso saber encontrar información específica de una utilidad
o que ser capaz de recordar cada detalle de su implementación. En este sentido, Python y Google
Colaboratory ofrecen algunas utilidades para identificar de manera rápida este tipo de información.
Por ejemplo, si queremos conocer los detalles de una función (como print ), podemos utilizar la
función help , que muestra en salida una descripción de su funcionalidad.
help(print)
print(...)
Podemos obtener el mismo resultado con el carácter ? al final de nuestra expresión. Esta utilidad
es propia del entorno de Jupyter, y en Google Colab se muestra en una ventana propia al costado
derecho de la pantalla.
print?
https://colab.research.google.com/drive/1l5SMduz7TYna2dyxiwfCBt9MIyAIyprl#printMode=true 36/40
28/4/22, 7:47 Introducción a la programación con Python - Colaboratory
Google Colaboratory nos permite también realizar compleción de código. Por ejemplo, definamos
una cadena de texto:
cadena = 'Python'
cadena.
y usar la combinación Ctrl + Espacio para hacer aparecer una lista con, entre otras cosas, todos los
posibles métodos disponibles para cadenas de texto. Desplácese con las flechas de dirección para
ubicar el método lower , y presione Enter para completar el código.
cadena.
Además, puede pasar el ratón por encima del nombre del método o usar la combinación Ctrl +
Mayus + Espacio para mostrar una vista previa de la documentación.
En el transcurso del curso utilizaremos Python Tutor, una herramienta para la visualización de la
ejecución de código en Python y otros lenguajes. Para utilizarlo, debemos instalarlo y configurarlo
con una celda como la siguiente:
!pip3 -q install tutormagic
%load_ext tutormagic
Con él podemos ver el contenido de las variables en cada paso de la ejecución. Para usarlo,
creamos una celda de código con el texto
https://colab.research.google.com/drive/1l5SMduz7TYna2dyxiwfCBt9MIyAIyprl#printMode=true 37/40
28/4/22, 7:47 Introducción a la programación con Python - Colaboratory
%%tutor -s
Ejecute la siguiente celda y utilice los botones Next y Prev para navegar entre las líneas de código.
Preste atención a la sección Frames, en donde se puede observar el contenido de cada variable en
el momento de la ejecución señalado por la flecha roja. Además, en el recuadro Print output
aparecerá la salida del código conforme avanza la ejecución.
%%tutor -s -h 500
a = 10
b = 1
a = b + 15
b = a - 40
b = b * a - 2
print(f"{a + b * (b + a):*^24}")
Referencias
Este material fue tomado y adaptado del libro How to Think Like a Computer Scientist: Learning with
Python 3, Capítulo 1 y 2.
Copyright (C) Brad Miller, David Ranum, Jeffrey Elkner, Peter Wentworth, Allen B.
Downey, Chris
Meyers, and Dario Mitchell. Permission is granted to copy, distribute
and/or modify this document under the terms of the GNU Free Documentation
License,
Version 1.3 or any later version published by the Free Software
Foundation; with
Invariant Sections being Forward, Prefaces, and
Contributor List, no Front-Cover Texts,
and no Back-Cover Texts. A copy of
the license is included in the section entitled “GNU
Free Documentation
License”
https://colab.research.google.com/drive/1l5SMduz7TYna2dyxiwfCBt9MIyAIyprl#printMode=true 38/40
28/4/22, 7:47 Introducción a la programación con Python - Colaboratory
Recursos adicionales
En esta sección encontrará material adicional para reforzar los temas y conceptos discutidos:
Créditos
Profesores:
https://colab.research.google.com/drive/1l5SMduz7TYna2dyxiwfCBt9MIyAIyprl#printMode=true 39/40
28/4/22, 7:47 Introducción a la programación con Python - Colaboratory
https://colab.research.google.com/drive/1l5SMduz7TYna2dyxiwfCBt9MIyAIyprl#printMode=true 40/40