miércoles, 31 de octubre de 2018

Unidad 3: Desplegar imagen y sonido (nombre)

Desplegar imagen y sonido (nombre)


Programa que despliegue imágenes con su sonido correspondiente y arreglo con los nombres utilizando hilos

Código:


# coding=utf-8
from Tkinter import * #para crear la GUI
from PIL import Image, ImageTk # para desplegar imagenes
import os #Una libreria para dar una ruta path de una carpeta
import random #para seleccionar y dar numeros aleatorios
import pygame as pygame #la libreria se usara para el sonido
import threading

root = Tk() #Para la ventana de la app de TK
root.geometry("500x500") #tamaño de la ventana

dir = os.path.dirname(__file__)#lo utilizo para dar una ruta de la imagenes
fotos = dir + "/imagenes/" #ruta carpeta de la imagenes
sonidos = dir +"/sonidos/" #ruta carpeta de los sonidos
#numeros aleatorios
arreglo = [1,2,3,4,5,6,7,8] #para crear un arreglo con el num de las imagenes
eleccion_aleatoria = str(arreglo.index(random.choice(arreglo))+1) #indice del arreglo,random
print eleccion_aleatoria + '\n' #muestra el num aleatorio
figura = fotos + eleccion_aleatoria + '.png' # direccion de la imagen
print figura # muestra la ruta de la imagen
"como depliego el archivo en la ventana Tk"
img = Image.open(figura) #abre la imagen
tkimage = ImageTk.PhotoImage(img) # la imagen en la variable tkimage
lab = Label(root,image = tkimage)#despliega la imagen en la ventana Tk por la etiqueta
lab.pack()

#para reproducir sonido
sonido = sonidos +"s_" + eleccion_aleatoria + ".mp3" # asignacion de ruta de sonidos en la variable
print sonido #muestra la ruta de sonido
pygame.mixer.init()
pygame.mixer.music.load(sonido) #abre el archivo
pygame.mixer.music.play() #reproduce sonido


arreglo1 = ["CAT", "DOG", "HOUSE", "PENCIL", "WEAPON", "3D", "ROSE", "CAR"]#nombres de la imagen
nombre = str(arreglo1[int(eleccion_aleatoria) -1]) #asigna el nombre de la imagen
print 'objeto > ' + nombre # muestra el nombre del objeto en consola
nom = Label(root, text = nombre, font=("Arial", 20)).place(x =200, y=250)#etiqueta del nombre de imagen

root.mainloop()



Ejecución:





Link de sonido: https://drive.google.com/open?id=1b3DGofeDB8BHTRnFvlQE3ez-aX_ZkcC9

Link de imágenes: https://drive.google.com/open?id=1uV_JdnF1guOnrKCXBEmPfp4n1p2IHqR0

Unidad 3: Ejemplos de hilos "Hola Mundo"

Ejemplos de hilos "Hola Mundo"


Usando start()

Código:

import threading #libreria para hacer
import time #libreria para usar el time

def hola_mundo(nombre):
    print ('Hola Mundo ' + nombre)
    time.sleep(15)

if __name__ == '__main__':
    hilos = threading.Thread(target = hola_mundo,args = ('Azul',)) #se creo un objeto de tipo hilo con la clase Threading
    hilos.start()
    print 'Se esta haciendo o Termino hilo '
    print 'Datos 1: '
    print ('Dame el valor n_1: ')
    n_1 = input()
    print ('Dame el valor n_2: ')
    n_2 = input()
    suma = n_1 + n_2
    print suma




Ejecución:



Usando star() y join()

Código:

import threading #libreria para hacer
import time #libreria para usar el time

def hola_mundo(nombre):
    print ('Hola Mundo ' + nombre)
    time.sleep(15)

if __name__ == '__main__':
    hilos = threading.Thread(target = hola_mundo,args = ('Azul',)) #se creo un objeto de tipo hilo con la clase Threading
    hilos.start()
    hilos.join() #Detiene el hilo hasta que termine
    print 'Se esta haciendo o Termino hilo '
    print 'Datos 1: '
    print ('Dame el valor n_1: ')
    n_1 = input()
    print ('Dame el valor n_2: ')
    n_2 = input()
    suma = n_1 + n_2
    print suma





Ejecución:





martes, 30 de octubre de 2018

Unidad 3: Desplegar imagen y sonido(aleatoria)

Desplegar imagen y sonido(aleatoria)



Programa con sonidos correspondientes a la imagen.


Código:

# coding=utf-8
from Tkinter import * #para crear la GUI
from PIL import Image, ImageTk # para desplegar imagenes
import os #Una libreria para dar una ruta path de una carpeta
import random #para seleccionar y dar numeros aleatorios
import pygame as pygame

root = Tk() #Para la ventana de la app de TK
root.geometry("500x500") #tamaño de la ventana

dir = os.path.dirname(__file__)#lo utilizo para dar una ruta de la imagenes
fotos = dir + "/imagenes/"
sonidos = dir +"/sonidos/"

arreglo = [1,2,3,4,5,6,7,8] #para crear un arreglo con el num de las imagenes
eleccion_aleatoria = str(arreglo.index(random.choice(arreglo))+1)
print eleccion_aleatoria + '\n' #muestra el num aleatorio
figura = fotos + eleccion_aleatoria + '.png' # direccion de la imagen
print figura # muestra la ruta de la imagen
"como depliego el archivo en la ventana Tk"
img = Image.open(figura) #
tkimage = ImageTk.PhotoImage(img) # la imagen
lab = Label(root,image = tkimage)#despliega la imagen en la ventana Tk por la etiqueta
lab.pack()

#para reproducir sonido

sonido = sonidos +"s_" + eleccion_aleatoria + ".mp3"
print sonido
pygame.mixer.init()
pygame.mixer.music.load(sonido) #abre el archivo
pygame.mixer.music.play() #reproduce sonido
root.mainloop()






Ejecución:


Muestra el numero aleatorio y la dirección donde se encuentra la imagen y el sonido correspondiente.




Link de sonido: https://drive.google.com/open?id=1b3DGofeDB8BHTRnFvlQE3ez-aX_ZkcC9

Link de imágenes: https://drive.google.com/open?id=1uV_JdnF1guOnrKCXBEmPfp4n1p2IHqR0

Unidad 3: Threads /Hilos en Python

Threads /Hilos en Python


Los threads son un concepto similar a los procesos: también se trata de código en ejecución. Sin embargo los threads se ejecutan dentro de un proceso, y los threads del proceso comparten recursos entre si, como la memoria, por ejemplo.

