Está en la página 1de 40

28/4/22, 7:47 Introducción a la programación con Python - Colaboratory

Introducción a la programación con Python

¡Le damos la bienvenida al módulo de Introducción a la programación con Python!

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.

1. Lenguaje de programación Python

Un lenguaje de programación es un grupo de reglas de escritura que le permiten a una persona


comunicarse con un computador e indicar una serie de pasos que este debe seguir para realizar
una tarea determinada. Dentro de la amplia variedad de lenguajes de programación existentes se
destaca Python, un lenguaje de programación diseñado para permitir escribir código rápido, legible
y compatible con múltiples plataformas. A su alrededor existe una enorme comunidad científica,
que lo apoya con diversas librerías y módulos especializados que lo hacen muy popular en el área
de la ciencia de datos.

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.

Nota: para más información respecto a Google Colaboratory, lo invitamos a que


revise primero el notebook de Introducción a Jupyter Notebooks disponible en los
materiales del curso.

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

2. Valores y tipos de datos

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.

2.1. Cadenas de texto

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.

Al trabajar con cadenas de texto, es importante considerar el concepto de las secuencias de


escape. Estas son secuencias de caracteres escritos con letras y símbolos básicos que permiten
representar caracteres especiales usando el carácter \ como prefijo en secuencias como \n y \t ,
o con el uso de caracteres especiales como \\ , \' , \" .

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"

'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.

Nota: en términos sencillos, esta función se escribe seguida de unos paréntesis () ,


dentro de los cuales se indica el valor a imprimir. Existen una gran variedad de
funciones, que se verán en detalle en la Unidad 4.

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

distintas. Este se escribe con el carácter '\t' :

print('Primero\tSegundo\tTercero')

print('1\t2\t3')

print('1ro\t2do\t3ro')

print('El primero\tEl segundo\tEl tercero')

Primero Segundo Tercero

1 2 3

1ro 2do 3ro

El primero El segundo El tercero

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: (')'

File "<ipython-input-2-e39af84334d3>", line 1

'Esta es una comilla simple: (')'

SyntaxError: invalid syntax

SEARCH STACK OVERFLOW

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 (\")")

