Está en la página 1de 20

Video 1: Temario General

 Introducción. Requisitos previos. Instalación de Software


 Fundamentos y sintaxis básica del lenguaje
 POO con Python
 Algoritmos, listas y tramos
 BBDD
 Trabajo con gráficos y contenidos
 Procesos y Tareas
 Programación en Red. Sockets
 Ejercicios Prácticos.
Video 2
Características generales de Python
Creado por Guido Van Rossum a principio de los ’90. Su nombre deriva del grupo
montipython.
Es un lenguaje de alto nivel de alto tipado y dinamico(el tipo se establece en tiempo de
ejecución).
Es un lenguaje orientado a objetos. Multiplataforma
Requisitos de Soft y Hard
Desde la página oficial se pueden descargar las 2 versiones más utilizadas: 2.7 y 3.x (no
olvidar tildar la opción de “agregar python al path)
IDE a utilizar
 Eclipse
 Notepad++
 Sublime Text 3
 PyCharm

Video 3: Sintaxis Básica


 IDLE Python
 Primeras Instrucciones
o Print: imprime en pantalla
o Cada instrucción debe ir en una línea a no ser que se use punto y coma
“;”.
o Los comentarios se pueden poner con “#”
o Con “\” dividimos una instrucción en varias líneas.
Ej: print\
... ("hola mundo")

 Instalación de Sublime Text 3


Video 4: Sintaxis Básica II
 Tipos, Operadores y Variables
Tipos:

Operadores:

 Variable: Espacio en la memoria del ordenador donde se almacenará un valor que


podrá cambiar durante la ejecución del programa.
 Type: te permite averiguar de que tipo es la variable: type(nombre_varaible)
 “”” las tres comillas se usan caundo quieres hacer 3 saltos de línea.
 If: operador de condición
Video 5: Sintaxis Básica III

 Funciones:
o Que son: Conjunto de líneas de código agrupadas (bloque de códigos)
que funcionan como unidad realizando una tarea especifica. Pueden
devolver valores. Pueden tener parámetros. Tambien de las denomina
“metodos”.
o Utilidad: reutilizar código.
o Sintaxis:
Def nombre_funcion():
Instrucciones (identadas; con sangría)
return (opcional)

Def nombre_funcion(parametros):
Instrucciones (identadas; con sangría)
return (opcional)

o Ejecucion: nombre_funcion() ó nombre_funcion(Parametros)


o Hay funciones predefinidas como por ejemplo “print()”

Video 6: Sintaxis Básica IV, Funciones II

 Funciones
o Paso de parámetros: siempre python pasa los valores de los parámetros
por referencia.

Video 7: Sintaxis Básica V, Las Listas

 Las listas (es el equivalente a los arrays en otros lenguajes)


Estructura de datos que nos permite almacenar gran cantidad de valores.
Pueden guardar distintos tipos de valores.
Se pueden expandir dinámicamente añadiendo nuevos elementos
Sintaxis:
nombreLista=[elem1, elem2, elem3…]
Los elementos se separan con comas.
Índice: posición del elemento dentro de la lista (arranca desde cero).
nombreLista[:]: Devuelve todos los elementos
nombreLista[0]: devuelve el elemento de la posición 0.
nombreLista[-2]: devuelve el elemento de la posición 2 pero contando desde el
final de la lista en adelante. (arranca desde el -1)
nombreLista[-1]: devuelve el ultimo elemento de la lista
nombreLista[3:6]: devuelve los elementos desde la posición 3 hasta la 5.
nombreLista[:3]: arranca desde la posición 0 y devuelve 3 elementos (0,1,y 2)
nombreLista[3:]:Devuelve desde la posición 3 hasta el final.
nombreLista.append(nuevoElemento): Agrega un elemento al final de la lista
nombreLista.insert(posición,elemento): nos agrega el elemento en el índice
especificado.
nombreLista.extend([elem4,elem5,elem6]): agrega varios elementos al final de
la lista.
nombreLista.index(elem2): me devuelve el índice del elemento “elem2”
elem2 in nombreLista: devuelve true si el elemento se encuentra en la lista.
Sino devuelve false.
Una misma lista puede almacenar distintos tipos de datos.
nombreLista.remove(elem4): elimina el elemento “elem4” de la lista
nombreLista.pop(); elimina el ultimo elemento de la lista.
miLista3 = miLista1+miLista2: concatena listas
nombreLista*3:repite la lista 3 veces

