domingo, 27 de enero de 2019

53 Python. Crear ventana

Para crear aplicaciones Python con interfaz grafica debemos importar el modulo tkinter.
Lo primero que creamos es la ventana principal root, despues creamos un marco frame al que le damos el ancho y alto que necesitamos, cambiamos su color de fondo con bg y lo preparamos con pack para su visualizacion posterior.
Al root le cambiamos el titulo usando title.
Despues creamos una etiqueta label, que incluimos dentro del frame, le damos texto y las coordenadas donde la situaremos, pasandole despues un color de fondo y de texto.
Al final de todo el codigo se añade mainloop que sera el bucle que se ejecutara continuamente para mostrar la ventana.

from tkinter import *
root=Tk()
frame=Frame(root,width=480,height=320)
root.title("Ventana")
frame.config(bg="yellow")
frame.pack()
label=Label(frame,text="Etiqueta")
label.place(x=50,y=50)
label.config(bg="red",fg="black")
root.mainloop()




sábado, 26 de enero de 2019

52 Python. Ficheros de textos

Como ves en el codigo siguiente, lo unico que tenemos que indicar para leer o escribir en un archivo de texto es el modo en el que queremos abrir el archivo (lectura o escritura).
Al metodo open le pasamos tambien el nombre del archivo, si el archivo no existe y esta en modo escritura lo creara, en caso de que queramos abrir un archivo en modo lectura que no exista nos dara error. Por esto es recomendable que el trabajo con archivos lo encerremos en un bloque de excepciones (try).
Existen modos de apertura escritura a la vez y posicionamiento del puntero dentro del fichero, pero ahora lo que muestro es la forma mas sencilla de leer y escribir en un fichero de texto con Python.
Nunca debes olvidar cerrar el archivo "fichero.close()", asi evitaremos errores.

from io import

opentexto="Linea con texto\nSegunda linea\nTercera linea"

#abrimos fichero para escritura

wfichero=open('fichero.txt','w')

fichero.write(texto)fichero.close()

#abrimos fichero en modo lectura r

fichero=open('fichero.txt','r')

texto=fichero.read()

fichero.close()

print(texto)

lunes, 21 de enero de 2019

50 Python. Llamada a funcion con parametros indeterminados

Podemos crear funciones en las que desconocemos cuantos parametros se van a recibir, por ejemplo una funcion que sume los numeros que se le pasen, independientemente si son 2 o 100.
Podriamos realizarlo de la siguiente forma:

#Numero indeterminado de parametros, Suma

def suma(*args):   

    suma=0   

    for arg in args:       

        suma+=arg   

    return suma

#llamamos 2 veces con distintos parametros

print(suma(2,9))

print(suma(2,3,5,4,1,8,9,7))
En la funcion recibimos los parametros con *args, dentro de la funcion los recorremos mediante bucle for y realizamos las operaciones necesarias, devolviendo el valor indicado en la funcion.

51 Python. Funciones recursivas

Una funcion se dice que es recursiva cuando dentro de la funcion se vuelve a llamar a si misma, segun las condiciones indicadas en el codigo.
Una funcion recursiva debe siempre tener una condicion de parada o salida para que la llamada a si misma no genere un bucle infinito, tiene que llegar un momento donde dicha funcion deje de llamarse y pare su ejecucion obteniendo el resultado esperado.
Normalmente el ejemplo tipico para mostrar esto es el factorial de un numero, pero puede generar mas confusion, por lo que el ejemplo que pongo aqui es una cuenta atras.
Creamos la funcion cuentaAtras donde se ira comprobando si hemos llegado a 0, en caso negativo se vuelve a llamar a la funcion cuentaAtras pero con el parametro anterior - 1, se vuelve a comprobar la condicion, en caso de que el numero ya sea inferior a 1 pararemos su llamada.



Observa el codigo:

#cuenta atras, funcion recursiva

def cuentaAtras(num):   

    if num>0:       

        print(num)       

        num-=1       

        cuentaAtras(num)   

    else:       

        print("Se acabo la cuenta atras ")

