domingo, 21 de abril de 2019

75 Python. DateTime

En el siguiente ejemplo podras ver como mostrar fecha y hora con Python, dandole el formato adecuado.

from datetime import datetime
hoy=datetime.now()
print(hoy)
año=hoy.year
mes=hoy.month
dia=hoy.day
print('hoy es {} {} {} '.format(dia,mes,año))
hora=hoy.hour
min=hoy.minute
seg=hoy.second
print(' y son las {} {} {} '.format(hora,min,seg))
Primero importamos el modulo datetime y asignamos a la variable hoy el valor de fecha / hora actual.
Lo mostramos por pantalla y seguidamente asignamos cada valor a su variable correspondiente (dia, mes, etc).

viernes, 19 de abril de 2019

74 Python. Json

Con Python podemos pasar diccionarios a formato Json y de Json a diccionarios, para ello importamos la libreria json, veamos un ejemplo explicativo.


import json
dato={'nombre':'portatil','color':'rojo','precio':560}
print(type(dato))
print(dato)
print(dato['nombre'])
#convertimos a json
datoJson=json.dumps(dato)
print(type(datoJson))
print(datoJson)
print(datoJson[0])
#pasamos de json a diccionario
dato2=json.loads(datoJson)
print(type(dato2))
print(dato2)

73 Python. Clase Padre e hija

Cuando construimos una clase que puede englobar a otras con algunas diferencias, desde estas otras clases podemos heredar de la clase padre o superclase y agregar funciones o metodos propios.
Ejemplo:

#Superclase

class uno():   

def __init__(self,nombre):       

self.nombre=nombre       

print('clase uno instanciada')

#Clase hija, hereda de la anterior

class dos(uno):   

def metodo(self):       

print('ejecuta metodo de dos')

class tres(dos):   

def metodo(self):       

print('ejecuta metodo de tres')       

super().metodo()

#instancia de clasesinstancia1=uno('uno')

print(instancia1.nombre)

instancia3=tres('tres')

print(instancia3.nombre)

instancia3.metodo()

jueves, 18 de abril de 2019

72 Python. Menu, calculadora basica

Veamos un codigo de ejemplo de menu, en el que dependiendo de la seleccion ejecutaremos suma, resta o salida del programa.

#Menu y funciones suma resta

def menu():   

print("\nOpciones\n")   

print("1. Suma")   

print("2. Resta")   

print("3. Salir")

def suma(num1,num2):   

print("La suma es {}".format(num1+num2))

def resta(num1,num2):   

print("La resta es {}".format(num1-num2))

#Bucle principal

while True:   

menu()   

opcion=int(input())   

if opcion==3:       

exit()   

elif opcion==1:       

num1=int(input("Primer numero = "))       

num2=int(input("Segundo numero = "))       

suma(num1,num2)   

elif opcion==2:       

num1=int(input("Primer numero = "))       

num2=int(input("Segundo numero = "))       

resta(num1,num2)   

else:       

print("opcion invalida")

71 Python. Generadores

Podemos generar numeros y pasarlos poco a poco a una lista, para ello devolvemos dichos numeros generandolos con bucle y usando yield.
Aqui tienes un ejemplo:

#creamos funcion que devuelve los numeros pares

def num(x):   

for i in range(x):       

if i%2==0:           

yield i

#llamamos a la funcion e imprimimos la lista

print(list(num(20)))


70 Python. Diccionarios, listas y tuplas

Estructuras de datos con Python, diccionarios, listas y tuplas.
En cuanto a estas 3 estructuras de datos, debemos tener en cuenta que las tuplas no permiten modificaciones de sus datos, las listas si.
Los diccionarios se componen de items con pares de valores (clave, valor).
Veamos un ejemplo de cada uno:

#Diccionario

dic={'rojo':'red','blanco':'white'}

print(type(dic))

print(dic)
#Lista

lis=['rojo','amarillo']

print(type(lis))

print(lis)
#Tupla, ojo es inmutable

tup=('verde','negro')

print(type(tup))

print(tup)

#La siguiente asignacion dara error

tup[1]='celeste'

print(tup)
Empaquetado y desempaquetado de tupla:

#empaquetadox=6y=3punto=x,yprint(punto)#desempaquetadox,y=puntoprint(x)print(y)

Veamos como crear una lista de multiplos de 3 dentro del intervalo del 1 al 20:

#Multiplos de 3
lista=[num*3 for num in range(1,21)]
print(lista)


69 Python. Escritura / lectura de archivos

Para escribir y leer ficheros con python tenemos que realizar 3 pasos:

  1. Abrir fichero indicando si lo abrimos en modo lectura o escritura.
  2. Escribir o leer del fichero.
  3. Cerrar el fichero, en cuanto no sea necesario, con close.

Veamos un ejemplo sencillo:

#Escritura fichero
fichero=open('fichero.txt','w')
fichero.write('Escribo este texto en el fichero')
fichero.close()
#Lectura fichero
fichero=open('fichero.txt','r')
print(fichero.read())
fichero.close()

En la apertura de fichero deberiamos asegurar que no de error, para ello podriamos encerrar el codigo dentro de un bloque con try, como en el siguiente ejemplo:

#Asegurar que no de error

try:

    f=open('fichero.txt')   

print(f.read())   

print('fichero correcto')   

f.close()

except:

    print('error con el fichero')

#esto de ejecuta siempre

finally:   

print('fin de codigo')
Vamos a crear 2 funciones, una para escribir en archivos y otra para leerlos.

#Escribir

def escribe(fichero,texto):

    fichero=open(fichero,'w')

    fichero.write(texto)

    fichero.close()

#Leer

def lee(fichero):   

fichero=open(fichero,'r')   

texto=fichero.read()   

fichero.close()   

return texto

#Llamamos a las funciones

escribe('fichero.txt','hola desde llamada a funcion')

print(lee('fichero.txt'))

68 Python. Captura Error

En el siguiente ejemplo vemos como crear una funcion que detecte si vamos a dividir por cero, capture dicho error y muestre un mensaje indicandolo, para ello ejecutaremos la division dentro del bloque try que en caso de no poder realizarlo (por algun error) salte a except donde capturamos el error y actuamos en consecuencia.

#Captura error
def divide(num1/num2):
    try:
        print(num1/num2)
        print('division resuelta')
    except ZeroDivisionError:
        print('error al dividir por cero')
divide(9,0)
divide(8,2)
Podemos tambien crear nuestras propias excepciones usando raise, como puedes ver en el siguiente codigo de ejemplo:

#creamos excepcion
num=float(input('Dame un numero: '))
if num==0:
    raise ValueError('el numero no puede ser 0')
else:
    print('podemos continuar, no es 0')

67 Python. Funcion Par Impar

Creamos una funcion a la que al pasarle un numero nos devuelve una impresion en pantalla indicando si el numero es par o impar.
Para ello, dentro de la funcion incluimos un condicional if que comprueba si el modulo de dicho numero al dividirlo por 2 es igual a 0, por lo que es par, en caso contrario else imprime impar, veamos el codigo con 3 llamadas a dicha funcion:

#Funcion par impar
def espar(x):
    if x%2==0:
        print('es par')
    else:
        print('es impar')
#Llamada a funcion
espar(3)
espar(5)
espar(12)

domingo, 7 de abril de 2019

66 Python. Range

Generar listas de numeros con range, donde damos los intervalos.

#Crear lista de numeros nums=list(range(10))print(nums)

En este ultimo genera numeros del 0 al 9.

#Con intervalosnums=list(range(1,11))print(nums)

En el anterior ponemos el intervalo, el primero indica el inicio y termina en el ultimo - 1 = 10.

#Solo impares, con salto o step
nums=list(range(1,11,2))
print(nums)

En este ultimo va desde el 1 al 10 con saltos de 2 en 2, o sea que nos da los numeros impares.


65 Python. Modulos

Creamos un modulo con la funcion correspondiente y lo llamaremos desde el archivo o script principal, el codigo del modulo podria ser asi:

#Modulo saludo
def saludar():
   print("hola desde el modulo saludo")

El script principal desde el que llamaremos al anterior archivo podria ser de la siguiente forma:

#Importamos el moduloimport saludosaludo.saludar()

Si pusieramos solo saludar() daria error, para que no de error tendriamos que importar el modulo de la siguiente forma:

from saludo import saludarsaludar()

Tambien podriamos importarlo asignando un alias.

import saludo as s
s.saludar()

02 Scratch3. Juego punto de mira

En el siguiente video veras como crear un juego sencillo en el que manejamos un punto de mira con el raton apuntando al objeto indicado en el programa. Para ello utilizaremos bucles, condicionales, funciones, variables, etc.