El sistema operativo necesita menos recursos para crear y gestionar los threads, y al compartir recursos, el cambio de contexto es más rápido. Además, dado que los threads comparten el mismo espacio de memoria global, es sencillo compartir información entre ellos: cualquier variable global que tengamos en nuestro programa es vista por todos los threads.

EL GIL

La ejecución de los threads en Python está controlada por el GIL (Global Interpreter Lock) de forma que sólo un thread puede ejecutarse a la vez, independientemente del número de procesadores con el que cuente la máquina.

THREADS EN PYTHON

El trabajo con threads se lleva a cabo en Python mediante el módulo thread. Este módulo es opcional y dependiente de la plataforma, y puede ser necesario, aunque no es común, recompilar el intérprete para añadir el soporte de threads.

Además de thread, también contamos con el módulo threading que se apoya en el primero para proporcionarnos una API de más alto nivel, más completa, y orientada a objetos. El módulo threading se basa ligeramente en el modelo de threads de Java.

El módulo threading contiene una clase Thread que debemos extender para crear nuestros propios hilos de ejecución. El método run contendrá el código que queremos que ejecute el thread. Si queremos especificar nuestro propio constructor, este deberá llamar a threading.Thread.__init__(self) para inicializar el objeto correctamente.

import threading  
  
class MiThread(threading.Thread):  
      def __init__(self, num):  
          threading.Thread.__init__(self)  
          self.num = num  
  
      def run(self):  
          print "Soy el hilo", self.num  


Para que el thread comience a ejecutar su código basta con crear una instancia de la clase que acabamos de definir y llamar a su método start. El código del hilo principal y el del que acabamos de crear se ejecutarán de forma concurrente.

print "Soy el hilo principal"  
  
for i in range(0, 10):  
    t = MiThread(i)  
    t.start()  
    t.join()  



Programa que usa dos hilos. 
Código:

import time
import thread

def imprimir_mensaje(mensaje):
    while True:
        print(mensaje)
        time.sleep(1)


def main():
    mensaje = "Thread1" #variable aux
    mensaje2 = "Thread2"  # variable aux
    #empiezo el thread
    thread.start_new_thread(imprimir_mensaje, (mensaje,))
    thread.start_new_thread(imprimir_mensaje, (mensaje2,))

    x = raw_input("estoy esperando que presiones enter...\n")

    print ("Termino la funcion main")
main()



Ejecución:



Referencia: https://www.youtube.com/watch?v=4HKy5nNEqeQ
Referencia: http://mundogeek.net/archivos/2008/04/18/threads-en-python/


miércoles, 24 de octubre de 2018

Unidad 3: Desplegar imagen (aleatoria)

Desplegar imagen(aleatoria)



Programa que despliegue imágenes de forma aleatoria.


Código:


# coding=utf-8
from Tkinter import * #para crear la GUI
from PIL  import Image, ImageTk # para desplegar imagenes
import os #Una libreria para dar una ruta path de una carpeta
import random #para seleccionar y dar numeros aleatorios

root = Tk() #Para la ventana de la app de TK
root.geometry("500x500") #tamaño de la ventana

dir = os.path.dirname(__file__)#lo utilizo para dar una ruta de la imagenes
fotos = dir + "/imagenes/"

arreglo = [1,2,3,4,5,6,7,8] #para crear un arreglo con el num de las imagenes
eleccion_aleatoria = str(arreglo.index(random.choice(arreglo))+1)
print eleccion_aleatoria + '\n' #muestra el num aleatorio
figura = fotos + eleccion_aleatoria + '.png' # direccion de la imagen
print figura # muestra la ruta de la imagen
"como depliego el archivo en la ventana Tk"
img = Image.open(figura) #
tkimage = ImageTk.PhotoImage(img) # la imagen
lab = Label(root,image = tkimage)#despliega la imagen en la ventana Tk por la etiqueta
lab.pack()

root.mainloop()





Ejecución:






Link de imagenes: https://drive.google.com/open?id=1uV_JdnF1guOnrKCXBEmPfp4n1p2IHqR0

Unidad 3: Abriendo una imagen

Abriendo una imagen


Código:


import Tkinter as tk

from PIL import  Image, ImageTk

root = tk.Tk()#se uso para hacer una ventana de tkinter
img = Image.open('images.gif')#se usa el objeto image de la librería PIL para abrir un archivo gif
tkimage = ImageTk.PhotoImage(img)
tk.Label(root, image = tkimage).pack()
root.mainloop()








En img.thumbnail((x, y),Image.ANTIALIAS) se establece el tamaño de la imagen, casos como que la imagen sea de gran tamaño se puede ajustar a uno que sea tu preferencia más pequeña.
No se puede para ajustar la imagen seleccionada cuando es pequeña a una de más tamaño.

Código:
import Tkinter as tk
from PIL import  Image, ImageTk

root = tk.Tk()#se uso para hacer una ventana de tkinter
img = Image.open('images.gif')#se usa el objeto image de la libreria pil para abrir un archivo gif

img.thumbnail((500,700), Image.ANTIALIAS)  # establezco sus dimensiones y la propiedad antialiasado
imagen = ImageTk.PhotoImage(img)  # la convierto a un formato soportado por los widgets de tkinter

#tkimage = ImageTk.PhotoImage(img)
tk.Label(root, image = imagen).pack()
root.mainloop()








jueves, 18 de octubre de 2018

Unidad 3: Programa de ejemplo juego p2(blackjack y piedra,papel o tijera)

Ejemplo juego


Huerta: Black Jack

Código:

Librerias
import random
import time

#Variables Globales
global cartas
cartas = ["A",2,3,4,5,6,7,8,9,10,"J","Q","K"]

global nombrejugadores
nombrejugadores = []

#Funciones
def TurnoCartas(nombre):
    total = 0
    eleccion = 1
    i = 1
    deck = []
    print "-Turno de ",nombre,": "

    while (eleccion!=0 & total<21 0="" 11="" 1="" break="" deck.append="" elif="" else:="" i="" if="" ncarta="" numero="" numerosnaturales="[2,3,4,5,6,7,8,9,10]" por="" print="" que="" quieres="" return="" tenga="" time.sleep="" total="" tramposo="" tu="" u="" ue="" valor="">1):
            print "-Total: ", total,"\n"

        if(total<21 0="" 1="" 2="" 3="" 72="" artas:="" blackjack="" carta="" cartas="" deck.append="" deck="" def="" del="" el="" eleccion="0" elif="" else:="" es:="" for="" ganador2j="" ganador="" has="" hecho="" i="" if="" in="" inalizar="" jugador="" l="" mala="" mirar="" n="" nombre="" nombrejugadores.append="" nombrejugadores="" ntroduce="" numero="" numjugadores="" otra="" pedir="" perdido="" print="" range="" respuesta="=2):" return="" suerte="" time.sleep="" total="" turno="" tus="" un="" while="">J2):
        print nombre[0]," Con un Total de ",J1
    elif(J2>J1):
        print nombre[1]," Con un Total de ",J2
    elif(J1==J2):
        print "\nHay un EMPATE!! con un Total de ",J1," en Ambos Jugadores!!"
    else:
        print "\nLos 2 Jugadores PERDIERON!"