Estas comillas son simples (')

Estas comillas son dobles (")

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

"""

'\n1. Hola\n2. Mundo \n * Hola mundo\n'

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$

File "<ipython-input-5-ce8e46003fb0>", line 1

500$

SyntaxError: invalid syntax

SEARCH STACK OVERFLOW

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?

Python es capaz de interpretar estos valores (llamados literales) directamente realizando la


distinción entre tres tipos de números:

2.2.1. Números enteros

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

File "<ipython-input-6-d31c5f03e990>", line 1

0001

SyntaxError: invalid token

SEARCH STACK OVERFLOW

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

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:
1 0
0xAC → 10(16 ) + 12(16 ) = 160 + 12 = 172

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.

¿Cómo sabe un programador que un valor es efectivamente un número entero?

Por ejemplo, ¿cómo diferenciamos estos dos valores?

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.

2.2.2. Números decimales

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

2.2.3. Números imaginarios

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

Al evaluar su tipo, se considera este tipo de expresiones con tipo complex :

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.

2.2.4. Conversión de tipos

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.

Veamos la función str :

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

En el caso de los números complejos la operación de conversión a entero o flotante no está


definida. Sin embargo, sí es posible tomar estos tipos como entrada, que pasan a conformar la
parte real del número complejo creado.

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

puede hacer a partir de archivos o de manera directa con funciones especiales.

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.

Ejecute la siguiente celda e ingrese una cadena con su nombre:

input('Ingrese su nombre: ')

Ingrese su nombre: Eliana

'Eliana'

Esta función tiene un valor de retorno, lo que significa que se convierte en el valor de texto
ingresado por el usuario.

Nota: el concepto de valor de retorno de una función se verá más adelante.

Uno de los conceptos más importantes y poderosos en los lenguajes de programación es el


concepto de variable. La idea es recordar un valor asociándole un nombre. Este nombre
corresponde a una variable, que como su nombre lo indica, puede variar su valor en un futuro.

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: ')

Ingrese su nombre: Eliana

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.

Si más adelante en nuestro programa queremos recordar el valor almacenado en la variable, es


suficiente con usar este nombre como si fuera un valor. Por ejemplo, podemos imprimir el valor
contenido en la variable con la función print :

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

Veamos que sucede si intentamos guardar en una variable p el valor de su ejecución:

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.

Entonces, ¿qué valor quedó almacenado en la variable p ?

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.

Nota: esto es diferente al concepto de variable de las matemáticas. En matemáticas,


si se le da a x el valor 3 , no puede cambiar para
referirse a un valor diferente a la
mitad de los cálculos.

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: ")

Ingrese un número entre 0 y 100: 69

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

File "<ipython-input-19-beb598da8e38>", line 1

17 = n

SyntaxError: can't assign to literal

SEARCH STACK OVERFLOW

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

3.1. Reglas de nombrado de variables

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 _ .

Nota: En Python existen algunas convenciones consideradas buenas prácticas a la


hora de escribir código en este lenguaje. Una de ellas es la forma de asignar
nombres a variables, en la que se recomienda escribir palabras en minúscula
separadas por un 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

Si tienen un número, no puede ser el primer carácter.

1er_nombre = "Juan"

print(1er_nombre)

File "<ipython-input-52-e792fb5d4351>", line 1

1er_nombre = "Juan"

SyntaxError: invalid syntax

SEARCH STACK OVERFLOW

__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.

False class from or

None continue global pass

True def if raise

and del import return

as elif in try

assert else is while

async except lambda with

await finally nonlocal yield

break for not

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.

4.1. Operadores numéricos

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

Los espacios entre ellos son ignorados por el intérprete.

100-          20

80

10.5 + 4.0

14.5

¿Qué sucede si intentamos sumar un número entero y un número complejo?

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

Símbolos del operador Operación representada Escritura Notación matemática

- (antes de un valor) Negación numérica -a −a

- (entre dos valores) Substracción a - b a − b

+ Adición a + b a + b

* Multiplicación a * b a × b

/ División a / b a ÷ b

% Módulo o residuo a % b a mod b

** Exponenciación a ** b a
b

// División entera o división piso a // b ⌊a ÷ b⌋

La operación de módulo ( % ) es el resto o residuo de una división entera, obtenido en un proceso


tradicional de división a mano. Por su parte, el operador de división piso produce el entero
inmediatamente menor de la división. Esto corresponde al cociente de la división entera
únicamente para números positivos.

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

---------------------------------------------------------------------------

TypeError Traceback (most recent call last)

<ipython-input-76-42675b65c4ca> in <module>()

----> 1 c // a

TypeError: can't take floor of complex number.

SEARCH STACK OVERFLOW

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

Se puede resumir de esta manera:

a = 2

a += 1

y de igual manera con el resto de los operadores discutidos:

a = 0

a += 10

a -= 5

a *= 2

a /= 5

a **= 3

8.0

4.2. Operadores en cadenas de texto

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'

---------------------------------------------------------------------------

TypeError Traceback (most recent call last)

<ipython-input-80-2325ac1feebf> in <module>()

----> 1 50 + '5'

TypeError: unsupported operand type(s) for +: 'int' and 'str'

SEARCH STACK OVERFLOW

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'

Y si queremos hacer una suma convertimos la cadena a un número entero:

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

Otro operador sobre cadenas de texto, menos usado en la actualidad, es el operador % de


interpolación, que permite realizar un formato del texto, inspirado en el lenguaje de programación
C. En la primera cadena se define una sintaxis especial de secuencias para dar formato a el valor
recibido como entrada en el segundo valor. Para esto, se usa el mismo carácter % dentro de la
cadena, seguido del tipo de dato esperado. Por ejemplo, si esperamos una cadena de texto usamos
la secuencia %s dentro de nuestra cadena y esta será reemplazada por el valor ingresado. Veamos
un ejemplo:

"¡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

'La nota promedio de este curso es de 99.55'

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: ')

Ingrese su nombre: Eliana

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!'

También podemos usar la sintaxis de formato con el operador % .

"¡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!'

Esta especificación ofrece gran flexibilidad en el manejo de cadenas de texto, heredada de lo


construido en alternativas previas. En este tipo de cadenas podemos de igual forma realizar el
formateo de la entrada, usando el separador punto y coma : . Por ejemplo, una utilidad importante
es la de rellenar con espacios en blanco hasta obtener una cadena de un número determinado.

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}'

'Nombre de usuario: Eliana -> id: 1000'

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}!'

'¡Bienvenido Pedro !'

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}!'

'¡Bienvenido Pedro !'

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]'

4.2.1. Métodos comunes en cadenas de texto

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.

Nota: los conceptos de objetos y métodos se retomarán en la Unidad 4.

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'

También podemos llamarlos directamente desde valores literales.

"Python".lower()

'python'

Podemos obtener un conteo de apariciones de una subcadena en otra con el método


.count() .

"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

En matemáticas, es fácil encontrar operaciones compuestas como la siguiente:


200
2
((50 + 7 ) − ) × 0.5
12.5

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.

Primero, obtenemos la potencia 7 .


2

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

En otra variable, obtenemos la división 200 ÷ 12.5:

m = 200 / 12.5

16.0

Ahora restamos las dos variables, para obtener (50 + 72 ) − 200

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

En la sección anterior planteamos una aplicación de la concatenación al unir tres cadenas:

nombre = input("Ingrese su nombre: ")

"¡Bienvenido " + nombre + "!"

Ingrese su nombre: Eliana

'¡Bienvenido Eliana!'

Esto es posible también con operadores numéricos:


https://colab.research.google.com/drive/1l5SMduz7TYna2dyxiwfCBt9MIyAIyprl#printMode=true 31/40
28/4/22, 7:47 Introducción a la programación con Python - Colaboratory

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.

Por ejemplo, si realizáramos esta operación sin indicar paréntesis:


200
2
((50 + 7 ) − ) × 0.5
12.5

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

Luego, si utilizamos los paréntesis para realizar esta operación:

((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

(expresión) Izquierda a derecha Expresión en paréntesis.

** Derecha a izquierda Exponenciación.

-x , +x Izquierda a derecha Positivo y negativo.

* , / , % , // Izquierda a derecha Multiplicación, división, módulo y división piso.

+, - Izquierda a derecha Adición y substracción.

= Derecha a izquierda Asignació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

La anterior expresión es equivalente a esta expresión:

(((8 / 4) * 5) / 4) * 2

Si quisiéramos realizar las operaciones de derecha a izquierda, deberíamos indicarlo


explícitamente con paréntesis:

(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

De igual forma, la asignación se resuelve de derecha a izquierda, con la posibilidad de realizar


múltiples asignaciones, tal como se mencionó en secciones anteriores.

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

Conforme se aprende a construir código más complejo y detallado se complica la capacidad de


comprender el propósito de las distintas líneas y fragmentos de un código. Para esto se plantea el
concepto de comentario, una anotación de texto ignorada por el intérprete y que nos permite añadir
información importante en distintas partes del código.

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

¡Bienvenido al módulo de Introducción a la programación con Python!

Este fragmento no es ignorado.

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.

'''

Este programa fue escrito en el lenguaje Python 3

'\nCUIDADO: \nSi no lo usamos con cuidado podemos mostrarlo\nen pantalla o incluso asign
encional \n'

6.2. Funciones de ayuda

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)

Help on built-in function print in module builtins:

print(...)

print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)

Prints the values to a stream, or to sys.stdout by default.

Optional keyword arguments:

file: a file-like object (stream); defaults to the current sys.stdout.

sep: string inserted between values, default a space.

end: string appended after the last value, default a newline.

flush: whether to forcibly flush the stream.

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'

Ahora, para acceder a sus métodos y variables podemos escribir:

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.

6.3. Python tutor

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

al inicio de la celda, y ubicamos nuestro código en Python en el resto de la celda.

Nota: la etiqueta -s es indispensable para el correcto funcionamiento en la


plataforma Colab. Se han reportado problemas de texto invisible, que puede
solucionarse borrando la caché del sitio Google Colaboratory en su navegador.

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}")

UsageError: Cell magic `%%tutor` not found.

Lo invitamos a utilizar activamente esta herramienta para comprender la ejecución de los


programas conforme avancemos en el curso.

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

P. Wentworth, J. Elkner, A.B. Downey, C. Meyers - How to Think Like a Computer


Scientist:
Learning with Python 3
Documentation (3rd Edition)
How to Think Like a Computer Scientist: Interactive Edition
Aprenda a Pensar Como un Programador
con Python
(español)

Recursos adicionales

En esta sección encontrará material adicional para reforzar los temas y conceptos discutidos:

Python 3: documentación oficial.


Python - Tutorial de Python (Español)

Python - Built-in Types


Python - 2. Usando el intérprete de Python
Python - 3. Una introducción informal a Python

Créditos

Profesores:

Felipe Restrepo Calle, PhD


Fabio Augusto González, PhD
Jorge Eliecer Camargo, PhD
Asistentes docentes:

Alberto Nicolai Romero Martínez


Edder Hernández Forero

Universidad Nacional de Colombia - Facultad de Ingeniería

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

También podría gustarte