Ejercicios graficos de programacion Python (Parte 1)
Ejercicios Gráficos de Programación |
Hoy les traigo algunos ejercicios para practicar y resolverlos de forma gráfica. Ya hace algún tiempo estamos incursionando con las aplicaciones gráficas y que mejor que practicar con algunos ejercicios.
Puedes realizar los ejercicios con la librería que más te guste o prefieras (Tkinter, wxPython, Qt, etc), la idea es compartir el código y especificar con que librería fue realizado dicho código (por un tema de orden y no marearnos con las diferentes librerías).
Quizá estas entradas te puedan ayudar:
1 - Como instalar PyQt 4 en python
2 - Primera aplicación con Qt Designer y python
3 - Aplicaciones gráficas con Tkinter y python
4 - Diálogos y mensajes en Python con Tkinter
Las mejores soluciones serán publicadas en otra entrada referenciando al Autor de la solución.
Los códigos de las soluciones pueden dejarlo como comentario y servirán de referencia para los que recién comienzan con las aplicaciones gráficas en python. Recuerda que al dejar un comentario con código Python en el Blog, el mismo pierde la identación y puede ser confuso (en ese caso puedes hacer la identación con ---- 4 guiones por identación).
Ejemplo:
def Saludo():
----print "Hola Mundo"
Ejercicios de aplicaciones GUI en Python
Ejercicio 1.1 - Contador Creciente
Ejercicio 1.1 |
Escribir una aplicación GUI (llamada ContCreciente) como la que se ve en la figura. Cada ves que se haga clic en el botón "+", el valor del contador se incrementa en 1.
El programa lleva 3 componentes:
1 - Una Etiqueta "Contador"
2 - Un lineEdit no editable, que muestre el valor del contador
3 - Un Botón "+"
Ejercicio 1.2 - Contador Decreciente
Ejercicio 1.2 |
Escribir una aplicación GUI (llamada ContDecreciente) como la que se ve en la figura. Cada ves que se haga clic en el botón "-", al valor de contador se le resta 1.
El programa lleva 3 componentes:
1 - Una Etiqueta "Contador"
2 - Un lineEdit no editable, que muestre el valor de contador y que inicie con el número 88
3 - Un Botón "-"
Ejercicio 1.3 - Factorial
Ejercicio 1.3 |
Escribir una aplicación GUI (llamada Factorial) como la que se ve en la figura. Cada ves que se haga clic en el botón "Siguiente", debe calcular el factorial del primer lineEdit y mostrarlo en el segundo. Al dar siguiente (n se incrementa en 1) n = 2 con su factorial correspondiente.
Formula de factorial
Factorial de 5 = 1 x 2 x 3 x 4 x 5 = 120
Factorial de 3 = 1 x 2 x 3 = 6
La aplicación lleva:
1 - Dos etiquetas: una para n y otra para Factorial (n)
2 - Dos lineEdit no editables
3 - Un botón siguiente
Ejercicio 1.4 Contador
Ejercicio 1.4 |
Escribir una aplicación GUI (llamada Contador) como la que se ve en la figura. Con 3 botones (Count Up - Para incrementar, Count Down - Para restar y Reset - Para comenzar de cero).
La aplicación lleva:
1 - Una etiqueta "Contador"
2 - Un lineEdit no editable, que muestre el contador y que inicie en 0
3 - 3 Botones
Ejercicios gráficos un poco más complejos
Ejercicio 2.1 Calculadora
Ejercicio 2.1 |
Escribir una aplicación GUI (llamada Calculadora) que funcione como una simple calculadora.
La aplicación lleva:
1 - Tres etiquetas (Primer número, Segundo número y Resultado)
2 - 3 lineEdit (el lineEdit de Resultado no se puede modificar)
3 - 6 Botones (+, -, *, /, % y RESET). El botón CLEAR debe borrar los 3 lineEdit. Al presionar (+, -, *, / o %) el único campo que se modifica es Resultado.
Ejercicio 2.2 Peliculas
Ejercicio 2.2 |
Escribir una aplicación GUI (llamada Películas). Su función será: al pulsar el botón Añadir, agregará en el listWidget el contenido de lineEdit (Películas).
La aplicación lleva:
1 - 2 Etiquetas (Escribe el título de una película y Películas)
2 - Un lineEdit donde se escribirá el nombre de la película
3 - Un listWidget que registra las películas añadidas
4 - Un botón "Añadir"
Ejercicio 2.3 Generador de números
Ejercicio 2.3 |
Escribir una aplicación GUI (llamada Generador de números). Su función será: al pulsar el botón Generar, generará un número aleatorio en el rango de los dos Spin Box.
La aplicación lleva:
1 - 3 Etiquetas (Número 1, Número 2 y Número Generado)
2 - 2 Spin Box
3 - 1 lineEdit que no pueda ser modificado
4 - 1 Botón "Generar"
Ejercicio 2.4 Calculadora 2
Ejercicio 2.4 |
Escribir una aplicación GUI (llamada Calculadora 2) como la que se ve en la figura y que funcione como una calculadora.
La aplicación lleva:
1 - 4 Etiquetas (Valor 1, Valor 2, Resultado y Operaciones)
2 - 4 radioButton (Sumar, Restar, Multiplicar y Dividir)
3 - 3 lineEdit (el lineEdit Resultado no puede ser modificado)
4 - 1 botón Calcular, que al ser presionado realice la operación correspondiente.
"Desafío para los más valientes..."
Juego Matemático
Juego Matemático |
Escribir una aplicación GUI (llamada Juego Matemático) como la que se ve en la figura.
La aplicación lleva:
1 - 7 etiquetas (Juegos:, 2, Buenos:, 1, Malos:, 1 y -) las etiquetas que son números arrancan en vacías. La etiqueta - (entre medio de los dos lineEdit) arranca con signo de pregunta (?) y cambia dependiendo el valor del radioButton (Sumar = +, Restar = -, Multiplicar = * y Dividir = /).
2 - 3 lineEdit (Sólo el lineEdit Resultado puede ser modificado)
3 - 2 Botones (Nuevo Numero y Resultado)
Como funciona:
El jugador arranca con los radioButton y los lineEdit vacíos. Cuando el jugador presione Nuevo Juego saldrán 2 numero aleatorios (en los lineEdit de arriba) junto con 1 radioButton. El jugador debe poner un resultado dependiendo de la operación y presionar el botón Resultado. Si el jugador gana, Juego: suma 1 y Buenos: suma 1. El jugador presiona Nuevo Juego, salen dos números aleatorios nuevos y una operación nueva (todo aleatorio). El jugador hace un mal cálculo y pierde (Juegos: suma 1 y queda en 2, Malos: suma 1). Así sigue hasta que se aburra o se convierta en un genio jeje...
Hasta aquí están perdonados, pero...
Un poco más de complejidad ¿Porqué no?
Puedes agregar 3 radioButton más para que el jugador pueda elegir la dificultad. Si elige Fácil (los número aleatorios serán de 0 a 10), si elige Medio (los números aleatorios serán de 0 a 100) y si elige Difícil (los números aleatorios serán de 0 a 1000). Cada ves que elija una dificultad todo vuelve a 0.
Dificultad |
Y puedes agregar un contador (LCD Number) que haga una cuenta regresiva de 60 segundos (si el jugador no responde antes del tiempo pierde ese juego). El tiempo en segundos puede ser también dependiendo de la dificultad.
Tiempo |
---------------------------------------------------------------------------------------------------------------------------
Bueno espero que disfruten esta entrada y cualquier comentarios siempre es bienvenido.
Saludos, Diego.
-
-
Excelente José, gracias por compartir...
-
Terminado! En el mismo link dejé todos los ejercicios. Cualquiera que tenga una sugerencia para que sea mas simple bienvenido.
Están todos los ejercicios, menos el último en la versión compleja (después voy a tratar de hacerlo).
Gracias Diego.
Abrazo.-
Buenas tardes, será que puedes pasar el codigo del ejercicio 1.4 por aqui? Es que no me abre el codigo:(
-
-
Excelente José, después les doy una revisada. Como te comente, me tengo que poner en campaña y darle una solución a los ejercicios. Saludos
-
Hola José como hago para poder ver las soluciones entré al link que dejaste pero no puedo verlo, empeze con esto de la programacion en python y estuve practicando pero todavia me falta. gracias
-
-
Hola, hice el ejercicio 2.1, La Calculadora.
La hice usando PyQt4 (con la herramienta QtDesigner) y Python 2.7, luego investigué más a fondo y me di cuenta que le puedes aplicar estilos a tu calculadora (con código css). Al final resulto una genial calculadora de escritorio. Por acá les dejo el código: https://github.com/CarMoreno/Vibora . Espero sea de ayuda.
Saludos.
-
y puedes compartirlo por favor?
-
-
Hola ya hice casi todos los ejercicios pero no he podido hacer el del juego matemático porque no entiendo la función del juego no lo tengo claro...porque si se hace click a nuevo juego o nuevo número se supone que ya se sabe cuanto es el resultado de la operación y que operación es porque ya lo trae aleatoria mente. ..por favor podrían ser mas específicos para poder hacer está aplicación? Muchas gracias
-
Y además tampoco entiendo que hace el botón resultado...soy el mismo que escribió como anónimo disculpen
-
Los dos números de arriba son aleatorios, el del resultado lo coloca el que va a jugar y luego presiona sobre el botón "Resultado" para comprobar si esta correcto. ¿Entiendes? Saludos y gracias por visitar el blog!!!
-
La verdad sigo sin entender disculpa, yo entiendo que los números de arriba son aleatorios al igual que el radiobutton y por ende el signo que va en medio de los dos números todo eso es aleatorio...pero entonces que sentido tiene poner un resultado en el lineEdit que se puede editar (Resultado) si ya de antemano se como en el ejemplo que esta en el blog que 10 - 5 va hacer igual a 5 para que voy a comprobar algo que ya es obvio...no se si me entiendes..gracias y disculpa el fastidio pero quisiera estar bien claro como funciona
-
La idea es pensar el problema y resolverlo. Se que el ejemlo de 10 - 5 es muy fácil, pero quizá 721 * 13 es más complicado. Si quieres puedes ponerle una cuenta regresiva de 10 segundos para que la persona conteste antes de ese tiempo, de lo contrario pierde. Te parece?
Saludos -
Ah ok!! entendido ahora si lo tengo claro, gracias por responder Diego
-
-
Felicidades por tu blog....es bueno; me gustaría pertenecer a una comunidad que sea sobre python(soy autodidacta) y no encuentro con quien compartir...Gracias.Un abrazo desde Rep Dom
-
Es la gran parte del código
gracias -
Este comentario ha sido eliminado por el autor.
-
Hola Diego como hago para poder ver las soluciones de la parte 2... entré al link que dejo josé pero no puedo verlo, empeze con esto de la programacion en python y estuve practicando pero todavia me falta. gracias
-
Michael, lo comparto de nuevo, se habían caído porque no existe mas Copy.com.
Gracias!
https://drive.google.com/open?id=0B9Y0TvmkaKklM0hDOWdFSjFveEk-
Jose, ¿podrías poner el enlace publicó?, ya que requiere acceso para poder entrar
¡Gracias!
-
-
-
Hola chicos disculpen por casualidad alguno tiene la calculadora en tkinter, si fuera asi se los agradecería mucho
-
Alguno tiene el 1.1, 1.3 y 2.2 pero con tkinter?
-
Hola, subo el ejercicio 1.1. en Tkinter:
#Contador creciente
from tkinter import *
raiz = Tk()contador=StringVar()
entry = Entry(raiz, textvariable=contador)
entry.grid(row=0, column=1, padx=5, pady=5)
entry.config(justify="center")label = Label(raiz, text="Contador")
label.grid(row=0, column=0, sticky="w", padx=5, pady=5)def comandoBoton():
contador.set(int(contador.get())+1)
boton=Button(raiz, text="+", command=comandoBoton)
boton.grid(row=0, column=2, padx=5, pady=5)raiz.mainloop()
-
hola alguien tiene los codigo de juego matematico con tkinter? me podrian pasar por favor es urgente
-
hola, si alguien ya te pasó el juego matemático me lo podrías pasar por favor?
-
-
Lindo blog con ejercicios el problema es que al parecer esta discontinuado. Y no han subido nada hace tiempo.. una pena
-
Hola de pronto alguien tiene alguna idea de còmo realizar el còdigo para este proyecto?
Crear una interfaz grafica en Python, la
cual: Permita de una manera dinámica el
habilitar o deshabilitar 5 objetos
dentro de la interfaz. Los objetos se
plantearan como analogía a bits de un
numero binario y se debe mostrar su
conversión a decimal. -
hola podrian ayudarme a resolver el de mi programa por favor y gracias
from tkinter import *
#--------FUNCIONES-------------
dolar=458193.82
def convertir():
opcion=opc.get()if(opcion==1):
resultado=monto/dolar
elif(opcion==2):
resultado=monto*dolardef mostrar():
print(convertir())
#-----------GUI----------------------
marco=Tk()
marco.title("Convertidor de moneda")
opc=IntVar()
monto=IntVar()miFrame=Frame(marco, width=300,height=300)
miFrame.pack()etiqueta=Label(miFrame,text="Monto")
etiqueta.grid(row=0,column=0, padx=10,pady=10)cuadroTexto=Entry(miFrame,textvariable=monto)
cuadroTexto.grid(row=0,column=1, padx=10,pady=10)seleccBolivares=Radiobutton(marco,text="Bolivares",variable=opc, value=1,command=convertir, padx=10,pady=10).pack()
seleccDolares=Radiobutton(marco,text="Dolares",variable=opc, value=2,command=convertir, padx=10,pady=10).pack()botonCalcular=Button(marco,text="Convertir",padx=10,pady=10,command=mostrar()).pack()
marco.mainloop()
El error ocurre al presionar los radiobutton
-
Alguien tiene el codigo del juego matematico compleo?
-
alguien me ayuda con el 1.4 es en la funcion
-
Ejercicio 3.
from tkinter import *class Factorial():
def __init__(self):
self.root = Tk()
self.root.title("Factorial")
self.root.geometry("500x100")
self.miFrame = Frame(self.root)
self.miFrame.pack()self.n1 = IntVar(value=0)
self.n2 = StringVar()self.lb1 = Label(self.miFrame, text="n")
self.lb1.grid(row=0, column=0)
self.txt1 = Entry(self.miFrame, textvariable=self.n1)
self.txt1.grid(row=0, column=1)
self.lb2 = Label(self.miFrame, text="Factorial (n)")
self.lb2.grid(row=0, column=2)
self.txt2 = Entry(self.miFrame, textvariable=self.n2)
self.txt2.grid(row=0, column=3)
self.btn = Button(self.miFrame, text="Siguiente", width=10, command=self.num_factorial)
self.btn.grid(row=0, column=4)self.root.mainloop()
def num_factorial(self):
self.n1.set(self.n1.get() + 1)fact = 1
for i in range(1, (self.n1.get()) + 1):
fact = fact * i
self.n2.set(fact)def main():
f = Factorial()
return 0if __name__ == "__main__":
main() -
Ejercicio 3.
from tkinter import *class Factorial():
def __init__(self):
self.root = Tk()
self.root.title("Factorial")
self.root.geometry("500x100")
self.miFrame = Frame(self.root)
self.miFrame.pack()self.n1 = IntVar(value=0)
self.n2 = StringVar()self.lb1 = Label(self.miFrame, text="n")
self.lb1.grid(row=0, column=0)
self.txt1 = Entry(self.miFrame, textvariable=self.n1)
self.txt1.grid(row=0, column=1)
self.lb2 = Label(self.miFrame, text="Factorial (n)")
self.lb2.grid(row=0, column=2)
self.txt2 = Entry(self.miFrame, textvariable=self.n2)
self.txt2.grid(row=0, column=3)
self.btn = Button(self.miFrame, text="Siguiente", width=10, command=self.num_factorial)
self.btn.grid(row=0, column=4)self.root.mainloop()
def num_factorial(self):
self.n1.set(self.n1.get() + 1)fact = 1
for i in range(1, (self.n1.get()) + 1):
fact = fact * i
self.n2.set(fact)def main():
f = Factorial()
return 0if __name__ == "__main__":
main() -
alguien hizo los dos ultimos ejercicios ? por favor los necesito uu
Deja una respuesta
Hice el ejercicio 1, lo comparto en este link para que lo vean, voy a ir intentando hacer los otros y los voy a ir poniendo ahi.
Saludos
https://copy.com/xgXqq1SZkHpy3hy4