Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

01 - Introduccion Python

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 29

Introducción

Bucles y Condicionales
Introducción a Listas y Diccionarios

Python Operadores y Mutabilidad

(el lenguaje que vamos a usar) Avanzado

PEP8

Debugging
Ejecutar hola mundo

Ejecutar Interprete Ejecutar archivo

bash> Python 3 archivo.py

>>> print (hola mundo) print (hola mundo)

bash> archivo.py

Ejemplo de intérprete: idle, python, ipython


Ejemplo de ide: thonny, pythontutor
Leer errores
bash> cat archivo.py

a = [2]*10
a[10]

bash> Python 3 archivo.py

Traceback (most recent call last):


File "/home/mebordone/archivo.py", line 2, in <module> -> linea de código esta el error
a[10] -> función que dio error
IndexError: list index out of range -> tipo de error que dió
Variables y Asignaciones
# Variable región de memoria reservada con un nombre asociado
# Declaración y Asignación
a = 10 # Asignación int
b = "hello" # Asignación string
a,b = b,a # Asignación múltiple
a = "hello"
b = 10
# Ejecución y asignación
x = 10 + 2 # Asignación y suma
x = "mo" + "no" # Concatenacion
x = [1, "1"] # Listas , diversos tipos
x = (2, "a", 1.1) # Tuplas
x = sqrt(2) # Llamado a funcion
# Tipado dinámico
a = 10
a = " algo "
Condicionales y Bucles

# Condicional # For itera sobre elementos en una lista


xs = ["cadena"] # Lista con un elemento n = 0
if len(xs) == 0: # Tamaño de xs for x in rango (1, 10):
xs.append(3) # Agregar elemento 3 n += x
else: print (n) # 45
xs.append("s") # Agregar elemento "s"
print (xs) # out: ["cadena","s"] # Bucle While
xs = [] # Nueva lista vacía
# indentation: this is one thing while len(xs) < 10: # Mientras tamaño<10
if a == "algo": xs.append(len(xs)) # Agregar tamaño xs
print (a) # python 3 print (xs)
a = "algo"

# indentation: this is another thing


if a == "algo":
print (a)
a = "algo"
Funciones

# Definición de funciones Programa, secuencia de instrucciones en un


def rango(i, j): lenguaje de programación.
xs = []
while len(xs) < j-i: Función: subrutina de un programa que posee un
xs.append(len(xs) + i)
nombre, toma ciertos valores y al finalizar devuelve
return xs
algún valor.
print (rango(10, 15)) # [10, 11, 12, 13, 14]
Ejemplo: Ejecutar un programa

def par(int:a) -> bool: Ejecutar en


""" thony y en
Esta función devuelve True si a es par y False si a es impar pythontutor
"""
return a % 2 == 0

if __name__ == "__main__": #Ejecutamos este programa por consola


a = 4
assert par(a) == True # Test
print ("a era par")
a = 5
print ("a no era par") #Test
Introducción general a python
Tipo de datos: Numeros (int y float)

# Enteros
int 32 bits e=5
long memoria e= 5L

print(2+3) # suma y multiplicación


