dissabte, 31 de desembre de 2011

Codi videoclub de Clases de Ingenieria en Python

L'únic problema que li trobo al tutorial de Python en YouTube impartit per Clases de Ingenieria es -justament- que el format es YouTube. Evidentment es pot descarregar però trobo que haguès estat còmode dispossar del codi en fitxer de text per poder-lo anar diggerint fora de pantalla. Per si a algú li serveix deixo aqui el codi des del capítol 50 fins el 53 amb comentaris. Igualment deixo els links del 50 al 53

Tutorial de Python en Español # 50 - Programa de Aplicación III (1)
http://www.youtube.com/watch?v=ITtN_ghjVK8&feature=related

Tutorial de Python en Español # 51 - Programa de Aplicación III (2)
http://www.youtube.com/watch?v=0y9n9kwFk20&feature=related

Tutorial de Python en Español # 52 - Programa de Aplicación III (3)
http://www.youtube.com/watch?v=OPaTHr-iAno&feature=related

Tutorial de Python en Español # 53 - Programa de Aplicación III (4)
http://www.youtube.com/watch?v=MtyFZtdHKoE&feature=related


Cal recordar que s'ha de tenir el modul record, i un parell de fitxers txt. Deixo aquí el seu contingut:

RegistroClientes.txt
Pepe Luis,1,0,True
Maria Marta,2,0,True

RegistroPeliculas.txt
Matrix,1,0,True
El Origen,2,0,True

Jo ho he treballat en la carpeta e:\PythonExercices i l'aspecte és aquest:




CODI DEL PROGRAMA VIDEOCLUB









videoclub01.py

#Mòdul record. Cal que hi sigui a la mateixa carpeta que el programa

#Serveix per crear els registres


from record color="#FF0000">import
 record



#Creació REGISTRE Cliente. Es forma amb una clase que conté camps




class Cliente(record):


#Creem els camps de la clase Cliente




  nombre = ""


  codigo = 0




  ultima_pelicula = None




  habilitado = True














#Creació REGISTRE Pelicula




class Pelicula(record):




#Creem els camps de la clase Pelicula




  nombre = ""




  codigo = 0




  ultimo_cliente = 0




  habilitada = True









#Definim la funció abrirBaseDeDatos (Funció 1)




def abrirBaseDeDatos():




#Crea dues llistes que contindran les dades dels txt




#Amb [] les inicialitzem com a llistes buides




  lista_clientes = []




  lista_peliculas = []




#Omplim la variable fichero_clientes amb una funció anomenada




#abrirFichero (Funció 2)




  fichero_clientes = abrirFichero("RegistroClientes.txt")




#Amb la funció abrirFichero (Funció 3) hem validat la possibilitat de




#que el fitxer no existexi




#Si el fitxer existeix, la funció abrirFichero (3) no ens retornarà




#res, es a dir no serà "None"




  if fichero_clientes != None:




#Fem servir la funció poblarLista (Funció 3)




    poblarLista (lista_clientes,fichero_clientes,1)




    fichero_clientes.close()









    fichero_peliculas = abrirFichero("RegistroPeliculas.txt")




  if fichero_peliculas != None:




    poblarLista (lista_peliculas,fichero_peliculas,2)




    fichero_peliculas.close()









  return lista_clientes,lista_peliculas









#Definim la funció abrirFichero (Funció 2)




#Aquesta funció valida que el fitxer existeixi. En cas contrari genera un missatge




def abrirFichero(nombre_archivo):




  try:




    return open (nombre_archivo,"r")




  except:




    print "n\n\No se pudo abrir el archivo",nombre_archivo




  return









#Definim la funció poblarLista (Funció 3)




def poblarLista(lista,fichero,numero_lista):




  for linea in fichero:




    registro = linea.rstrip().split(",")




    if numero_lista == 1:




#Està omplint els camps de la llista 1: nombre + codigo + ultima PELICULA + habilitadO




