2 + 2
4
(50 + 30) * 5
400
7 / 2
3.5
7 % 3
1
8271620372012 ** 16
480230242785895041523601081047580269312718942941866053961384580763944229024067667717573401492913853961842995096084912848441403451269527097736198573582491135229983829269574216050363217514543552009868637372416
3 * 4.5 / 2.9
4.655172413793103
27 / 4.2
6.428571428571428
from decimal import Decimal
dos = Decimal(2)
dos.sqrt()
Decimal('1.414213562373095048801688724')
from decimal import getcontext
getcontext().prec = 55
dos.sqrt()
Decimal('1.414213562373095048801688724209698078569671875376948073')
0xb
11
hex(11)
'0xb'
0b101
5
bin(4)
'0b100'
0o10
8
oct(8)
'0o10'
"Un «string» es una cadena de caracteres"
'Un «string» es una cadena de caracteres'
"""Que el código que escribimos funcione, es una excepción.
-- Manuel Kaufmann"""
'Que el código que escribimos funcione, es una excepción.\n-- Manuel Kaufmann'
"Me gusta decir 'Dale' para confirmar"
"Me gusta decir 'Dale' para confirmar"
"¡Quiero usar \"la misma\" comilla dentro de la cadena!"
'¡Quiero usar "la misma" comilla dentro de la cadena!'
"Hola" + " mundo!"
'Hola mundo!'
"Eco " * 5
'Eco Eco Eco Eco Eco '
len("¿cuánto mide esta cadena?")
25
"Camión y moño expresado en UTF-8".encode('utf-8')
b'Cami\xc3\xb3n y mo\xc3\xb1o expresado en UTF-8'
'¿Cuántas a tiene esta cadena?'.count('a')
5
frase = "¡Hola mundo!"
frase
'¡Hola mundo!'
frase[1]
'H'
frase[-3]
'd'
frase[1:5]
'Hola'
frase[6:]
'mundo!'
frase[6:-1]
'mundo'
frase_con_espacios = '¡ H o l a M u n d o !'
frase_con_espacios
'¡ H o l a M u n d o !'
frase_con_espacios[::2]
'¡Hola Mundo!'
lista = [2, 'auto', 5.32, Decimal(2)]
lista
[2, 'auto', 5.32, Decimal('2')]
lista[2]
5.32
lista[-1]
Decimal('2')
lista[:-2]
[2, 'auto']
lista + [125, 'camión']
[2, 'auto', 5.32, Decimal('2'), 125, 'camión']
lista[1] = "bicicleta"
lista
[2, 'bicicleta', 5.32, Decimal('2')]
lista[1] = ['auto', 'moto', "bicicleta", 'camión']
lista
[2, ['auto', 'moto', 'bicicleta', 'camión'], 5.32, Decimal('2')]
del lista[2]
lista
[2, ['auto', 'moto', 'bicicleta', 'camión'], Decimal('2')]
vehiculos = lista[1]
vehiculos
['auto', 'moto', 'bicicleta', 'camión']
vehiculos.sort() # in place
vehiculos
['auto', 'bicicleta', 'camión', 'moto']
¿Se modificó la variable "lista"?
lista[1]
['auto', 'bicicleta', 'camión', 'moto']
¿Porqué sucede esto?
vehiculos.index('camión')
2
vehiculos.append('patineta')
vehiculos
['auto', 'bicicleta', 'camión', 'moto', 'patineta']
numeros = {1, 2, 3, 4, 1, 5, 2, 7, 2, 4, 6}
numeros
{1, 2, 3, 4, 5, 6, 7}
otros_numeros = {4, 7, 1, 9, 2, 8}
otros_numeros.update([5, 6, 5, 3, 1, 6, 9]) # in place
otros_numeros
{1, 2, 3, 4, 5, 6, 7, 8, 9}
numeros.intersection(otros_numeros)
{1, 2, 3, 4, 5, 6, 7}
numeros & otros_numeros
{1, 2, 3, 4, 5, 6, 7}
numeros.union(otros_numeros)
{1, 2, 3, 4, 5, 6, 7, 8, 9}
numeros | otros_numeros
{1, 2, 3, 4, 5, 6, 7, 8, 9}
numeros.difference(otros_numeros)
set()
numeros - otros_numeros
set()
diccionario = {'entero': 1, 'lista': ['cadena', 92, 4.2], 3: 'tres'}
diccionario
{3: 'tres', 'lista': ['cadena', 92, 4.2], 'entero': 1}
Las llaves pueden ser cualquier objeto inmutable
otro_diccionario = {3.4: 'tres punto cuatro', 2000: 'dos mil', (3, 4): 'version de Python'}
otro_diccionario
{2000: 'dos mil', 3.4: 'tres punto cuatro', (3, 4): 'version de Python'}
otro_diccionario[(3, 4)]
'version de Python'
otro_diccionario[3.4]
'tres punto cuatro'
del diccionario['lista']
diccionario
{3: 'tres', 'entero': 1}
'entero' in diccionario
True
diccionario.keys()
dict_keys([3, 'entero'])
diccionario.values()
dict_values(['tres', 1])
diccionario.items()
dict_items([(3, 'tres'), ('entero', 1)])
diccionario.get(3)
'tres'
diccionario.get(42, 'No tenemos esa *key*')
'No tenemos esa *key*'
diccionario.pop('entero')
1
diccionario
{3: 'tres'}
if <condicion>:
<hago algo>
condicion = True
if condicion:
print('Hago algo')
Hago algo
# Test de mayoría de edad
edad = 19
if edad >= 20:
print('Te puedo vender alcohol')
elif 18 <= edad <= 20:
print('Andá a Argentina que podés tomar alcohol con 18')
else:
print('Volvé el año que viene')
Andá a Argentina que podés tomar alcohol con 18
if 'lista' in diccionario:
print('El diccionario tiene el elemento "lista"')
else:
print('No encontramos ese elemento')
No encontramos ese elemento
color = input('¿Qué color te gusta?: ')
if color == 'rojo' or color == 'verde':
print('A mi también')
else:
print('Qué feo ese color!')
¿Qué color te gusta?: azul Qué feo ese color!
color = input('¿Qué color te gusta?: ')
colores = ['rojo', 'amarillo', 'violeta', 'azul', 'verde', 'turquesa']
if color in colores:
if color == 'rojo' or color == 'verde':
print('A mi también')
else:
print('Qué feo ese color!')
else:
print('Ese no es un color válido')
¿Qué color te gusta?: turquesa Qué feo ese color!
for <elemento> in <iterable>:
<hago algo>
vehiculos
['auto', 'bicicleta', 'camión', 'moto', 'patineta']
for vehiculo in vehiculos:
print('Transporte: ' + vehiculo.capitalize())
Transporte: Auto Transporte: Bicicleta Transporte: Camión Transporte: Moto Transporte: Patineta
# obteniendo cuadrados
for numero in range(1, 7):
print(numero ** 2)
1 4 9 16 25 36
for numero in range(1, 7):
if numero == 3:
continue # ¿qué pasa si pongo un "break" acá?
print(numero ** 2)
else:
print('Termino sin ningún "break"')
1 4 16 25 36 Termino sin ningún "break"
while <condicion>:
<hago algo>
edad = 12
while edad < 18:
print('No te puedo vender alcohol')
edad += 1
print('Cumpliste la mayoría de edad: {} años'.format(edad))
No te puedo vender alcohol No te puedo vender alcohol No te puedo vender alcohol No te puedo vender alcohol No te puedo vender alcohol No te puedo vender alcohol Cumpliste la mayoría de edad: 18 años
respuesta_correcta = 36
respuesta_usuario = int(input('¿Cuánto es 6^2?: '))
while respuesta_usuario != respuesta_correcta:
respuesta_usuario = int(input('Error. Intenta de nuevo: '))
print('Felicitaciones! La respuesta correcta es: {}'.format(respuesta_correcta))
¿Cuánto es 6^2?: 43 Error. Intenta de nuevo: 33 Error. Intenta de nuevo: 12 Error. Intenta de nuevo: 2 Error. Intenta de nuevo: 5 Error. Intenta de nuevo: 2 Error. Intenta de nuevo: 36 Felicitaciones! La respuesta correcta es: 36
try:
<codigo que "puede" fallar>
except <excepcion>:
<codigo que maneja esa excepcion>
17 / 0
--------------------------------------------------------------------------- ZeroDivisionError Traceback (most recent call last) <ipython-input-80-3bf37c425175> in <module>() ----> 1 17 / 0 ZeroDivisionError: division by zero
try:
print(17 / 0)
except ZeroDivisionError:
print('No se puede dividir un número por 0')
No se puede dividir un número por 0
Podemos generar nuestra propias excepciones
raise ValueError('Mensaje de error')
--------------------------------------------------------------------------- ValueError Traceback (most recent call last) <ipython-input-82-ad5f9844780e> in <module>() ----> 1 raise ValueError('Mensaje de error') ValueError: Mensaje de error
def <nombre funcion>(<argument 1>, <argumento 2>, ...):
<codigo de la funcion>
def alcubo(numero):
return numero ** 3
alcubo(3)
27
Objetos
alcubo(27)
19683
alcubo
<function __main__.alcubo>
f = alcubo
f(3)
27
Flexibilidad en los argumentos
def ordenar_lista(l, ascendente=True):
resultado = sorted(l)
if not ascendente:
resultado = list(reversed(resultado))
return resultado
lista = [3, 5, 1, 7, 12, 7, 4]
ordenar_lista(lista)
[1, 3, 4, 5, 7, 7, 12]
ordenar_lista(lista, True)
[1, 3, 4, 5, 7, 7, 12]
ordenar_lista(lista, ascendente=False)
[12, 7, 7, 5, 4, 3, 1]
def multiplica_elementos(*args):
resultado = 1
for elemento in args:
resultado *= elemento
return resultado
multiplica_elementos(3, 4, 5, 2, 8) # cantidad de argumentos indefinda
960
multiplica_elementos(3, 9)
27
def suma_dos_numeros(a, b):
return a + b
numeros = [4, 6]
suma_dos_numeros(*numeros)
10
import math
class Punto2D(object):
def __init__(self, x, y):
self.x = x
self.y = y
def distancia(self):
"""Distancia al punto desde (0,0)"""
distancia = math.sqrt(self.x ** 2 + self.y ** 2)
return distancia
p1 = Punto2D(3, 4)
p1.x
3
p1.distancia()
5.0
p2 = Punto2D(7, 12)
p2.y
12
%%file punto.py
import math
class Punto2D(object):
def __init__(self, x, y):
self.x = x
self.y = y
def distancia(self):
"""Distancia al punto desde (0,0)"""
distancia = math.sqrt(self.x ** 2 + self.y ** 2)
return distancia
Writing punto.py
import punto
p3 = punto.Punto2D(5, 3)
p3.distancia()
5.830951894845301
import mipaquete.modulo
print(mipaquete.modulo.FRASE)
--------------------------------------------------------------------------- ImportError Traceback (most recent call last) <ipython-input-100-d6ea12d9a8ec> in <module>() ----> 1 import mipaquete.modulo 2 print(mipaquete.modulo.FRASE) ImportError: No module named 'mipaquete'
from mipaquete import modulo
print(modulo.FRASE)
--------------------------------------------------------------------------- ImportError Traceback (most recent call last) <ipython-input-101-f276dab83b0d> in <module>() ----> 1 from mipaquete import modulo 2 print(modulo.FRASE) ImportError: No module named 'mipaquete'
from mipaquete.modulo import FRASE
print(FRASE)
--------------------------------------------------------------------------- ImportError Traceback (most recent call last) <ipython-input-102-4d512e061f22> in <module>() ----> 1 from mipaquete.modulo import FRASE 2 print(FRASE) ImportError: No module named 'mipaquete'