Python dispone de los tipos numéricos y las operaciones más habituales
2 * 4 - (7-1) / 3 + 1.3
Las divisiones por cero lanzan un error:
1 / 0
La división entre enteros devuelve un número real.
7 / 3
Se puede forzar que la división sea entera en Python con el operador //
7 // 3
Se puede realizar potenciación usando el operador **
2 ** 10
Y podemos obtener el módulo de una división usando %
129 % 2
Otro tipo que nos resultará muy útil son los complejos
2 + 3j
int, float, complex, str
¶int(18.6)
round(18.6)
float(1)
complex(2)
str(256568)
Python reconoce automáticamente qué tipo de variable se está creando.
=
a = 5
b = "diego"
a, b
type(a), type(b)
Podemos realizar asignaciones múltiples
a, b = 5, 100
a, b
Los operadores de comparación son:
==
igual a!=
distinto de<
menor que<=
menor o igual queDevolverán un booleano: True
o False
a == b
a != b
print(a < b)
print(a <= b)
print(a > b)
print(a >= b)
Podemos incluso saber si un número está en un intervalo
x = 5
3 < x < 10
True and False
not False
True or False
# Una curiosidad
(True + True) * 10
Algunas personas usan el operador ~
para invertir el valor de verdad de variables booleanas. Hay que tener cuidado en un caso:
# Este ejemplo funciona como esperado
import numpy as np
x = np.array([True, True, False])
print(~x)
# Este ejemplo desafía la lógica, ¿por qué?
x = True
print(~x)
Colección de elementos usados para almacenar datos relacionados.
Principales tipos de estructuras: listas, tuplas, conjuntos, diccionarios
[ ]
o el método list()
lista = [1, 2, 3.0, 4.17, '5' ]
lista
El acceso a los elementos de la lista es posicional. En python el primer elemento siempre se indica con el número cero:
print(lista)
print(lista[0]) # Acceder al primer elemento, empieza en CERO
print(lista[3]) # Acceder al cuarto elemento
print(lista[-1]) # Acceder al último elemento
Podemos realizar acciones aprovechando los métodos propios de las listas, por ejemplo agregar y remover elementos como se muestra en la siguiente celda
lista.append('6') # Añadir un elemento
lista.remove(3.0) # Eliminar un elemento
Para saberlo digite el nombre de la variable, un punto, y el tabulador.
lista.
+ tab
Al digitar tab
Python examina y nos muestras las distintas posibilidades que tienen sentido para completar una línea de código, en caso de hallar algunas.
lista.copy?
new_list = lista.copy()
# Es posible "copiar" un elemento de forma más directa,
# sin embargo esto puede generar inconvenientes en algunos casos:
new_list = lista
print(new_list)
new_list[0] = 8
print(new_list)
print(lista)
lista = [1, 2, 3, 4]
new_list = lista.copy()
new_list[0] = 8
print(new_list)
print(lista)
El problema observado en el primer caso se conoce como aliasing, y ocurre por que Python no creó una nueva variable, sino una vista de la variable original. Para evitar comportamientos indeseados, en general es más seguro utilizar el método .copy()
( )
o el método tuple()
tupla = (1, '2', 3, 4.0, 5e-17)
tupla
print(tupla[-1]) # Acceso es igual que con listas
# Tamaño de la colección
len(lista), len(tupla)
# verificando si un cierto valor aparece entre los elementos
2 in lista
Podemos indexar las secuencias, utilizando la sintaxis
[<inicio>:<final>:<salto>]
a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(a)
print(a[0:10:1])
print(a[:4] ) # Imprime desde el primero hasta el cuarto elemento
print(a[::2]) # Imprime desde el comienzo al final, en saltos de 2
print(a[::-1]) # Revierte la lista
Es posible convertir entre tipos de datos. Un ejemplo interesante son los conjuntos (sets), similares a las listas pero que NO almacenan elementos repetidos, lo cual los hace convenientes para eliminar entradas duplicadas en una lista o para realizar la unión o interesección de conjuntos de elementos.
a = [0, 1, 2, 1, 4, 0, 2, 1, 1, 5]
a = set(a)
print(a)
{ clave : valor }
o el método dict()
diccionario = {
'nombre' : 'Diego',
'celular' : 'Nokia 1100'
}
diccionario
diccionario['nombre'] # Los elementos se acceden con la clave.
# Los elementos pueden ser modificados,
# y se pueden eliminar o agregar elementos
diccionario['nombre'] = 'Andrés'
diccionario['números favoritos'] = [5,7,11]
print(diccionario)
del(diccionario['celular'])
print('\n',diccionario)
Los bloques de código en Python se estructuran por la indentación.
En otros lenguajes se usa el punto y coma ;
y los corchetes {}
para saber dónde termina un bloque de código, y la indentación es solo un estilo para facilitar la lectura del código.
En Python la indentación es un requisito, haciendo de la legibilidad y organización del código características propias del lenguaje. La indentación se puede hacer con espacios
o tabs
.
La mayoría de editores de texto convierten un tab
en 4 espacios
por lo que esta se considera la medida por defecto, pero no se deben mezclar pues máquinas distintas pueden no reconocer los tabs
de la misma manera, generando conflictos.
x = input("Por favor, introduzca un número: ")
if x < 0:
print('Es un número negativo')
x = int(input("Por favor, introduzca un número: "))
if x < 0:
print('Es un número negativo')
elif x == 0:
print('Cero')
else:
print('Es positivo')
for
y función range()
¶# Imprime los números del 0 al 9
for i in range(5):
print(i)
# Imprime los números del 10 al 100, en pasos de 20
for i in range(10, 101, 20):
print(i)
También podemos recorrer directamente los elementos de una lista, tupla, set o diccionario.
words = ['gato', 'ventana', 'melifluo']
for w in words:
print(w, len(w))
numbers = (0,1,2,3,4,5,6,7,8,9)
for n in numbers:
print(n)
if n == 7:
print('Salimos del loop al llegar al siete.')
break
diccionario = {
'nombre' : 'Diego',
'celular' : 'Nokia 1100'
}
for key, value in diccionario.items():
print(key)
print(value)
while
¶Repetir un segmento de código mientras se cumpla una condición.
Atención para evitar los búcles infinitos
# Vamos a generar las potencias de 2 menores que 10000,
# sin saber previamente cuántos números son
a = 1
potencias = []
while( a < 10000 ):
potencias.append(a)
a = 2*a
print(a)
print(potencias)
Escriba un programa que imprima los números del 1 al 100, pero que para los múltiplos de 3 imprima Fizz
en lugar del número y para los múltiplos de 5 imprima Buzz
.
Para números que son múltiplos de 3 y 5 imprima FizzBuzz
.
for num in range(1, 100):
if num % 3 == 0 and num % 5 == 0:
print('FizzBuzz')
elif num % 3 == 0:
print('Fizz')
elif num % 5 == 0:
print('Buzz')
else:
print(num)
Intente el mismo ejercicio, pero esta vez en lugar de imprimir los números en pantalla
almacénelos en un diccionario con las claves 'Fizz'
, 'Buzz'
, y 'FizzBuzz'
.
list
, set
, tuple
, dict
if
, elif
, else
for..in
, while