def Ganador3J(J1,J2,J3, nombre):
    print "El Ganador es: ",
    time.sleep(3)

    if (J1 > J2 and J1>J3):
        print nombre[0], " Con un Total de ", J1
    elif (J2 > J1 and J2>J3):
            print nombre[1], " Con un Total de ", J2
    elif (J3 > J1 and J3>J2):
            print nombre[2], " Con un Total de ", J3
    elif(J1==J2 and J1!=J3 and J2!=J3):
        print "\nHay un EMPATE!! entre ",nombre[0]," y ",nombre[1]," con un Total de ", J1, " en los Jugadores!!"
    elif (J2 == J3 and J2 != J1 and J3!=J1):
        print "\nHay un EMPATE!! entre ", nombre[1], " y ", nombre[2], " con un Total de ", J2, " en los Jugadores!!"
    elif (J1 == J3 and J1 != J2 and J3!=J2):
        print "\nHay un EMPATE!! entre ", nombre[0], " y ", nombre[2], " con un Total de ", J1, " en los Jugadores!!"
    elif (J1 == J2 and J2 == J3):
        print "\nHay un EMPATE!! con un Total de ", J1, " en TODOS los Jugadores!!"
    else:
        print "\nLos 3 Jugadores PERDIERON!"

#MAIN
continuar = 1
while continuar != 0:
    print "JUEGO DE BLACK JACK"
    print "-"*72
    numjugadores = input("Numero de Jugadores: 1) 1 Jugador  2) 2 Jugadores  3) 3 Jugadores\n")
    NombreJugadores(numjugadores)

    if(numjugadores==1):

        print "Buenas, Jugadores, Vamos a empezar la Partida de BlackJack"
        time.sleep(4)
        print "Inicia el Jugador numero 1"
        time.sleep(2)
        Jugador1 = TurnoCartas(nombrejugadores[0])
        print "Total del Jugador = ",Jugador1,"\n"
        time.sleep(3)
        continuar = input("\nQuieres Jugar Otra Vez???  1)Si   0)No\n")
        del nombrejugadores[:]
        print "-" * 72

    elif(numjugadores==2):

        print "Buenas, Jugadores, Vamos a empezar la Partida de BlackJack"
        time.sleep(4)
        Jugador1 = 0
        Jugador2 = 0
        for i in range(numjugadores):
            print "Inicia el Jugador numero ",i+1
            time.sleep(2)
            if(i==0):
                Jugador1 = TurnoCartas(nombrejugadores[i])
                print "Turno Finalizado. Espera a tu Oponente...\n"
                time.sleep(3)
                print "-" * 72
            else:
                Jugador2 = TurnoCartas(nombrejugadores[i])
                print "Turno Finalizado.\n"

        time.sleep(2)
        print "Eligiendo Ganador",
        time.sleep(2)
        print ".",
        time.sleep(2)
        print ".",
        time.sleep(2)
        print ".\n"
        time.sleep(2)

        Ganador2J(Jugador1,Jugador2,nombrejugadores)
        #jugadores = {nombrejugadores[0]: Jugador1 , nombrejugadores[1]: Jugador2}
        # print "\nEl Ganador es",
        #time.sleep(3)
        #print max(jugadores, key=jugadores.get), " con un Total de ",max(jugadores.values())
        #time.sleep(3)

        continuar = input("\nQuieres Jugar Otra Vez???  1)Si   0)No\n")
        del nombrejugadores[:]
        print "-" * 72

    elif(numjugadores == 3):
        print "Buenas, Jugadores, Vamos a empezar la Partida de BlackJack"
        time.sleep(4)
        Jugador1 = 0
        Jugador2 = 0
        Jugador3 = 0
        for i in range(numjugadores):
            print "Inicia el Jugador numero ", i + 1
            time.sleep(2)
            if (i == 0):
                Jugador1 = int(TurnoCartas(nombrejugadores[i]))
                print "Turno Finalizado. Espera a tu Oponente...\n"
                time.sleep(3)
                print "-" * 72
            elif(i == 1):
                Jugador2 = int(TurnoCartas(nombrejugadores[i]))
                print "Turno Finalizado. Espera a tu Oponente...\n"
                time.sleep(3)
                print "-" * 72
            else:
                Jugador3 = int(TurnoCartas(nombrejugadores[i]))
                print "Turno Finalizado.\n"

        time.sleep(2)
        print "Eligiendo Ganador",
        time.sleep(2)
        print ".",
        time.sleep(2)
        print ".",
        time.sleep(2)
        print ".\n"
        time.sleep(2)

        Ganador3J(Jugador1, Jugador2, Jugador3, nombrejugadores)
        #jugadores = {nombrejugadores[0]: Jugador1, nombrejugadores[1]: Jugador2, nombrejugadores[2]: Jugador3}
        #print "\nEl Ganador es",
        #time.sleep(3)
        #print max(jugadores, key=jugadores.get), " con un Total de ", max(jugadores.values())
        #time.sleep(3)
        continuar = input("\nQuieres Jugar Otra Vez???  1)Si   0)No\n")
        del nombrejugadores[:]

        print "-" * 72




Juego piedra, papel y tijera

Código:


from Tkinter import *  # libreria para utilizar las ventanas,labels,ventanasemergentes y botones
from tkMessageBox import *  # para poder utilizar el abra el cuadro de dialogo
import random  # para poder generar nuneros aleatorios


