Python
Python es un lenguaje de programación poderoso y rápido, se lleva bien con otros lenguajes, corre en cualquier lugar, es amigable, fácil de aprender y es de software libre.
Python es un lenguaje de programación poderoso y rápido, se lleva bien con otros lenguajes, corre en cualquier lugar, es amigable, fácil de aprender y es de software libre.
En la gran mayoría de los lenguajes de programación el compilador o intérprete ignora los espacios que el usuario utilice para escribir su código. En Python, los espacios se utilizan para formar grupos de instrucciones y también para la sintaxis de algunas instrucciones.
La sentencia de control if-elif-else
tiene la siguiente sintaxis:
Sintaxis:
if condición A:
instrucción A1
instrucción A2
...
instrucción An
elif condición B:
instrucción B1
instrucción B2
...
instrucción Bn
else:
instrucción C1
instrucción C2
...
instrucción Cn
Ejemplo 1. if-else
if 2<3:
print("verdadero")
else:
print("falso")
print("fin")
Ejemplo 2. Solicite dos números y
. Si x
es positivo y
se
multiplica por dos, si x
es cero y
se multiplica por 3 y si x
es negativo y se
multiplica por cuatro.
x=int(input("Ingrese el valor de x "))
y=int(input("Ingrese el valor de y "))
if x>0:
z=y*2
print("Positivo")
elif x==0:
z=y*3
print("Cero")
else:
z=y*4
print("Negativo")
print(z)
El ciclo for
tiene la siguiente sintaxis:
for iterador in iterando:
instrucción 1
instrucción 2
...
instrucción n
Ejemplo 3. Un ciclo que imprime numeros enteros desde 0 hasta 9.
for i in range(10):
print(i)
La función range
genera una secuencia de números enteros comenzando desde 0, con un incremento unitario. Por esa
razón es que se generan los números enteros desde 0 hasta 9. Es posible cambiar el valor inicial de la secuencia y el incremento.
Ejemplo 4. Considere los primeros 10 números naturales, los pimeros 5 urales se multiplican por 2 y los siguientes números naturales se multiplican por 3.
for x in range(1,11):
if x<=5:
print(f'{x} -> {x*2}')
else:
print(f'{x} -> {x*3}')
El ciclo while
repite las instrucciones siempre y cuando la condición sea verdadera. La sintaxis del ciclo
while
es la siguiente:
while condición:
instrucción 1
instrucción 2
...
instrucción n
Ejemplo 5. Se imprimen los primeros 10 numeros naturales.
i = 1
while i <= 10:
print(i)
i=i+1
Una lista es un conjunto de valores ordenados y modificables que permite repeticiones. Los elementos en la
lista son numerados comenzando desde 0, de manera que la localidad donde se encuentra el último elemento
para una lista de tamaño n
será n-1
.
lista = ["manzana", "plátano", "naranja", "mandarina", "maracuyá"]
print(lista)
El acceso a algún elemento en particular de la lista se hace utilizando los corchetes, indicando dentro de ellos la posición que ocupa dentro de la lista.
lista[posición]
Es posible usar numeración negativa para hacer referencia a los elementos dentro de una lista pero en orden reverso.
Es decir, -1
hace referencia al último elemento, -2
al penúltimo, -3
al antepenúltimo
y así sucesivamente.
Es posible seleccionar un subconjunto de elementos contiguos contenidos en la lista especificando el rango de posiciones que ocupan dentro de la lista.
lista = ["manzana", "plátano", "naranja", "mandarina", "maracuyá", "toronja", "mango", "guayaba"]
print(lista[2:6])
Por otro lado, si se omite el límite inferior del rango, python considerará 0 como posición inicial.
lista = ["manzana", "plátano", "naranja", "mandarina", "maracuyá", "toronja", "mango", "guayaba"]
print(lista[:6])
Finalmente, si se omite el límite superior del rango, python considerará el último elemento como tal límite.
lista = ["manzana", "plátano", "naranja", "mandarina", "maracuyá", "toronja", "mango", "guayaba"]
print(lista[2:])
Para determinar el tamaño de una lista se puede utilizar la función len()
print(len(lista))
En python la declaración de funciones requiere muy poco código. Basta con utilizar la palabra clave def
para
comenzar la definición de la función.
def nombreFuncion(parámetroEntrada):
instrucción 1
instrucción 2
...
instrucción n
return parámetroSalida
Ejemplo 6. Escriba una función que calcule el factorial de una función. Verifique que el número ingresado por el usuario sea positivo y considere que por definición el factorial de cero es uno.
def factorial(x):
if x>=0:
f=1
if x>0:
f=1
for i in range(1,x+1):
f=f*i
return f
else:
print("El factorial no está definido")
x = int(input("Introduzca un número: "))
print(f'{x}! = {factorial(x)}')
Ejemplo 7. Escriba una función que calcule el factorial de una función. Considere la definción recursiva del factorial. Verifique que el número ingresado por el usuario sea positivo y considere que por definición el factorial de cero es uno.
def factorial(x):
if x==0:
f=1
else:
f=x*factorial(x-1)
return(f)
x = int(input("Ingrese un número"))
if x>=0:
fac=factorial(x)
print(f'{x}! = {fac}')
else:
print("El factorial no está definido en los negativos")
Python no tiene de forma nativa soporte para arreglos, en su lugar opta por usar listas anidadas. Sin embargo, es posible utilizar el paquete NumPy para utilizar los arreglos de manera semejante a la existente en otros lenguajes. NumPy además resulta ser más eficiente en el manejo de datos que su contraparte nativa de python mediante listas anidadas. Adicionalmente, NumPy incluye más herramientas que extienden la funcionalidad de Python.
Sintaxis:
import numpy
arreglo = numpy.array([1, 2, 3, 4, 5])
print(arreglo)
Esta sintaxis puede resultar incómoda porque será necesario escribirla todas las veces que necesite declarar un arreglo. Una alternativa para simplificar un poco esta declaración es mediante la creación de un alias, esto de la siguiente manera:
import numpy as np
arreglo = np.array([1, 2, 3, 4, 5])
print(arreglo)
Para declarar un arreglo bidimensional se utiliza la siguiente sintáxis:
import numpy as np
arreglo = np.array([[1, 2, 3], [4, 5, 6]])
print(arreglo)
El atributo ndim
devuelve la cantidad de dimensiones que tiene
un arreglo.
import numpy as np
arreglo = np.array([[1, 2, 3], [4, 5, 6]])
print(arreglo.ndim)
El acceso a elementos dentro de un arreglo en numpy
es similar
a la forma que se utiliza para las listas. Recuerde que elos índice
para los elementos dentro del arreglo comienza en 0.
import numpy as np
arreglo = np.array([1, 2, 3, 4, 5])
print(arreglo[0])
Para el caso de un arreglo bidimensional se utiliza una coma para separar la posición de las dimensiones.
import numpy as np
arreglo = np.array([[1, 2, 3], [4, 5, 6]])
print(arreglo[1, 2])
Si el arreglo tiene más dimensiones se utiliza la misma idea para cada una de ellas.
import numpy as np
arreglo = np.array([[[1, 2, 3], [4, 5, 6]],[[7, 8, 9], [10, 11, 12]])
print(arreglo[0, 1, 2])
De la misma forma que con las listas, también es posible utilizar índices negativos.
arreglo = np.array([[1,2,3,4,5], [6,7,8,9,10]])
print('El último elemento en el arreglo bidimensional', arreglo[1, -1])
Es posible cortar un subconjunto de un arreglo para definir uno nuevo. Esto es de especial utilidad para extraer vectores de una matriz existente, ya sea para definir un nuevo vector o bien realizar operaciones con el.
El corte (o rebanada) de la matriz se hace indicando un rango de posiciones, es decir [inicio : fin]
. Además
se puede especificar un incremento [inicio : fin : incremento]
. Si no se especifica un inicio, de asume como
0, y si no se especifica un final se asume el último elemento de la matriz. Si no se especifica un incremento, se asume
como 1.
import numpy as np
arreglo = np.array([1, 2, 3, 4, 5])
arreglo2 = arreglo[1:4]
print(arreglo2)
En el siguiente ejemplo, se hace una rebanada de la matriz especificando un incremento diferente a uno:
import numpy as np
arreglo = np.array([1, 2, 3, 4, 5, 6, 7])
print(arreglo[1:5:2])
Es posible realizar rebanadas de arreglos de 2 ó más dimensiones, resultando un vector o una matriz según sea el caso.
El siguiente ejemplo realiza una rebanada de un arreglo bidimensional y el resultado es un vector. Observe que el vector es una rebanada de la segunda dimensión de la matriz.
import numpy as np
arreglo = np.array([[1, 2, 3, 4, 5], [6, 7, 8, 9, 10]])
print(arreglo[1, 1:4])
En este ejemplo se hace una rebanada de un arreglo bidimensional y el resultado es nuevamente un vector. En esta ocasión el vector es una rebanada vertical por lo que el resultado contiene elementos de ambas dimensiones de la matriz.
import numpy as np
arreglo = np.array([[1, 2, 3, 4, 5], [6, 7, 8, 9, 10]])
print(arreglo[0:2, 2])
En este último caso, se hace una rebanada que resulta una matriz que contiene elementos de ambas dimensiones de la matriz original.
import numpy as np
arreglo = np.array([[1, 2, 3, 4, 5], [6, 7, 8, 9, 10]])
print(arreglo[0:2, 1:4])
Es posible generar un arreglo o matriz lleno de números (pseudo) aleatorios, para ello se puede utilizar el método
rand
. Para la generación, basta con especificar las dimensiones del arreglo que se desea generar.
Ejemplo. Generación de un vector unidimensional de 20 elementos aleatorios.
import numpy as np
arreglo = np.random.rand(20)
print(arreglo)
Ejemplo. Generación de una matriz bidimensional de tamaño 5x3
, es decir 5 renglones y 3 columnas.
import numpy as np
arreglo = np.random.rand(5, 3)
print(arreglo)
Ejemplo. Generación de una matriz tridimensional de tamaño 5x3x2
, es decir 5 matrices de 3 renglones y
2 columnas cada una de ellas.
import numpy as np
arreglo = np.random.rand(5, 3, 2)
print(arreglo)
Para añadir elementos al final de un arreglo, se puede utilizar el método append
contenido en la biblioteca
Numpy
. El argumento axis
permite especificar el lugar donde serán añadidos los elementos al
arreglo.
Ejemplo. Añadir una matriz al final de una matriz, justo debajo de la matriz inicial (axis=0
).
import numpy as np
arreglo = np.append([[1, 2], [3, 4]], [[10, 20], [30, 40]], axis=0)
print(arreglo)
Ejemplo. Añadir una matriz al final de la matriz, a la derehca de la matriz inicial (axis=1
).
import numpy as np
arreglo = np.append([[1, 2], [3, 4]], [[10, 20], [30, 40]], axis=1)
print(arreglo)
Si se desea controlar la forma en la que los números contenidos en un arreglo serán impresos, se puede utilizar el método
printoptions
de la biblioteca Numpy
.
Ejemplo. Generar una matriz bidimensional de tamaño 10x5 llena con números aleatorios no enteros con valores entre 0 y 1. Imprimir la matriz mostrando únicamente 4 cifras significativas no enteras.
import numpy as np
x = np.random.rand(10,5)
with np.printoptions(precision=4, suppress=True):
np.set_printoptions(formatter={'float': '{: 0.4f}'.format})
print(x)
La función with
permite especificar el formato mediante el cual serán impresos unicamente los números en el
arreglo, dejando intactos los parámetros de los demás print
que pudiesen existir. El parámetro
suppress=True
indica que los números deben ser impresos en la forma de punto flotante y evitando la notación
científica.