#!/usr/bin/env python # coding: utf-8 # # # Introducción a Python (3) # ---- # # Manipulando datos # ---- # # Números # ## Enteros # In[1]: 2 + 2 # In[2]: (50 + 30) * 5 # In[3]: 7 / 2 # In[4]: 7 % 3 # In[5]: 8271620372012 ** 16 # ## Float # In[6]: 3 * 4.5 / 2.9 # In[7]: 27 / 4.2 # ## Decimal # In[8]: from decimal import Decimal dos = Decimal(2) dos.sqrt() # In[9]: from decimal import getcontext getcontext().prec = 55 dos.sqrt() # ## Otras bases # In[10]: 0xb # In[11]: hex(11) # In[12]: 0b101 # In[13]: bin(4) # In[14]: 0o10 # In[15]: oct(8) # # Strings (cadenas) # In[16]: "Un «string» es una cadena de caracteres" # In[17]: """Que el código que escribimos funcione, es una excepción. -- Manuel Kaufmann""" # In[18]: "Me gusta decir 'Dale' para confirmar" # In[19]: "¡Quiero usar \"la misma\" comilla dentro de la cadena!" # ## Operaciones # In[20]: "Hola" + " mundo!" # In[21]: "Eco " * 5 # In[22]: len("¿cuánto mide esta cadena?") # In[23]: "Camión y moño expresado en UTF-8".encode('utf-8') # In[24]: '¿Cuántas a tiene esta cadena?'.count('a') # ## Acceso a strings # In[25]: frase = "¡Hola mundo!" frase # ![](../string-slides-example.svg) # In[26]: frase[1] # In[27]: frase[-3] # In[28]: frase[1:5] # In[29]: frase[6:] # In[30]: frase[6:-1] # In[31]: frase_con_espacios = '¡ H o l a M u n d o !' frase_con_espacios # In[32]: frase_con_espacios[::2] # # Listas # In[33]: lista = [2, 'auto', 5.32, Decimal(2)] lista # In[34]: lista[2] # In[35]: lista[-1] # In[36]: lista[:-2] # ## Operaciones # In[37]: lista + [125, 'camión'] # In[38]: lista[1] = "bicicleta" lista # In[39]: lista[1] = ['auto', 'moto', "bicicleta", 'camión'] lista # In[40]: del lista[2] lista # ## Métodos # In[41]: vehiculos = lista[1] vehiculos # In[42]: vehiculos.sort() # in place vehiculos # ¿Se modificó la variable "lista"? # In[43]: lista[1] # ¿Porqué sucede esto? # In[44]: vehiculos.index('camión') # In[45]: vehiculos.append('patineta') vehiculos # # Conjuntos # In[46]: numeros = {1, 2, 3, 4, 1, 5, 2, 7, 2, 4, 6} numeros # In[47]: otros_numeros = {4, 7, 1, 9, 2, 8} # In[48]: otros_numeros.update([5, 6, 5, 3, 1, 6, 9]) # in place otros_numeros # ## Métodos y operaciones # In[49]: numeros.intersection(otros_numeros) # In[50]: numeros & otros_numeros # In[51]: numeros.union(otros_numeros) # In[52]: numeros | otros_numeros # In[53]: numeros.difference(otros_numeros) # In[54]: numeros - otros_numeros # # Diccionarios # In[55]: diccionario = {'entero': 1, 'lista': ['cadena', 92, 4.2], 3: 'tres'} diccionario # Las llaves pueden ser cualquier objeto *inmutable* # In[56]: otro_diccionario = {3.4: 'tres punto cuatro', 2000: 'dos mil', (3, 4): 'version de Python'} otro_diccionario # In[57]: otro_diccionario[(3, 4)] # In[58]: otro_diccionario[3.4] # In[59]: del diccionario['lista'] diccionario # ## Métodos # In[60]: 'entero' in diccionario # In[61]: diccionario.keys() # In[62]: diccionario.values() # In[63]: diccionario.items() # In[64]: diccionario.get(3) # In[65]: diccionario.get(42, 'No tenemos esa *key*') # In[66]: diccionario.pop('entero') # In[67]: diccionario # ---- # # Tomando decisiones # ---- # ## if # ```python # if : # # ``` # ### Ejemplos # In[68]: condicion = True if condicion: print('Hago algo') # In[69]: # 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') # In[70]: if 'lista' in diccionario: print('El diccionario tiene el elemento "lista"') else: print('No encontramos ese elemento') # In[71]: color = input('¿Qué color te gusta?: ') if color == 'rojo' or color == 'verde': print('A mi también') else: print('Qué feo ese color!') # In[72]: 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') # ## for # ```python # for in : # # ``` # In[73]: vehiculos # In[74]: for vehiculo in vehiculos: print('Transporte: ' + vehiculo.capitalize()) # In[75]: # obteniendo cuadrados for numero in range(1, 7): print(numero ** 2) # In[76]: 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"') # ## while # ```python # while : # # ``` # In[77]: edad = 12 while edad < 18: print('No te puedo vender alcohol') edad += 1 print('Cumpliste la mayoría de edad: {} años'.format(edad)) # In[78]: 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)) # ## Excepciones # ```python # try: # # except : # # ``` # In[80]: 17 / 0 # In[81]: try: print(17 / 0) except ZeroDivisionError: print('No se puede dividir un número por 0') # Podemos generar nuestra propias excepciones # In[82]: raise ValueError('Mensaje de error') # ---- # # Organizando el código # ---- # ## Funciones # ```python # def (, , ...): # # ``` # In[83]: def alcubo(numero): return numero ** 3 # In[84]: alcubo(3) # Objetos # In[85]: alcubo(27) # In[86]: alcubo # In[87]: f = alcubo f(3) # Flexibilidad en los argumentos # In[88]: 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) # In[89]: ordenar_lista(lista, True) # In[90]: ordenar_lista(lista, ascendente=False) # In[91]: 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 # In[92]: multiplica_elementos(3, 9) # In[93]: def suma_dos_numeros(a, b): return a + b numeros = [4, 6] suma_dos_numeros(*numeros) # ## Clases # In[94]: 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 # In[95]: p1 = Punto2D(3, 4) p1.x # In[96]: p1.distancia() # In[97]: p2 = Punto2D(7, 12) p2.y # ## Módulos # In[98]: get_ipython().run_cell_magic('file', 'punto.py', 'import math\n\nclass Punto2D(object):\n def __init__(self, x, y):\n self.x = x\n self.y = y\n \n def distancia(self):\n """Distancia al punto desde (0,0)"""\n distancia = math.sqrt(self.x ** 2 + self.y ** 2)\n return distancia\n') # In[99]: import punto p3 = punto.Punto2D(5, 3) p3.distancia() # ## Paquetes # In[100]: import mipaquete.modulo print(mipaquete.modulo.FRASE) # In[101]: from mipaquete import modulo print(modulo.FRASE) # In[102]: from mipaquete.modulo import FRASE print(FRASE) # ----