def funcion(opcion):
    tiposdemanos = ['piedra', 'papel', 'tijera']  # creo un arreglo con tres valores posibles
    eleccion_aleatoria = random.choice(
        tiposdemanos)  # a la variable le asigno un valor a traves de random utilizando uno de los tres valores que estan en el array
    decisioncpu = eleccion_aleatoria  # la variable decision cpu se iguala
    decision_usuario = opcion  # utilizo como parametro la variable opcion y la igualo a decision usuario para poder usarla en el if

    if decision_usuario == 1:  # el numero uno lo uso como tijera y ese valor se lo asigno al presionar el boton 'piedra'
        Decisionusuario = Label(ventana, text='elegiste piedra', font=("agency fb", 12)).place(x=50, y=220)
        imagen1 = PhotoImage(file='piedrausuario.gif')  # utilizo una imagen para mostrar mi seleccion
        lblusuario = Label(ventana, image=imagen1).place(x=50, y=300)  # muestro esa image a traves de un label
        DecisionCPU = Label(ventana, text=('la cpu eligio ' + decisioncpu), font=("agency fb", 12)).place(x=300,
                                                                                                          y=220)  # muestro en pantalla la decision random que genero
        if decisioncpu == "piedra":  # la decision random la comparo con cadenas de caracteres en los 3 casos
            imagen2 = PhotoImage(file='piedracpu.gif')  # eligo la imagen determinada
            lblcpu = Label(ventana, image=imagen2).place(x=250, y=300)  # y la muestro en pantalla
            showinfo(title='resultado',
                     message='empate')  # atravez de una ventana emergente muestro si gano,perdio o empato

        elif decisioncpu == 'papel':
            imagen2 = PhotoImage(file='papelcpu.gif')
            lblcpu = Label(ventana, image=imagen2).place(x=250, y=300)
            showinfo(title='resultado ', message='perdiste')

        else:
            imagen2 = PhotoImage(file='tijeracpu.gif')
            lblcpu = Label(ventana, image=imagen2).place(x=250, y=300)
            showinfo(title='resultado', message='Ganaste')



    elif decision_usuario == 2:
        imagen1 = PhotoImage(file='papelusuario.gif')
        lblusuario = Label(ventana, image=imagen1).place(x=50, y=300)
        Label10 = Label(ventana, text='elegiste papel', font=("agency fb", 12)).place(x=50, y=220)
        Label11 = Label(ventana, text=('la cpu eligio ' + decisioncpu), font=("agency fb", 12)).place(x=300, y=220)
        if decisioncpu == 'piedra':
            imagen2 = PhotoImage(file='piedracpu.gif')
            lblcpu = Label(ventana, image=imagen2).place(x=250, y=300)
            print 'haz ganado pax'
            showinfo(title='resultado ', message='Ganaste')
        elif decisioncpu == 'papel':
            imagen2 = PhotoImage(file='papelcpu.gif')
            lblcpu = Label(ventana, image=imagen2).place(x=250, y=300)
            print 'empate'
            showinfo(title='resultado', message='empate')

        else:
            imagen2 = PhotoImage(file='tijeracpu.gif')
            lblcpu = Label(ventana, image=imagen2).place(x=250, y=300)
            print 'haz perdido!!!!'
            showinfo(title='resultado ', message='perdiste')

    elif decision_usuario == 3:
        imagen1 = PhotoImage(file='tijerausuario.gif')
        lblusuario = Label(ventana, image=imagen1).place(x=50, y=300)
        Label10 = Label(ventana, text='elegiste tijera', font=("agency fb", 12)).place(x=50, y=220)
        Label11 = Label(ventana, text=('la cpu eligio ' + decisioncpu), font=("agency fb", 12)).place(x=300, y=220)
        if decisioncpu == 'piedra':
            imagen2 = PhotoImage(file='piedracpu.gif')
            lblcpu = Label(ventana, image=imagen2).place(x=250, y=300)
            showinfo(title='resultado ', message='perdiste')
        elif decisioncpu == 'papel':
            imagen2 = PhotoImage(file='papelcpu.gif')
            lblcpu = Label(ventana, image=imagen2).place(x=250, y=300)
            showinfo(title='resultado ', message='ganaste')
        else:
            imagen2 = PhotoImage(file='tijeracpu.gif')
            lblcpu = Label(ventana, image=imagen2).place(x=250, y=300)
            showinfo(title='resultado ', message='empate')


ventana = Tk()
ventana.geometry("500x500")
ventana.title('JUEGO DEL PIEDRA PAPEL O TIJERA')

label1 = Label(text="ELIGA UNO DE LOS 3", font=("agency fb", 18)).place(x=10, y=30)

label3 = Label(ventana, text='PIEDRA,PAPEL O TIJERA').place(x=0, y=0)
label2 = Label(ventana, text='un juego clasico y sencillo').place(x=0, y=0)
# boton para piedra
Piedra = Button(ventana, text='piedra', command=lambda: funcion(1)).place(x=50, y=100)
# boton para papel
Papel = Button(ventana, text='papel', command=lambda: funcion(2)).place(x=150, y=100)
# boton para tijera
Tijera1 = Button(ventana, text='tijera', command=lambda: funcion(3)).place(x=250, y=100)

ventana.mainloop()






Link: http://olveramagno.blogspot.com/2018/10/juego-piedrapapel-o-tijera.html



Unidad 3: Programa de ejemplo juego p1 (Adivina N° y Lotería)

Tarea Juego 

Programando un juego propio (Adivina el numero)

Código:

#Programa de Ivan Alejandro Gutierrez Gracia
from random import *
import random
import time


print("Bienvenido al juego adivina el numero")
n=raw_input ("Ingresa tu nombre: ")

back=1
while back==1:
    linea_punteada = 70 * '-'
    print(linea_punteada)

    print(n+" estoy pensando en un numero entre 1 y 5 " + "crees poder adivinarlo?")
    print("La suerte va a decir el numero de intentos que tienes")
    time.sleep(2)
    print "*"
    time.sleep(2)
    print "**"
    time.sleep(2)
    print "***"

    aux=0
    arr=[1,2,3,4,5]
    intentos=random.choice(arr)
    num=randint(1,5)
    print ("Tienes "+str(intentos)+" intentos")


    while auxnum:
            print("Tu estimacion es muy alta")

        elif est==num:
            break
    if num==est:
        print("Good Job "+n+" has adivinado el numero")
    elif num!=est:
        print("Perdiste "+n+" el numero que estaba pensando es:",num)

    print ("Desea volver a jugar? 1.-Si/2.-No")
    back=input("Respuesta: ")



Link: http://graficaciongutierrezivan.blogspot.com/2018/10/unidad-no3-practica-9-programando-un.html

Versión con interfaz gráfica


Código:
from Tkinter import *
from random import *
import random
import tkMessageBox

intentos =0
aux=0

def inicio_jugar():

    arr = [1, 2, 3, 4, 5]
    global intentos
    intentos = random.choice(arr)
    global num
    num = randint(1, 5)

    nom=entrada1.get()

    et1=Label(contenedor,text="Hola "+nom+" estoy pensando en un numero entre 1 y 5, crees poder adivinarlo?",font=("Times New Roman",15)).place(x=0,y=147)
    et2=Label(contenedor,text="La suerte va a decir el numero de intentos que tienes",font=("Times New Roman",15)).place(x=0,y=207)

    et3=Label(contenedor,text="Tienes "+str(intentos)+" intentos",font=("Times New Roman",15)).place(x=90,y=267)
    parte_2()

