Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Download

Jupyter notebook Práctica Introductoria/Introducción a Python.ipynb

375 views
Kernel: Python 3

Breve introducción a Python

Operaciones con números

Las operaciones básicas en Python se representarán de forma usual: suma (++), resta (-), producto (*) y cociente (//). Asimismo, los paréntesis ()( ) permitirán agrupar determinadas expresiones matemáticas. A continuación, mostramos algunos ejemplos de aplicación de las citadas operaciones.

Para ejecutar una celda hay que pulsar la combinación de teclas MAYÚSCULA+INTRO o bien usar el botón de Play del menú

pi=3.14; 7-pi
3.86
28-6*7
-14
(45-9*8)/34
-0.7941176470588235
45-(9*8/34) # Estas dos últimas operaciones representan cálculos diferentes
42.88235294117647
pi/3 # Obsérvese que esta operación devuelve una expresión aproximada
1.0466666666666666

Para modificar la precisión de la solución proporcionada por Python, puede utilizarse el comando round. Así, podemos obtener redondear el número calculado en la celda anterior a 55 cifras significativas de la siguiente forma:

round(pi/3,5)
1.04667

Los números enteros (e.g., 1,7,28-1,7,28) son de tipo int, mientras que los números decimales (e.g., 4.8,1.6-4.8,1.6) son de tipo float. La operación cociente devuelve por defecto expresiones de tipo float. Para calcular una división entera, basta con utilizar el símbolo //. Asimismo, % permite obtener el resto de una división entre números. Veamos los siguientes ejemplos.

512/163 # cociente entre dos números. Devuelve un objeto de tipo float
3.1411042944785277
512//163 # división entera. Descarta la parte decimal del número
3
512%163 # resto de la división
23
163*3+23 # comprobación del algoritmo de la división entera
512

Para calcular potencias de números, utilizaremos el símbolo **. Así, por ejemplo,

5**3 # 5 elevado al cubo
125
2**8 # 2 elevado a 8
256

Es interesante mencionar que el símbolo igual (==) se utiliza en Python para asignar valores a variables. Por ejemplo, el volumen de un cono cuya base tiene área 2020 y altura 33 puede calcularse como

area=20; altura=3; volumen=(pi/3)*area*altura # asignación de valor a la variable volumen volumen # es preciso indicar el nombre de la variable para conocer su valor
62.8

En caso de realizar operaciones que combinen objetos de tipo int con objetos de tipo float, se obtendrán resultados de tipo float. A continuación se muestra un par de ejemplos.

7.5/2
3.75
3 * 3.75 / 1.5
7.5

Manipulación de listas en Python

Una lista (o vector) es una colección de objetos separados por comas. En Python, las listas se representan mediante corchetes. Sus elementos se enumeran separados por comas. Una lista puede contener elementos de diferente naturaleza, aunque lo más habitual es que los elementos de una lista sean del mismo tipo.

cubos=[1*1*1,2*2*2,3*3*3,4*4*4,5*5*5] # lista de los cubos de los 5 primeros números naturales cubos
[1, 8, 27, 64, 125]

Es posible acceder a cualquier entrada de una lista. Para ello, basta con incluir entre corchetes, después del identificador de dicha lista, la posición a la que queremos acceder. Es importante observar que el primer elemento de dicha lista está indexado en 00. Asimismo, es posible hacer referencia al último elemento de la lista mediante el índice 1-1. Así, por ejemplo,

cubos[0] # devuelve el primer elemento de la lista cubos
1
cubos[1] # devuelve el segundo elemento de la lista cubos
8
cubos[-1] # devuelve el último elemento de la lista cubos
125

Para obtener sublistas de una lista dada, se utilizará el símbolo : indicando el rango de elementos a seleccionar de la misma. Obsérvense los siguientes ejemplos:

cubos[:] # devuelve la lista completa
[1, 8, 27, 64, 125]
cubos[1:] # devuelve todos los elementos de la lista a partir del segundo
[8, 27, 64, 125]
cubos[-4:] # devuelve los cuatro últimos elementos de la lista
[8, 27, 64, 125]

Dos listas pueden ser concatenadas mediante el símbolo de suma (++) aplicado a dichas listas. Así,

cuadrados=[6*6,7*7,8*8] cubos+cuadrados # unión de dos listas, reuniendo los elementos de ambas
[1, 8, 27, 64, 125, 36, 49, 64]

El siguiente ejemplo muestra cómo modificar el contenido de los elementos de una lista:

cubos=[1, 8, 27, 65, 125] # un elemento de la lista no corresponde al cubo de ningún número cubos[3]=64 # reemplazamos el valor incorrecto cubos # comprobamos el contenido de la lista actualizada
[1, 8, 27, 64, 125]

Para añadir nuevos elementos a una lista existente, Python dispone del comando append(). Por ejemplo,

cubos.append(216) # añadimos el cubo de 6 a la lista "cubos" cubos.append(7**3) # además, añadimos el cubo de 7 cubos
[1, 8, 27, 64, 125, 216, 343]

Es posible eliminar ciertos elementos de una lista asignándoles una lista vacía (sin elementos). Así,

cubos[1:3]=[] # eliminamos los elementos 2º y 3º de la lista "cubos" cubos
[1, 64, 125, 216, 343]

La función len() resulta de gran utilidad para conocer el número de elementos (longitud) de una lista:

len(cubos) # devuelve el número de elementos de la lista
5

También es posible generar listas anidadas, es decir, listas cuyos elementos son listas a su vez. Un ejemplo es el siguiente:

l = ['a', 'b', 'c'] # esta lista contiene caracteres n = [1, 2, 3] # lista formada por números x=[l,n] # reunión de la listas anteriores en una sola lista x # devuelve el contenido de la nueva lista
[['a', 'b', 'c'], [1, 2, 3]]
x[0] # contenido de la primera sublista de x, i.e., la lista de letras
['a', 'b', 'c']
x[0][1] # permite acceder a la segunda letra de la sublista "l"
'b'

Un ejemplo sencillo de programación en Python

El comando while

El siguiente ejemplo muestra cómo generar una lista de números de Fibonacci, donde cada elemento de la lista se calcula como la suma de los dos valores que le preceden. Para ello, haremos uso de la estructura de control while, que permite programar la repetición de una determinada tarea hasta que el criterio de parada especificado deje de verificarse.

a,b=0,1 # inicializamos a=0 y b=1 while b<10000: # criterio de parada: llegar al último término de la sucesión que sea menor que la cantidad prefijada; en este caso, 10000 print(b, end=' ') # el comando "end" permite listar todos los elementos generados en una única línea separados por un determinado nº de espacios a,b=b,a+b # obsérvese que cada término se genera como suma de los dos anteriores
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765

Los siguientes operadores pueden utilizarse en código Python con la finalidad de comparar cantidades: << (menor que), >> (mayor que), ==== (igual a), <=<= (menor o igual que), >=>= (mayor o igual que) y !=!= (distinto de).

Otras estructuras de control en Python

Además del comando while mostrado en el ejemplo anterior, en esta sección repasaremos otras estructuras de control utilizadas frecuentemente en Python.

El comando if

En primer lugar, veamos un ejemplo relativo al comando condicional if.

x=int(input("Introduzca un número entero no negativo: "))
Introduzca un número entero no negativo: 3
if x<0: x=0 print('el entero negativo introducido ha sido sustituído por cero ') elif x==0: print('Cero') elif x==1: print('Singular') else: print('Plural')
Plural

En estructuras de tipo if, el comando elif (abreviatura de "else if") es opcional. Así pues, pueden haber varios elif o incluso ninguno.

El comando for

En Python, la estructura for varía entre los elementos de una lista. Así, por ejemplo,

people=['Fibonacci','Tartaglia','Cardano']
for w in people: print(w,len(w)) # proporciona el nº de caracteres de cada una de las cadenas anteriores
Fibonacci 9 Tartaglia 9 Cardano 7

La función range()

Si es preciso realizar un proceso iterativo sobre una sucesión de números, la instrucción range() resulta de utilidad. Así, por ejemplo,

for j in range(20): print(j,end=' ')
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

De forma más compacta:

list(range(20))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]