Video 8: Sintaxis Básica VI, Las Tuplas


Tuplas: son listas inmutables (no cambia con el tiempo). No se puede modificar
después de su creación.
Si permite extraer porciones pero como una tupla nueva.
Si permiten búsquedas con el método index. Igual que con una lista.
Si permite comprobar si un elemento se encuentra en dicha tupla.
Utilidad: Mas rapidas, menos espacios, formatean strings, pueden utilizarse como
claves en un diccionario (las listas no).
Sintaxis: nombreTupla=(elem1,elem2,elem3…) #los paréntesis son opcionales
El índice comienza desde 0.
nombreTupla[2]: devuelve el elemento de índice 2 de la tupla.
miLista=List(nombreTupla): almacena en “miLista” la tupla convertida en lista.
miTupla=tuple(nombreLista), convierte una lista en una tupla y la almacena en una
nueva variable.
Elem4 in nombreTupla: devuelve true si el elem4 esta en la tupla. De lo contrario
devuelve falso.
nombreTupa.count(elem3): cuenta en la tupla y devuelve cuantas veces aparece elem3
len(nombreTupla) te dice cuantos elementos tiene la tupla.
Tupla unitaria: miTupla=(“Juan”,): se debe poner una coma al final.
Desempaquetado de Tupla:
miTupla(eme1,elem2,elem3)
Var1, Var2, Var3=miTupla
Lo que hizo es asignar a var1 el valor de elem1 a var2 elem2 y a var3 elem3.
Video 9: Sintaxis Básica VII, Los Diccionarios

Los Diccionarios:
 Son estructuras de datos que nos permite almacenar valores de diferente tipo
(enteros, cadenas de texto, decimales) e incluso listas y otros diccionarios.
 La principal característica de los diccionarios es que los datos se almacenan
asociados a una clave de tal forma que se crea una asociación de tipo
clave:valor para cada elemento almacenado.
 Los elementos almacenados no están ordenados. Es indiferente.
 Sintaxis: miDiccionario={“clave1”:”valor1”, “clave2”:”valor2”,“clave3”:”valor3”}
 Ejemplo: miDiccionario={“Alemania”:”Berlin”,
“Francia”:”Paris”,“España”:”Madrid”}
 miDiccionario[“Alemania”]: devuelve Berlin
 print(miDiccionario): devuelve todo el contenido del diccionario (clave y valor)
 miDiccionario[“Clave4”]=”valor4” Agrega un nuevo clave:Valor
 miDiccionario[“Clave4”]=”valor5” modifica el valor de la clave4 (sobreescribe)
 del miDiccionario[“Clave4”]: Elimina clave4 y su valor asociado.
 El par clave:valor puede ser de cualquier tipo
 La clave puede ser un numero y el valor una Lista
 Ejemplo:
o miLista=[elem1,elem2,elem3]
o miDiccionario={miLista[0]:valor1, miLista[1]:valor2, miLista[2]:valor3}
o print(midiccionario[elem1]) devolverá valor1
 miDiccionario={23:”Jordan”, “Nombre”:”Michael”, “anillos”:[1991,1992,1995]}
 miDiccionario2 = miDiccionario={23:”Jordan”, “Nombre”:”Michael”,
“anillos”:{anillos:[1,2,3]} (diccionario dentro de otro diccionario)
 miDiccionario.keys() devuelve todas las claves del diccionario
 miDiccionario.values() devuelve todos los valores
 len(miDiccionario) devuelve el tamaño del diccionario tomando cada par
clave:valor como un elemento.
Video 10: Condicionales I

Instrucción If:
 Sintaxis:
if parámetro – operador – condición:
Instruccion1

Tomar valores por consola:


Parámetro = input() toma el valor como texto
Si lo quiero pasar a numero lo casteo = int(parámetro)

Video 11: Condicionales II

Else y elif

 Sintaxis:
if parámetro – operador – condición:
Instruccion1
else:
instruccion2

 Ejemplo
print("Verificacion de Acceso")

edad=int(input("Ingresa tu edad por favor: "))

if edad<18:
print("No puedes Pasar")
else:
print("Puedes Pasar")

print("El Programa ha finalizado")


La siguiente estructura no funciona correctamente para edad = 15 porque el “else”
depende solo del if edad >100 porque es el mas cercano. El else no sabe que existe la
condición “edad<18”
print("Verificacion de Acceso")

edad=int(input("Ingresa tu edad por favor: "))

if edad<18:
print("No puedes Pasar")
if edad>100:
prin("edad Incorrecta")
else:
print("Puedes Pasar")

print("El Programa ha finalizado")

para solucionar esto se usa elif ya que sirve para que el “else” no dependa solo del if
mas cercano sino de todos los if de la estructura.

Veamos:

print("Verificacion de Acceso")

edad=int(input("Ingresa tu edad por favor: "))

if edad<18:
print("No puedes Pasar")
elif edad>100:
prin("edad Incorrecta")
else:
print("Puedes Pasar")

print("El Programa ha finalizado")

elif te saca del bloque y hace que todos los if funcionen como una única estructura.
Video 12: Condicionales III

 Switch: en python no existe.


 Concatenacion de operadores de comparación

edad=-7
"""Operadores concatenados.
Se pueden usar todos los que quieras.
Evalua la condicion de izquierda a derecha"""
if 0<edad<100:
print("Edad es corercta")
else:
print("Edad Incorrecta")

ejemplo 2:
salario_presidente=int(input("Introduce salario del presidente: "))
print("Salario presidente: " + str(salario_presidente))

salario_director=int(input("Introduce salario del director: "))


print("Salario director: " + str(salario_director))

salario_jefe_area=int(input("Introduce salario del Jefe de Area: "))


print("Salario Jefe de Area: " + str(salario_jefe_area))

salario_administrativo=int(input("Introduce salario del Administrativo: "))


print("Salario Administrativo: " + str(salario_administrativo))
#Siempre de izquierda a derecha analiza las condiciones
if
salario_administrativo<salario_jefe_area<salario_director<salario_presidente:
print("Todo funciona ok")
else:
print("Algo Huele mal")
Video 13: Condicionales IV

 Operadores AND y OR
print("Programa de Becas")
distancia=int(input("A que distancia vivis del instituto: "))
hermanos=int(input("Cuantos hermanos tenes: "))
salario=int(input("Cuanto ganas al año: "))

if distancia>40 and hermanos>2 and salario<=20000:


print("Tienes derecho a beca")
else:
print("No tienes derecho a beca")

print("Programa de Becas")
distancia=int(input("A que distancia vivis del instituto: "))
hermanos=int(input("Cuantos hermanos tenes: "))
salario=int(input("Cuanto ganas al año: "))

if (distancia>40 and hermanos>2) or salario<=20000:


print("Tienes derecho a beca")
else:
print("No tienes derecho a beca")

 Operador “in”

print("Materias Electivas")
print("Electivas: Big Data - Testing - DEC")
materia=input("Escribe la electiva elegida: ")
if materia in ("Big Data","Testing","DEC"): #para valores numericos no lleva comillas
print("Inscripcion a "+ materia +" ok")
else:
print("Error, " + materia + " no existe")
NOTA: Python es case sensitive (si distingue entre mayúsculas y minúsculas)
Video 14: Bucles I. For
Tipos de Bucles:
 Determinados: Se ejecutan un número determinado de veces, a priori se sabe
cuántas veces se va a ejecutar el código del bucle.
 Indeterminados: Se ejecutan un número indeterminado de veces, a priori NO
se sabe cuántas veces se va a ejecutar el código del bucle.

 For (sintaxis)
for variable in elemento a recorrer:
cuerpo del bucle

ejemplo:

lista=[1,2,3]
for i in lista:
print("Hola")

Video 15: Bucles II. For

 Recorrer String
Ejemplo para ver si un cadena que debe contener un mail es válido verificando si la
cadena contiene un @

mail=input("Ingrese su correo: ")


bandera=False
for i in mail:
if(i == "@"):
bandera=True

if bandera==True: #podemos poner aquí también: “if bandera”


print("Mail correcto")
else:
print("Mail Incorrecto")
Ejemplo2: Verifica que el mail sea válido si tiene un @ y después de eso hay algún
punto.

mail=input("Ingrese su correo: ")


bandera=False
arroba="0"

for i in mail:
if arroba=="@" and i==".":
bandera=True
else:
if(i == "@"):
arroba=i

if bandera:
print("Mail correcto")
else:
print("Mail Incorrecto")

 Tipo Range

Permite usar el for con contadores


Ejemplo:

for i in range(5): #Crea un “vector” con 5 elementos que recorrerá el for


print("i")

#imprime los números del 0 al 4

 Notaciones especiales con print


La palabra reservada end define como quiero que termine la impresión de la variable.
lista=["Verano","Otoño",3]

for i in lista:
print("Hola",end="")
#no hace salto de línea y no deja espacio entre las impresiones

Ejemplo 2:
lista=["Verano","Otoño",3]

for i in lista:
print("Hola",end=";") #separa por “;”
Video 16: Bucles III. For

 Tipo Range y notaciones especiales con print


for i in range(5):
print(f"valor de la variable {i}")
f indica que van a ir {} dentro de la cadena de texto para que las trate de modo
diferenciado
{i} junto con f permite incrustar la variable i dentro de la cadena de texto.

Ejemplo 2:
for i in range(5,50,3):
#indica que el vector arranca desde 5 hasta 49 y va de 3 en 3
print(f"valor de la variable {i}")

NOTA: Recordar que la función len(“string”) nos devuelve la longitud de la


cadena de texto ingresada como parametro

Ejemplo de validación de mail con len

mail=input("Ingrese su correo: ")


bandera=False
arroba="0"

for i in range(len(mail)):
#crea un vector con la misma cantidad de elementos que tiene mi cadena que estoy
analizando
if arroba=="@" and mail[i]==".":
bandera=True
else:
if(mail[i] == "@"):
arroba=mail[i]

if bandera:
print("Mail correcto")
else:
print("Mail Incorrecto")
Video 17: Bucles IV. While
 Sintaxis:
While condición:
Cuerpo del bucle

Ej:
i=1
while i<=10:
print(i)
i=i+1
EJ 2:
edad = int(input("cual es tu edad?: "))
i=0;
while 30<=edad<=50:
edad = int(input("No me jodas. cual es tu edad?: "))
i=i+1

if i!=0:
print("Gracias por decir la verdad (y dejar de hacerte el
pendejo).")
else:
print("Gracias!")
Ej 3: Te da 3 intentos y sino sale del bucle.
edad = int(input("cual es tu edad?: "))
i=0;
salir=1;
while edad<=30 or edad>=50:
edad = int(input("No me jodas. cual es tu edad?: "))
i=i+1
if salir==2:
break; #te saca del bucle
else:
salir=salir+1 #para que no quede en bucle infinito

if i!=0:
if salir==2:
print("Andá a cagar Pelotudo")
else:
print("Gracias por decir la verdad y dejar de hacrte el
boludo!")
else:
print("Gracias")

Video 18: Bucles V.

 Continue: salta a la siguiente iteración del bucle (ignora la iteración actual)


 Pass: devuelve null si se lee en el interior de un bucle (como si esa iteración no
se hubiera corrido)

Ej:
for letra in "Python ":
if letra == "h":
continue #cuando encuentra la h ignora la iteracion
print("Viendo la letra "+letra)

Ej: Contar letras de una cadena de texto sin contar los espacios en blanco

cadena=input("Ingrese la cadena a analizar: ")


contador=0
for caracter in cadena:
if caracter==" ":
continue
else:
contador+=1

print(f"La cantidad de letras de la cadena es igual a {contador}")

 Else: dentro de un bucle tiene el mismo sentido que en un condicional

ej:
mail=input("Ingrese mail: ")

for i in mail:
if i=="@":
arroba=True
break; #te saca del for y no entra al else
else: #es else del for y no del if, el programa entrará aquí cuando finalice
el for
arroba=False;

print(arroba)
Video 19: Generadores I.
 ¿Qué son?
Son estructuras que extraen valores de una función y almacenarlos en objetos
iterables que podremos recorrer con bucles u otros iteradores como next.
Estos valores se almacenan de uno en uno y cada vez que un generador
almacena un valor, este permanece en un estado pausado hasta que se solicita
el siguiente (suspensión de estado)

Con la palabra reservada yield se arman funciones generadoras.


Son mas eficientes que las funciones tradicionales
 Funcionamiento
Def generaNumeros():
(algo)
yield números
#el control de ejecución pasa a la función (igual que una función tradicional) la
función crea un solo objeto y queda en standby (hasta que la vuelvan a llamar)
devolviendo el control a quien hizo la llamada.
Lo principal es que devuelve los objetos de uno en uno y no todos juntos.
 ¿Qué utilidad Tienen?
Son más eficientes que las funciones tradicionales
Muy útil con listad de valores infinitos. Ej: una función que genera direcciones
IP al azar.
Bajo determinados escenarios, será muy útil que un generador devuelva los
valores de uno en uno.
 Sintaxis
Def funcion():
codigo
yield números

Ej: Funcion tradicional para generar números pares


def generarPares(limite):
num=1

miLista=[]

while num<limite:
miLista.append(num*2)
num=num+1
return miLista

print(generarPares(10))
Ej: Funcion con generador para generar números pares

def generarPares(limite):
num=1

while num<limite:
yield num*2
num=num+1

devuelvePares=generarPares(10)
Ej2:
for i in devuelvePares:
print(i)

def generarPares(limite):
num=1

while num<limite:
yield num*2
num=num+1

devuelvePares=generarPares(10)

print(next(devuelvePares))
print("Aqui podria ir mas codigo")
print(next(devuelvePares))
print("Aqui podria ir mas codigo")
print(next(devuelvePares))
Video 20: Generadores II.

Yield from: se simplifica el código del generador en el caso de usar


bucles anidados.
Es muy parecido a un array de dos dimensiones.

Ej:
def devuelveCiudades(*ciudades): #con el * indicamos que vamos a
recibir un numero indeterminado de elementos en forma de tupla
for elemento in ciudades:
for subElemento in elemento:
yield subElemento

ciudades_devueltas=devuelveCiudades("Madrid","Roma","Barcelona","
Valencia")
print(next(ciudades_devueltas))
print(next(ciudades_devueltas))

ej. con yield from:

def devuelveCiudades(*ciudades): #con el * indicamos que vamos a


recibir un numero indeterminado de elementos en forma de tupla
for elemento in ciudades:
yield from elemento

ciudades_devueltas=devuelveCiudades("Madrid","Roma","Barcelona","
Valencia")

print(next(ciudades_devueltas))
print(next(ciudades_devueltas))
Video 21: Excepciones.
 ¿Qué es una excepción?
Es un error en tiempo de ejecución.
 Este tipo de errores se pueden controlar para que la ejecución del programa no
se detenga. (Esto se conoce como manejo de excepciones)
 Pila de llamadas: Aquí aparece el nombre del error que me está dando. En este
caso el error es de tipo “ZeroDivisionError”

raceback (most recent call last):


File "prueba_excepciones.py", line 32, in <module>
print(divide(op1,op2))
File "prueba_excepciones.py", line 13, in divide
return num1/num2
ZeroDivisionError: division by zero

 Bloque Try.
Ej:
def divide(num1,num2):
try:
return num1/num2
except ZeroDivisionError:
print("No se puede dividir por cero")
return "Operacion erronea"
Video 22: Excepciones II
def divide():

try:
op1=(float(input("introduce primer numero: ")))
op2=(float(input("introduce segundo numero: ")))

print("La division es: " + str(op1/op2))


except ValueError:
print("Valor introduciodo erroneo")
except ZeroDivisionError:
print("No se puede dividir por cero")
except: #Captura cualquier error
print("Error!")

finally: #lo que metas en el finally se ejecuta siempre


print("calculo finalizado")

divide()

Video 23: Excepciones III


 Lanzamiento de excepciones
o Instrucción Raise sirve para lanzar exepciones con unestra propia
descripcion
o Creación de excepciones propias

Ej:

import math
def raiz(num1):
if num1<0:
raise ValueError("El numero no puede ser negativo")
else:
return math.sqrt(num1)

op1=(int(input("Introduce el numero: ")))

print(raiz(op1))
print("Programa Terminado")
hace saltar la siguiente excepción:

Introduce el numero: -144


Traceback (most recent call last):
File "exepcionII.py", line 11, in <module>
print(raiz(op1))
File "exepcionII.py", line 4, in raiz
raise ValueError("El numero no puede ser negativo")
ValueError: El numero no puede ser negativo

***Repl Closed***

Agregando el Try correspondiente:

import math
def raiz(num1):
if num1<0:
raise ValueError("El numero no puede ser negativo")
else:
return math.sqrt(num1)

op1=(int(input("Introduce el numero: ")))

try:
print(raiz(op1))
except ValueError as ErrorDeNumeroNegativo:
print(ErrorDeNumeroNegativo)

print("Programa Terminado")