def parte_2():
    et4 = Label(contenedor, text="Intenta adivinar: ", font=("Times New Roman", 15)).place(x=90, y=337)
    global entrada2
    entrada2= StringVar()
    objentrada2 = Entry(contenedor, textvariable=entrada2).place(x=242, y=342)

    b2 = StringVar()
    b2.set("Verificar respuesta")
    bgame2 = Button(contenedor, textvariable=b2, command=verificar).place(x=380, y=340)

def verificar():
    global aux
    while auxnum:
            tkMessageBox.showinfo("Alerta", "Tu estimacion es muy alta")
            aux+=1
            break

        if num==est:
            accion = tkMessageBox.askyesno("Atencion",
                                           "Haz ganado el juego\n Quieres volver a jugar?")
            if accion == False:
                ventana.destroy()
                break
            else:
                aux = 0
                inicio_jugar()
                break

    if intentos==aux:
        accion = tkMessageBox.askyesno("Atencion","Haz perdido el juego\n Quieres volver a jugar?")
        if accion == False:
            ventana.destroy()
        else:
            aux = 0
            inicio_jugar()

ventana=Tk()
ventana.config(bg="gray")
contenedor=Frame(ventana,width=650,height=650)
contenedor.pack()
t1=Label(contenedor,text="Bienvenido al juego adivina el numero",font=("Times New Roman",15)).place(x=90,y=25)
t2=Label(contenedor,text="Ingresa tu nombre: ",font=("Times New Roman",15)).place(x=90,y=87)


b1=StringVar()
b1.set("Iniciar juego")
bgame=Button(contenedor,textvariable=b1,command=inicio_jugar).place(x=407,y=87)
entrada1=StringVar()
objentrada=Entry(contenedor,textvariable=entrada1).place(x=240,y=90)


ventana.mainloop()







Link: http://graficaciongutierrezivan.blogspot.com/2018/11/unidad-no3-practica-25-juego-de-los.html

La loteria con Interfaz Grafica



#Ambrocio Isaias
import os# libreria para obtener direcciones de carpeta
import random #para generar numeros aleatorios
import threading #libreria para manejar hilos
from Tkinter import * #GUI, botones, label, menu, entry, tk.frame
import PIL
from PIL import Image, ImageTk #libraria para tratar imagenes
import time # para tiempos o dormir o espera
import pygame#para juegos 2D o 3D

"""Variables globales"""
imagen = 0
stop = 0
dir = os.path.dirname(__file__)
Ccartas = dir + "/Cartas/"  # establece la ruta hacia las imagenes de cartas
Csonido = dir + "/Sonidos/"  # establece la ruta hacia los sonidos
play = 1
"""--------------------------------------------------------"""


def setimagen(nombre, x, y):  # carga la imagen
    global imagen  # Declaro el uso de una variable global
    img = Image.open(nombre)  # cargo la imagen mandada como parametro
    img.thumbnail((x, y), Image.ANTIALIAS)  # establezco sus dimensiones y la propiedad antialiasado
    imagen = ImageTk.PhotoImage(img)  # la convierto a un formato soportado por los widgets de tkinter
    return imagen  # retorno el objeto con la imagen


def play():
    global stop, play, TBoton  # Declaro el uso de las variables stop y play
    """play: sirve para controlar la pulsasion del boton, si se pulsa una vez el boton jugar en pantalla deberia iniciar el juego
    pero si se vuelve a pulsar deberia detenerse y dado que se usa el mismo boton para ambas acciones la uso para controlar las acciones
    stop: se usa para controlar el hilo de ejecucion declarado, si stop vale 1 debera terminar el hilo, si vale 0 debera continuar hasta que se le indique"""
    if play == 1:
        TBoton.set("Pausar")
        t = threading.Thread(target=hilo)
        t.start()
        stop = 0  # El hilo continua con normalidad
        play = 0  # La proxima vez que se pulse el boton debera entrar en el else
    else:
        TBoton.set("Jugar")
        play = 1  # La proxima vez que se pulse el boton debera entrar en el if
        stop = 1  # Se detiene el hilo


def reproducirsonido(nombre):
    pygame.mixer.music.load(nombre)
    pygame.mixer.music.play()


def hilo():
    global tiempo, cartas, Limagen, stop, Tetiqueta, spin
    cartas = ["EL GALLO", "EL DIABLITO", "LA DAMA", "EL CATRIN", "EL PARAGUAS", "LA SIRENA", "LA ESCALERA",
              "LA BOTELLA", "EL BARRIL", "EL ARBOL", "EL MELON",
              "EL VALIENTE", "EL GORRITO", "LA MUERTE", "LA PERA", "LA BANDERA", "EL BANDOLON", "EL VIOLINCELLO",
              "LA GARZA", "EL PAJARO", "LA MANO", "LA BOTA",
              "LA LUNA", "EL COTORRO", "EL BORRACHO", "EL NEGRITO", "EL CORAZON", "LA SANDIA", "EL TAMBOR",
              "EL CAMARON", "LAS JARAS", "EL MUSICO", "LA ARANA",
              "EL SOLDADO", "LA ESTRELLA", "EL CAZO", "EL MUNDO", "EL APACHE", "EL NOPAL", "EL ALACRAN", "LA ROSA",
              "LA CALAVERA", "LA CAMPANA", "EL CANTARITO",
              "EL VENADO", "EL SOL", "LA CORONA", "LA CHALUPA", "EL PINO", "EL PESCADO", "LA PALMA", "LA MACETA",
              "EL ARPA", "LA RANA"]

    # tiempo=time*1000
    x = 0
    reproducirsonido(Csonido + "inicio.ogg")
    time.sleep(3)
    while True:
        nombre = str(cartas.index(random.choice(cartas)) + 1)
        carta = Ccartas + nombre + ".png"
        Limagen.config(image=setimagen(carta, 400, 400))
        Tetiqueta.set("Salio: " + cartas[int(nombre) - 1])
        sonido = Csonido + "s_(" + nombre + ").ogg"
        reproducirsonido(sonido)
        time.sleep(float(spin.get()))
        x = x + 1
        if stop == 1:
            break


ventana = Tk()#creando objeto ventana TK()
ventana.config(bg="gray")#con config y Bg es el fondo
contenedor = Frame(ventana, width=700, height=700)#poner un frame arriba del marco o ventana
contenedor.pack()#para cargar ventana y fondo
Etitulo = Label(contenedor, text="Loteria Mexicana", font=("Arial", 40, "bold")).place(x=120, y=20)
Etiempo = Label(contenedor, text="Tiempo entre cartas: ", font=("Arial", 12, "bold"))
Etiempo.place(x=130, y=100)
spin = Spinbox(contenedor, values=[2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], font=("Arial", 12, "bold"))
spin.place(x=295, y=101)
Limagen = Label(contenedor)
Limagen.place(x=300, y=180)