#Separo les linies per una més fàcil interpretació. Observeu els parèntesis.




      lista.append(




      Cliente(nombre = registro[0],




      codigo = int(registro[1]),




      ultima_pelicula = int(registro[2]),




      habilitado = convertirVF(registro[3]) ) )




    elif numero_lista == 2:




#Està omplint els camps de la llista 2: nombre + codigo + ultimo CLIENTE + habilitadA









      lista.append(




      Pelicula(




      nombre = registro[0],




      codigo = int(registro[1]),




      ultimo_cliente = int(registro[2]),




      habilitada = convertirVF(registro[3]) ) )




    return









#Definim la funció convertirVF (Funció 4)




def convertirVF(cadena):




  if cadena == "True":




    return True




  elif cadena == "False":




    return False









#Interconnexió de registres (Funció 5)




def interconectarRegistros():




  global lista_clientes




  for c in range (len(lista_clientes)):




    lista_clientes[c].ultima_pelicula = buscarRegistro(lista_clientes[c],ultima_pelicula,2)




  return









#Missatge inicial (Funció 6)




def mostrarInicio():




  clear_output()




  print "n\n\n *// VIDEOCLUB // *\n"




  print "... Presione una Tecla ...\n\n"




#el paràmetre 2 fa esperar que es presioni una tecla




  keypressed(2)




  return









#Menu (Funció 7)




#ls és el número màxim d'opcions dins el menú




def mostrarMenu(opciones,ls):




  clear_output()




  print " *// VIDEOCLUB // *\n"




  print opciones




  return elegirOpcion(ls)









#Menu escollirOpció (Funció 8)









def elegirOpcion(limite_superior):




  opcion = keypressed(2)




  while not opcionEsValida(opcion,limite_superior):




    opcion = keypressed(2)




  return opcion









#Comprovem si l'opció és dins el rang permès (Funció 9)




def opcionEsValida(opcion,ls):




  if opcion == "Escape":




    return True




  for elemento in range(1,ls+1):




    if opcion == str(elemento):




      return True




  return False









#Constantes




#Per facilitar la comprensió del codi s'han tallat les línies amb \




opciones_menu_principal = "- Menú Principal -\n\n"


"1) Gestión de VideoClub\n"


"2) Gestión de Películas\n"


"3) Gestión de Clientes \n"




opciones_menu_videoclub ="- Menú VideoClub -\n\n"


"1) Alquiler Película \n"


"2) Devolver Película \n"




opciones_menu_peliculas ="- Menú Películas -\n\n"


"1) Consultar Pelicula \n"


"2) Agregar Película \n"


"3) Eliminar Pelicula \n"




opciones_menu_clientes ="- Menú Clientes -\n\n"


"1) Consultar Cliente \n"


"2) Agregar Cliente \n"


"3) Eliminar Cliente \n"














##################################




# #




# PARTE PRINCIPAL DEL PROGRAMA #




# #




##################################









lista_clientes,lista_peliculas = abrirBaseDeDatos()









#Quan s'implementa la funció mostrarInicio, el print ja no te sentit




#print lista_clientes,lista_peliculas









mostrarInicio()









while True:




  opcion_principal = mostrarMenu(opciones_menu_principal,3)









  if opcion_principal == "1":




    opcion_videoclub = mostrarMenu(opciones_menu_videoclub,2)




    if opcion_videoclub == "1":




      alquilarPelicula()




    elif opcion_videoclub == "2":




      devolverPelicula()









  elif opcion_principal == "2":




    opcion_peliculas = mostrarMenu(opciones_menu_peliculas,3)




    if opcion_peliculas == "1":




      consultarPelicula()




    elif opcion_peliculas =="2":




      agregarPelicula()




  elif opcion_peliculas == "3":




    eliminarRegistro(2)









  elif opcion_principal == "3":




    opcion_clientes = mostrarMenu(opciones_menu_clientes,3)




    if opcion_clientes == "1":




      consultarCliente()




    elif opcion_clientes == "2":




      agregarCliente()




  elif opcion_clientes == "3":




    eliminarRegistro(1)














  if opcion_principal == "Escape":




    mostrarInicio()















Cap comentari:

Publica un comentari a l'entrada