Ejercicios graficos de programacion Python (Parte 1)

Ejercicios gráficos
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
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
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
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
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
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
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
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
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
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
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
Tiempo

 ---------------------------------------------------------------------------------------------------------------------------

Bueno espero que disfruten esta entrada y cualquier comentarios siempre es bienvenido.

Saludos, Diego.

  1. Jose dice:

    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

    1. PythonDiario dice:

      Excelente José, gracias por compartir...

    2. Jose dice:

      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.

      1. Daniela dice:

        Buenas tardes, será que puedes pasar el codigo del ejercicio 1.4 por aqui? Es que no me abre el codigo:(

    3. PythonDiario dice:

      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

    4. Unknown dice:

      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

  2. Carlos Moreno dice:

    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.

    1. Unknown dice:

      y puedes compartirlo por favor?

  3. Anónimo dice:

    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

  4. carijote80 dice:

    Y además tampoco entiendo que hace el botón resultado...soy el mismo que escribió como anónimo disculpen

    1. PythonDiario dice:

      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!!!

    2. carijote80 dice:

      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

    3. PythonDiario dice:

      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

    4. carijote80 dice:

      Ah ok!! entendido ahora si lo tengo claro, gracias por responder Diego

  5. Ernanfer2 dice:

    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

  6. Anónimo dice:

    Es la gran parte del código
    gracias

  7. Lys dice:

    Este comentario ha sido eliminado por el autor.

  8. Unknown dice:

    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

    1. Jose dice:

      Michael, lo comparto de nuevo, se habían caído porque no existe mas Copy.com.

      Gracias!
      https://drive.google.com/open?id=0B9Y0TvmkaKklM0hDOWdFSjFveEk

      1. Brandon dice:

        Jose, ¿podrías poner el enlace publicó?, ya que requiere acceso para poder entrar

        ¡Gracias!

  9. Anónimo dice:

    Hola chicos disculpen por casualidad alguno tiene la calculadora en tkinter, si fuera asi se los agradecería mucho

  10. Anónimo dice:

    Alguno tiene el 1.1, 1.3 y 2.2 pero con tkinter?

  11. Anónimo dice:

    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()

    1. Anónimo dice:

      hola alguien tiene los codigo de juego matematico con tkinter? me podrian pasar por favor es urgente

    2. Anónimo dice:

      hola, si alguien ya te pasó el juego matemático me lo podrías pasar por favor?

  12. Alejandro dice:

    Lindo blog con ejercicios el problema es que al parecer esta discontinuado. Y no han subido nada hace tiempo.. una pena

  13. Anónimo dice:

    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.

  14. Adriana dice:

    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*dolar

    def 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

  15. Anonimo dice:

    Alguien tiene el codigo del juego matematico compleo?

  16. Unknown dice:

    alguien me ayuda con el 1.4 es en la funcion

  17. Jorge dice:

    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 0

    if __name__ == "__main__":
    main()

  18. Jorge dice:

    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 0

    if __name__ == "__main__":
    main()

  19. Joseph dice:

    alguien hizo los dos ultimos ejercicios ? por favor los necesito uu

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir
White Monkey