TBoton = StringVar()
TBoton.set("Jugar")
Bplay = Button(contenedor, textvariable=TBoton, command=play)
Bplay.place(x=500, y=98)

Tetiqueta = StringVar()
Enombre = Label(contenedor, textvariable=Tetiqueta, font=("Arial", 40, "bold"))
Enombre.place(x=80, y=400)
pygame.init()
ventana.mainloop()





Unidad 3: Tarea Juego

JUEGO

martes, 16 de octubre de 2018

Unidad 3: Programa punto de venta

Programa punto de venta



from Tkinter import *
import tkMessageBox
 
 
def SumMul():
    try:
        _e0 = int(v0.get())
        _e0 = _e0 * .50
        _e1 = int(v1.get())
        _e1 = _e1 * 1
        _e2 = int(v2.get())
        _e2 = _e2 * 2
        _e3 = int(v3.get())
        _e3 = _e3 * 5
        _e4 = int(v4.get())
        _e4 = _e4 * 10
        _e5 = int(v5.get())
        _e5 = _e5 * 20
        _e6 = int(v6.get())
        _e6 = _e6 * 50
        _e7 = int(v7.get())
        _e7 = _e7 * 100
        _e8 = int(v8.get())
        _e8 = _e8 * 200
        _e9 = int(v9.get())
        _e9 = _e9 * 500
        _e10 = _e0 + _e1 + _e2 + _e3 + _e4 + _e5 + _e6 + _e7 + _e8 + _e9
        tkMessageBox.showinfo("El resultado es", _e10)
    except ValueError:
        etiqueta.config(text="Introduce un numero entero")
 
 
v = Tk()
v.title("")
v.geometry("200x350")
 
vp = Frame(v)
vp.grid(column=0, row=0, padx=(50, 50), pady=(10, 10))
vp.columnconfigure(0, weight=1)
vp.rowconfigure(0, weight=1)
 
ET0 = Label(vp, text="MONEDAS")
ET0.grid(column=2, row=1)
 
e0 = Label(vp, text="0.50")
e0.grid(column=1, row=3)
 
e1 = Label(vp, text="1.00")
e1.grid(column=1, row=4)
 
e2 = Label(vp, text="2.00")
e2.grid(column=1, row=5)
 
e3 = Label(vp, text="5.00")
e3.grid(column=1, row=6)
 
e3 = Label(vp, text="10.00")
e3.grid(column=1, row=7)
 
v0 = ""
v0 = Entry(vp, width=5, textvariable=v0)
v0.grid(row=3, column=2)
 
v1 = ""
v1 = Entry(vp, width=5, textvariable=v1)
v1.grid(row=4, column=2)
 
v2 = ""
v2 = Entry(vp, width=5, textvariable=v2)
v2.grid(row=5, column=2)
 
v3 = ""
v3 = Entry(vp, width=5, textvariable=v3)
v3.grid(row=6, column=2)
 
v4 = ""
v4 = Entry(vp, width=5, textvariable=v4)
v4.grid(row=7, column=2)
 
ET1 = Label(vp, text="BILLETES")
ET1.grid(column=2, row=9)
 
e4 = Label(vp, text="20.00")
e4.grid(column=1, row=11)
 
e5 = Label(vp, text="50.00")
e5.grid(column=1, row=12)
 
e6 = Label(vp, text="100.00")
e6.grid(column=1, row=13)
 
e7 = Label(vp, text="200.00")
e7.grid(column=1, row=14)
 
e8 = Label(vp, text="500.00")
e8.grid(column=1, row=15)
 
v5 = ""
v5 = Entry(vp, width=5, textvariable=v5)
v5.grid(row=11, column=2)
 
v6 = ""
v6 = Entry(vp, width=5, textvariable=v6)
v6.grid(row=12, column=2)
 
v7 = ""
v7 = Entry(vp, width=5, textvariable=v7)
v7.grid(row=13, column=2)
 
v8 = ""
v8 = Entry(vp, width=5, textvariable=v8)
v8.grid(row=14, column=2)
 
v9 = ""
v9 = Entry(vp, width=5, textvariable=v9)
v9.grid(row=15, column=2)
 
b = Button(vp, text="TOTAL", command=SumMul)
b.grid(row=17, column=2, padx=(20, 20), pady=(20, 20))
 
v.mainloop()






Unidad 3: Programar juegos sencillos.

Programar juegos sencillos.

Ataca a los orcos


# -*- coding: utf-8 -*-

import random
import textwrap

if __name__ == '__main__':
    seguir_jugando = 1
    ocupantes = ['enemigo','amigo','no ocupada']
    ancho_linea = 72
    linea_punteada = ancho_linea * '-'
    print(linea_punteada)
    print("\033[1m"+ "Ataca a los Orcos V0.0.1" + "\033[0m")

    msg = ("La guerra entre los humanos y sus arqueros enemigos, los Orcos, estaba en el aire."
          "Un enorme ejército de orcos se dirigía hacia los territos de los humanos. Destruían"
          "prácticamente todo en su camino. Los grandes reyes de la raza humana, se unieron para"
          " derrotar a su peor enemigo, era la gran batalla de su tiempo. Sir Gandorel, uno de los "
          "valientes caballeros que guardan las llanuras meridionales, inició un largo viaje hacia el este"
          ", a través de un desconocido bosque espeso. Durante dos días y dos noches, se movió con cautela "
          "a través del grueso bosque. En su camino, vio un pequeño asentamiento aislado. Cansado y con "
          "la esperanza de reponer su stock de alimentos, decidió tomar un desvío. Cuando se acercó al pueblo,"
          "vio cinco chozas. No había nadie alrededor. En ese instante, decidió entrar en un choza...")

    print(textwrap.fill(msg, width = ancho_linea))
    print("\033[1m"+"Misión:"+"\033[0m")
    print("Elige una choza donde poder descansar...")
    print("\033[1m"+"NOTA:"+"\033[0m")
    print("¡Cuidado! Hay enemigos rondando la zona")
    print(linea_punteada)

    while seguir_jugando == 1:
        chozas = []
        while len(chozas) < 5: #Definimos un número de asentamiento para establecerlo como amigo o enemigo
            eleccion_aleatoria = random.choice(ocupantes)
            chozas.append(eleccion_aleatoria)

        msg = "\033[1m" + "Elige una choza, introduce un número entre 1 y 5: " + "\033[0m"
        decision_usuario = input("\n"+msg)
        idx = int(decision_usuario)

        #Pasamos a descubrir cuales son los ocupantes del emplazamiento

        print("Descubriendo los ocupantes...")
        msg=""
        for i in range(len(chozas)):
            ocupantes_info = "<%d:%s>"%(i+1, chozas[i])
            if i+1 == idx:
                ocupantes_info = "\033[1m" + ocupantes_info + "\033[0m"
            msg += ocupantes_info + " "
        print("\t" + msg)
        print(linea_punteada)
        print("\033[1m" + "Entrando en la choza %d..." %idx + "\033[0m")

        if chozas[idx-1] == 'enemigo':
            print("\033[1m" + "Sir Gandorel ha muerto asesinado por una manada de orcos (Mucha suerte la próxima vez)" + "\033[0m")
        else:
            print("\033[1m" + "¡Felicidades! Sir Gandorel ha podido descansar con éxito" + "\033[0m")
        print(linea_punteada)
        seguir_jugando = input("¿Quieres jugar de nuevo? Si(1)/No(0):")