Obsérvese que el valor introducido en el comando range() queda excluído de la secuencia obtenida. También es posible indicar a range() que comience en otro valor distinto de cero:

list(range(1,20))
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]

e incluso que la diferencia entre dos valores cualesquiera a mostrar sea mayor que uno. Por ejemplo,

list(range(1,20,4)) # paso=4; valor inicial=1
[1, 5, 9, 13, 17]

Cómo definir funciones en Python

A continuación, mostramos cómo crear una función en Python que permite calcular los primeros kk términos de la sucesión de Fibonacci. Para un mejor entendimiento del código listado a continuación, es recomendable revisar las líneas de código incluidas al comienzo de la sección dedicada al comando while. Recuérdese que dicho comando permitía listar todos los términos de la citada sucesión de valor inferior a un número indicado.

def fib(n): # lista los primeros n términos de Fibonacci. a, b = 0, 1 while a < n: print(a, end=' ') a, b = b, a+b print()

Calculemos los términos de la sucesión de Fibonacci <2000<2000:

fib(2000)
0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597

Obsérvese que la palabra def indica que estamos definiendo una función en Python. A continuación, indicamos su nombre así como el o los parámetros de entrada (en este caso, el único parámetro kk hace referencia a los primeros kk términos de dicha sucesión). Las líneas siguientes contienen el código de la función, que ha de estar indentado.

La siguiente función proporciona una modificación de la anterior. Ésta almacena el resultado obtenido en una lista, lo cual facilita posteriores operaciones.

def fib1(n): # lista los primeros n términos de la sucesión de Fibonacci. result = [] a, b = 0, 1 while a < n: result.append(a) # añade a la lista result un nuevo elemento a, b = b, a+b return result
f100=fib1(100) f100
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]