print(2*4)
print(2**10) # potencia
print(6/3) # division resultado entero
print(7/3) # division resultado float
print(7//3) # division entera
print(7%3) # modulo o resto
Division

>>> 17 / 3 # la división clásica retorna un punto flotante


5.666666666666667
>>> 17 // 3 # la división entera descarta la parte fraccional
5
>>> 17 % 3 # el operado % retorna el resto de la división
2
>>> 5 * 3 + 2 # resultado * divisor + resto
17
Float

float (real)

e = 0.456

e= 0.456e-3

Decimal, muchos lugares en las comas apra calculo cientifico


fracción y n° complejo

>>> 5+5j
(5+5j)
>>> a = 5+6j
>>> b= -2+1j
>>> a+b
(3+7j)
>>> _
(3+7j)
>>>
Variables

Asignacion
>>> ancho = 20
>>> largo = 5 * 9
>>> ancho * largo
900

Acceso a una variable no asignada

>>> n # tratamos de acceder a una variable no definida


Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'n' is not defined
Tipo de dato Bool: Operadores Booleanos
Tipo de dato: Cadenas (strings)
Listas
Tipo de datos: Tuplas

Las tuplas son muy similares a las listas en que son secuencias heterogéneas
de datos. La diferencia es que una tupla es inmutable,
Tipo de datos: Conjuntos
Conjuntos

>>> miConjunto
{False, 4.5, 3, 6, 'gato'}
>>> len(miConjunto)
5
>>> False in miConjunto
True
>>> "perro" in miConjunto
False
>>>
Tipo de dato: Diccionarios

Los diccionarios son colecciones de parejas de ítems

capitales = {'Córdoba':'Córdoba','Misiones':'Posadas'}
print(capitales['Córdoba'])
capitales['Chaco']='Resistencia'
print(capitales)
capitales['California']='Sacramento'
print(len(capitales))
for k in capitales:
print(capitales[k]," es la capital de ", k)
Algunas caracteristicas de python

● Es interpretado
● Tiene tipado dinámico
● Tiene garbage collector
● Usa indentación para bloques (no {})
● Ejecución
○ Interactiva $python3 luego consola >>>
○ Archivo $python3 file.py
● Versiones
○ Python 2.x: legacy
○ Python 3.x: future <- vamos por esta
Ejercicio

Escriba una función que tome una lsita y un elemento y devuelve la cantidad de veces que aparece el
elemento en la lista

def contar_elemento (lista,elemento):


pass
return 0

assert contar_elemento ([-5,3,8,”perro”,5,3],3) == 2


assert contar_elemento ([-5,3,8,”perro”,5,3],6) == 0
Operadores y Mutabilidad

# Los booleanos: True y False # Números, string y tuplas son inmutables


# Los operadores: and, or, not, in a = "hello"
d = [1 ,3 ,5] b = a # b = "hello"
print (2 in d) or (4 not in d) a = a + "world"
print (a) # a = "hello world"
# Import de librerías print (b) # b = "hello"
import sys
print (sys.Argv) # Listas, diccionarios y clases son mutables
a = ["hello"]
from os import environ b = a
print (environ["USER"]) a.append("world")
print (a) # ['hello','world']
print (b) # ['hello','world']
Avanzado

● Declaración de objetos abstractos # Lists by comprehension


# Abstract objects (classes) S = [x for x in range (101) if x % 3 == 0]
class MyClass:
i = 12345
def f(self): # Error handling
return 'hello world' try:
print "Hello World"
except IOError:
● Iterables por comprensión print('An error trying to read file.')
except ValueError:
● Sobreescritura de métodos y
print('Non-numeric data found.')
polimorfismo except:
print "This is an error message!"
● Manejos de errores (try/except)
PEP8

● El código es leído muchas más veces de lo que es escrito


● Convenciones de escritura
○ Los docentes las evaluamos y las agradecemos!
● PEP8
○ Indentación: usa 4 (cuatro) espacios por indentación, el uso de tabs no está recomendado
○ Máximo largo de línea: 79 caracteres
○ Líneas en blanco
■ Separa definiciones de clase con 2 (dos) líneas en blanco
■ Separa funciones dentro de la clase con 1 (una) línea en blanco
■ Separa unidades lógicas dentro de funciones con 1 (una) línea en blanco
○ Revisar https://pep8.org
PEP8 - Indentación
Si No
# Aligned with opening delimiter. # Arguments on first line forbidden when not
foo = long_function_name(var_one, var_two, # using vertical alignment.
var_three, var_four) foo = long_function_name(var_one, var_two,
var_three, var_four)

# More indentation included to distinguish # Further indentation required as indentation is


# this from the rest. # not distinguishable.
def long_function_name( def long_function_name(
var_one, var_two, var_three, var_one, var_two, var_three,
var_four): var_four):
print(var_one) print(var_one)
PEP8 - Espacios
Si No
# Avoid extraneous whitespace: # Avoid extraneous whitespace:
# Immediately inside parentheses, brackets or # Immediately inside parentheses, brackets or
braces: braces:
spam(ham[1], {eggs:2}) spam( ham[ 1 ], { eggs: 2 } )

# Between a trailing comma and a following # Between a trailing comma and a following close
close parenthesis: parenthesis:
foo = (0,) bar = (0, )

# Immediately before a comma, semicolon, or # Immediately before a comma, semicolon, or


colon: colon:
if x == 4: print x, y; x, y = y, x if x == 4 : print x , y ; x , y = y , x

# Immediately before a parenthesis with args. # Immediately before a parenthesis with args.
spam(1) spam (1)
Debugging - Print

● Ventajas import sys


○ Rápido para encontrar errores en programas
# Example
pequeños
def main():
● Desventajas texto = ''
○ Difícil de controlar en bucles for palabra in sys.argv[1:]:
texto = texto + ' ' + palabra
○ Sólo variables numéricas o strings print texto
○ Podemos olvidarnos de quitar prints
○ Print comentados generan un mal aspecto
Debugging - Depuradores

● GDB, IPDB, PDB IPDB


● Ventajas $ sudo pip install ipdb
○ Puntos de interrupción en el código para $ ipdb example.py

revisar valor de variables # example.py


○ Estudio del código línea por línea, función por import ipdb
función, y estudiar la evolución de las def main():
variables texto = ''
for palabra in sys.argv[1:]:
● Desventajas texto += ' ' + palabra
○ Tedioso de aprender ipdb.set trace()
print texto
● Enlaces
○ https://pypi.python.org/pypi/ipdb ipdb> s(tep)
ipdb> c(ontinue)

También podría gustarte