Link: https://www.youtube.com/watch?v=7iIxjiybR6E

Link: https://github.com/tidus747/Tutoriales_juegos_Python/blob/master/Ataca%20a%20los%20orcos%20V0.0.1/Ataca_a_los_orcos_V0.0.1.py


Unidad 3: Clases y objetos ejemplo

Clases y objetos ejemplos


class operaciones:
    def __init__(self, num1, num2):
        self.num1 = num1
        self.num2 = num2
    def suma(self):
        return self.num1 + self.num2
    def resta(self):
        return self.num1 - self.num2

obj = operaciones(3,7)
print obj.suma()
print obj.resta()










Paso a paso con DEBUG:



class Humano:
    def __init__(self,edad):
        self.edad = edad
        #print "Soy un nuevo objeto"
    def hablar(self, mensaje):
            print mensaje

pedro = Humano(26)
raul = Humano(21)

print 'Soy Pedro y tengo ', pedro.edad
print 'Soy Raul y tengo ', raul.edad

pedro.hablar('Hola')

raul.hablar('Hola, Pedro!')



Referencia: https://www.youtube.com/watch?v=VYXdpjCZojA

jueves, 11 de octubre de 2018

Unidad 3: Arreglos practicas

Arreglos practicas



datos = [0,0,0,0,0,0]

for i in range(1,7):
    datos[i-1] = int( input( "Dime el dato numero {}: ".format(i) ))

print ("Los datos al reves son: ")

for i in range(6,0,-1):
    print ( datos[i-1] )



datos = []
#guardando datos en el arreglofor i in range(1,7):
    nuevoDato = int( input( "Dime el dato numero {}: ".format(i) ))
    datos.append(nuevoDato)
print ("Los datos al reves son: ")
#desplegado de los datosfor i in range(6,0,-1):
    print ( datos[i-1] )


datos = [5, 6, 7, 8, 9]
for i in range(0, 5):
    print datos[i],

print "\n"


datos.remove(6)
for i in range(0, len(datos)):
    print datos[i],

print "\n"


datos[0] = -2

for i in range(0, len(datos)):
    print datos[i],

print "\n"

datos.insert(1, 23)
for i in range(0, len(datos)):
    print datos[i],

print "\n"

datos = datos + [31, 32, 33]
for i in range(0, len(datos)):
    print datos[i],

print "\n"



t


http://graficacionitm-huerta.blogspot.com/2018/10/programa-usando-vectores.html

miércoles, 10 de octubre de 2018

Unidad 3: Ejemplo arrays

Ejemplo arrays

Programa que ingrese 10 nombres en un arreglo


arreglo = []

for i in range(10):
    i + 1
    arreglo.append(raw_input("Ingrese un nombre: "))


print arreglo






Programa que ingrese 5 en un arreglo calificaciones y las sume 


arreglo = []
s = 0
t = 0
for i in range(5):
    i + 1
    s = int(raw_input("Ingrese una calificacion: "))
    arreglo.append(s)
    t =t +s

print str(arreglo)
print t






Programa que por una función sume la lista de números de un arreglo.


def sumalista(listaNumeros):
    laSuma = 0
    for i in listaNumeros:
        laSuma = laSuma + i
    return laSuma

print(sumalista([1,3,5,7,9]))









martes, 9 de octubre de 2018

Unidad 3: Clases y objetos en Python

Clases y objetos en Python


Un Programa Orientado a Objetos (POO) se basa en una agrupación de objetos de distintas clases que interactúan entre sí y que, en conjunto, consiguen que un programa cumpla su propósito.

En este paradigma de programación se intenta emular el funcionamiento de los objetos que nos rodean en la vida real.

En Python cualquier elemento del lenguaje pertenece a una clase y todas las clases tienen el mismo rango y se utilizan del mismo modo.

A continuación, se declaran varios objetos Python y con la función type() se muestra a qué clase pertenecen cada uno:


lenguaje = "Python"

print(type(lenguaje))  # class str=""

def mitad(x):
    return x/2

print(type(mitad))  # class function=""
valor = mitad(25)

print(type(valor))  # class float=""

import os
print(type(os))  # class module=""

lista = [1, 2, 3, 4, 5]
print(type(lista))  # class list=""


Clases, atributos y métodos


Las clases en este contexto permiten definir los atributos y el comportamiento, mediante métodos, de los objetos de un programa. Una clase es una especie de plantilla o prototipo que se utiliza para crear instancias individuales del mismo tipo de objeto.

Los atributos definen las características propias del objeto y modifican su estado. Son datos asociados a las clases y a los objetos creados a partir de ellas.

De ello, se deducen los dos tipos de atributos o de variables existentes: variables de clase y variables de instancia (objetos).

Los métodos son bloques de código (o funciones) de una clase que se utilizan para definir el comportamiento de los objetos.

Tanto para acceder a los atributos como para llamar a los métodos se utiliza el método denominado de notación de punto que se basa en escribir el nombre del objeto o de la clase seguido de un punto y el nombre del atributo o del método con los argumentos que procedan: clase.atributo, objeto.atributo, objeto.método([argumentos]).


Un ejemplo característico de objeto Python donde se identifican fácilmente los métodos son las listas. Una lista es un objeto que permite contener una colección o secuencia de datos. Los datos de una lista deben ir separados por comas (,) y todo el conjunto entre corchetes. Una lista es una estructura mutable porque no sólo se puede acceder a los datos, además, es posible agregar nuevos elementos o suprimir aquellos que no sean necesarios. La clase lista (List) incorpora varios métodos para facilitar este trabajo:



lista = ['c', 'a', 'b']  # Declara lista con tres elementos
lista.append('d')  # Agrega elemento al final de lista con append()
lista.pop()  # Borra último elemento de lista con método pop()
lista.sort()  # Ordena la lista con el método sort()
print(lista)  # ['a', 'b', 'c']


Características de la Programación Orientada a Objetos



Características que definen a este modelo de programación:

Abstracción

Se refiere a que un elemento pueda aislarse del resto de elementos y de su contexto para centrar el interés en lo qué hace y no en cómo lo hace (caja negra). 

Modularidad

Es la capacidad de dividir una aplicación en partes más pequeñas independientes y reutilizables llamadas módulos. 

Encapsulación

Consiste en reunir todos los elementos posibles de una entidad al mismo nivel de abstracción para aumentar la cohesión, contando con la posibilidad de ocultar los atributos de un objeto (en Python, sólo se ocultan en apariencia).

Herencia

se refiere a que una clase pueda heredar las características de una clase superior para obtener objetos similares. Se heredan tanto los atributos como los métodos. Éstos últimos pueden sobrescribirse para adaptarlos a las necesidades de la nueva clase. A la posibilidad de heredar atributos y métodos de varias clases se denomina Herencia Múltiple.

Polimorfismo

Alude a la posibilidad de identificar de la misma forma comportamientos similares asociados a objetos distintos. La idea es que se sigan siempre las mismas pautas aunque los objetos y los resultados sean otros.


Variables de Clases y Variables de Instancias


En lenguajes que crean objetos a partir de clases, un objeto es una instancia de una clase. Y de una misma clase se pueden mantener activas en un programa más de una instancia al mismo tiempo.

Una variable de clase es compartida por todas las instancias de una clase. Se definen dentro de la clase (después del encabezado de la clase) pero nunca dentro de un método. Este tipo de variables no se utilizan con tanta frecuencia como las variables de instancia.

Una variable de instancia se define dentro de un método y pertenece a un objeto determinado de la clase instanciada.

Crear clases 


Una clase consta de dos partes: un encabezado que comienza con el término class seguido del nombre de la clase (en singular) y dos puntos (:) y un cuerpo donde se declaran los atributos y los métodos:

class NombreClase:

    'Texto para documentar la clase (opcional)'
    varclase1 = "variable de clase1"
    def nombremetodo1(self, var1):

        self.var1 = var1
    def nombremetodo2(self):
        self.var1 += 1



La documentación de una clase debe situarse después del encabezado y justo antes del lugar donde se declaren las variables y los métodos de la clase.

Desde cualquier lugar de un programa se puede acceder a la cadena de documentación de una clase accediendo al atributo especial: NombreClase.__doc__


Todo lo que se incluye en una clase es opcional. De hecho, la clase más elemental aunque no tenga mucha utilidad puede estar vacía:

class Clase:
    pass

La declaración pass indica que no se ejecutará ningún código. Sin embargo, esta clase una vez definida permite que se instancien objetos de ella e incluso es posible realizar algunas operaciones elementales.

objeto1 = Clase()  # Crea objeto1 de clase Clase
objeto2 = Clase()  # Crea objeto2 de clase Clase
print(objeto1 == objeto2)  # Retorna False...

# Los objetos aunque sean de la misma clase son diferentes.


En el siguiente ejemplo se define una clase mucho más completa:

class Alumno:
    'Clase para alumnos'
    numalumnos = 0
    sumanotas = 0

    def __init__(self, nombre, nota):
        self.nombre = nombre
        self.nota = nota
        Alumno.numalumnos += 1
        Alumno.sumanotas += nota

    def mostrarNombreNota(self):
        return(self.nombre, self.nota)

    def mostrarNumAlumnos(self):
        return(Alumno.numalumnos)

    def mostrarSumaNotas(self):
        return(Alumno.sumanotas)

    def mostrarNotaMedia(self):
        if Alumno.numalumnos > 0:
            return(Alumno.sumanotas/Alumno.numalumnos)
        else:
            return("Sin alumnos")




La clase Alumno consta de dos variables de clase (Alumno.numalumnos y Alumno.sumanotas) que son accesibles desde los métodos de la clase. Además, sus valores son compartidos por todas las instancias que existan de esta clase.


A continuación, se declaran varios métodos (funciones) que incluyen como primer argumento a self que contiene la referencia del objeto especifico que llama al método en un momento dado. Como su valor es implícito cuando se llama a un método no es necesario pasar este argumento.


El método __init__() es especial porque se ejecuta automáticamente cada vez que se crea una nuevo objeto. Este método, que es opcional, se llama constructor y se suele utilizar para inicializar las variables de las instancias (en este caso para inicializar las variables self.nombre y self.nota).

El resto de métodos se utilizan para acceder y mostrar el valor de las variables de clase y de instancia. Por último, el método mostrarNotaMedia() realiza un cálculo y después muestra su resultado.


Crear objetos (instancias) de una clase



Para crear instancias de una clase se llama a la clase por su propio nombre pasando los argumentos que requiera el método constructor __init__ si existe.


alumno1 = Alumno("Maria", 8)
alumno2 = Alumno("Carlos", 6)


Todos los argumentos se pasan escribiéndolos entre paréntesis y separados por comas (","). El primer argumento self se omite porque su valor es una referencia al objeto y es implícito para todos los métodos.

Accediendo a los atributos y llamando a los métodos



Para acceder a la variable de un objeto se indica el nombre del objeto, seguido de un punto y el nombre de la variable:

print(alumno1.nombre)  # María
print(alumno1.nota)  # 8

Para modificar la variable de un objeto se utiliza la misma notación para referirse al atributo y después del signo igual (=) se indica la nueva asignación:

alumno1.nombre = "Carmela"

Para acceder a las variables de la clase se sigue la misma notación pero en vez de indicar el nombre del objeto se indica el nombre de la clase instanciada.


print(Alumno.numalumnos)  # 2
print(Alumno.sumanotas)  # 14


Para llamar a un método se indica el nombre de objeto, seguido de un punto y el nombre del método. Si se requieren varios argumentos se pasan escribiéndolos entre paréntesis, separados por comas (","). Si no es necesario pasar argumentos se añaden los paréntesis vacíos "()" al nombre del método.

print(alumno1.mostrarNombreNota())  # ('Carmen', 8)
print(alumno2.mostrarNombreNota())  # ('Carlos', 6)


Para suprimir un atributo: 


del alumno1.nombre 


Si a continuación, se intenta acceder al valor del atributo borrado o se llama a algún método que lo utilice, se producirá la siguiente excepción:

print(alumno1.mostrarNombreNota())
AttributeError: 'Alumno' object has no attribute 'nombre' 


Para crear nuevamente el atributo realizar una nueva asignación:



alumno1.nombre = "Carmen"