cuentaAtras(10)


49 Python. Funcion con parametros

Creamos un script que nos muestre la tabla de multiplicar de un numero dado, observa el siguiente codigo:

#funcion con parametro, tablas de multiplicar

def tabla(num):   

    for i in range(1,11):       

    print("{} * {} = {}".format(num,i,num*i)

tabla(2)

tabla(8)
Hemos definido una funcion a la que le pasamos un numero como parametro en la llamada a la funcion, tal y como aparece al final del codigo, dentro del cuerpo de la funcion, iniciamos un bucle, en este caso abarca desde el 1 al 10 (11-1) ya que el ultimo no esta incluido.
Dentro del bucle mostramos el valor de la multiplicacion, para ello usamos el metodo format con print, donde estan las llaves se usaran las variables num, i y num*i, en el mismo orden de aparicion.
Llamamos a la funcion dos veces con dos parametros distintos, para ver el resultado.


domingo, 20 de enero de 2019

48 Python. Dando formato a los numeros

Damos formato con format a los numeros para indicar en cuantos caracteres los encerraremos (alineacion)
y el numero de decimales que usaremos.


Ejemplo de codigo:
#formato de numeros#si no ocupa 4 caracteres se añade 0 por delanteprint("{:04d}".format(150))#alineado a 7 caracteres sin añadir 0print("{:7d}".format(1987))print("{:7d}".format(25342))#alineado a 7 caracteres con 0 y con 2 decimalesprint("{:07.2f}".format(30.03))print("{:07.2f}".format(120.12))print("{:07.2f}".format(3.184))#alineado a 7 caracteres sin 0 y con 1 decimalprint("{:7.2f}".format(30.03))print("{:7.2f}".format(120.12))print("{:7.2f}".format(3.184))
Al añadir "07" indicamos que si no rellena los 7 caracteres, se incluyan 0 por delante.
Al poner ".2f" indicamos el numero de decimales que se mostraran.



viernes, 18 de enero de 2019

47 Python. Comprobar si longitud de texto esta en intervalo dado

Script para comprobar si un texto solicitado al usuario esta dentro de la longitud indicada en un intervalo dado.

cadena=input("Dame un texto - ")
condicion=len(cadena)>4 and len(cadena)<12
print("El texto es mayor que 4 y menor que 12 "+str(condicion))
Obtenemos un texto usando "input" y lo guardamos en la variable cadena, despues comprobamos si la longitud (len) de cadena esta entre el intervalo que queremos, si es cierto condicion valdra True (verdadero), en caso contrario valdra False (falso).
La variable condicion la convertimos de boolean a string (cadena) para mostrar su valor por pantalla.

46 Python. Operadores logicos

Ejemplo con operadores logicos en Python.
Dadas 2 variables, comprobamos ciertas condiciones:
a=12
b=9
print(a<9)
print(a>b)
print(True==False)
if (a>b and True):
   print('se cumple')
else:
   print('no se cumple')
print((a>b)or(False))

Usando "and" las 2 condiciones tienen que ser ciertas, con "or" sera cierto solo si se cumple una de las 2 condiciones.

miércoles, 16 de enero de 2019

45 Python. Listas anidadas

Creamos 3 listas y las unimos, despues mostramos el elemento central y el que esta en ultimo lugar.

a=[1,2,3]
b=[4,5,6]
c=[7,8,9]
anidada=[a,b,c]
print(anidada[1][1])
print(anidada[2][2])

Lo que hemos creado es una lista de listas, a la que podemos acceder indicando fila y columna, como si fuera una matriz.

martes, 15 de enero de 2019

44 Python. Condicional If, otro ejemplo

Veamos un ejemplo en el que dependiendo de la edad, la entrada tendra un coste mayor o menor:

edad=14if edad<5:   precio=0elif edad>15:   precio=5elif edad<65:   precio=20else:   precio=15print("Te costara : "+str(precio))

Se van estableciendo condiciones, si no se cumplen se pasa a la siguiente, si no se cumple ninguna se ejecutara la ultima opcion.

43 Python. Listas, elementos incluidos

Ejemplo de codigo para comprobar si un elemento esta o no en una lista determinada.

colores=['rojo','amarillo','verde','azul']print(colores)if 'celeste' not in colores:    colores.append('celeste')    print(colores)if 'rojo' in colores:    print('El rojo ya esta en la lista')
En el primer if evaluamos si el color celeste no esta en la lista, si es asi lo agregamos y mostramos la lista de nuevo.
Despues se comprueba si rojo esta en la lista y se imprime que si esta, en caso afirmativo.



domingo, 13 de enero de 2019

03 mBot. Deteccion obstaculos

Vamos a programar nuestro robot para que detecte cuando se acerca a un obstaculo, una vez detectada la proximidad al obstaculo emitira un sonido, cambiara la luz led y girara.


viernes, 11 de enero de 2019

42 Python. Mas listas

Escribe el siguiente codigo de ejemplo en python y veamos paso a paso como manejar las listas:
#Listas
colores=['rojo','amarillo','verde','azul']
print(type(colores))
print(colores)
print(colores[2])
#añadir
colores.append('naranja')
colores.insert(0,'rosa')
print(colores)
#borrar
del colores[2]
colores.pop()
colores.remove('rosa')
print(colores)
Nombramos la lista y le asignamos los valores entre corchetes:
colores=['rojo','amarillo','verde','azul']
Podemos comprobar de que tipo es con:
print(type(colores))
Para imprimir la lista podemos usar:
print(colores)
El siguiente codigo imprime el elemento de la lista que esta en la posicion.... 3, si 3, ten en cuenta que se numeran empezando por el 0 por lo que al indicar 2 nos mostrara 'verde', prueba a ejecutar el codigo.
print(colores[2])
Para añadir elementos podemos usar los siguientes codigos, ten en cuenta que append lo inserta al final e insert lo inserta en la posicion que le indiquemos.
colores.append('naranja')
colores.insert(0,'rosa')
print(colores)
Para borrar elementos de la lista podemos indicar la posicion con del, en caso de usar pop borraremos el ultimo y si queremos borrar por su valor lo indicamos con remove.
del colores[2]
colores.pop()
colores.remove('rosa')
print(colores) 
Terminamos siempre con print(colores) para ver por pantalla como va quedando el contenido de la lista una vez realizadas las operaciones que indicamos.
Si queremos ordenar las listas usaremos, sort de la siguiente forma:
colores.sort()
print(colores)
#si el orden es inverso
colores.sort(reverse=True)
print(colores)
Obtener longitud de una lista:
print('longitud lista '+str(len(colores)))
Recorrer lista con bucle for:
for color in colores:
  print('item : '+color+"\n")
Ejemplo para obtener una lista con los cuadrados de los numeros del 1 al 10 usando bucle for y range.
cuadrados=[]for numero in range(1,11):    cuadrados.append(numero*numero)print(cuadrados)
En el ejemplo anterior puedes ver que primero creamos una lista vacia y le asignamos los valores mediante un bucle for tomando el cuadrado de los numeros del 1 al 10, (range(1,11) #toma del primero al ultimo menos uno), el resultado se va añadiendo a la lista, usando append.
Mas operaciones que podemos realizar con listas, obtener el maximo, el minimo y la suma de valores de una lista:
print(min(cuadrados))print(max(cuadrados))print(sum(cuadrados))
Podemos tambien obtener solo una parte (slice) de una lista generada con un bucle:
#imparesimpares=[]for impar in range(1,100,2):    impares.append(impar)print(impares)#mostramos solo 10 primerosprint(impares[0:10])
Como ves en este bucle hemos puesto un tercer parametro "2" que indica el salto o step del bucle, creamos una lista con los numeros impares incluidos del 1 al 100, mostrando solo los 10 primeros.


lunes, 7 de enero de 2019