Ver Mensaje Individual
  #6 (permalink)  
Antiguo 20/09/2008, 05:01
gonzo13
 
Fecha de Ingreso: agosto-2008
Mensajes: 240
Antigüedad: 16 años, 5 meses
Puntos: 6
Respuesta: Menú en python

He estado creando funciones y demás, porque con el switch no he conseguido hacer nada. Por más que he buscado no he conseguido encontrar una sintaxys clara ni su utilizacion.

He probado a intentar llamar una funcion desde otra, pero no lo he conseguido y creo que eso es lo unico que me hace falta.

Aqui tienes el codigo actual en Python:
Código python:
Ver original
  1. #!bin/env python
  2. import os
  3. so = os.name
  4. if so == "posix":
  5.  comando = "clear"
  6. elif so == "nt":
  7.  comando = "cls"
  8. os.system( comando )
  9. #!------ Declaracion de funciones -------
  10. def menu(opc, complaint='Tienes que elegir alguna opcion del menu'):
  11.     opc=raw_input(opc)
  12.     for opc in('repositorios', 'repositorio'): actualizarRep
  13. #!--------------------------@--------------------------------
  14. def actualizarRep(ans, complaint='tienes que elegir si o no!'):
  15.     print 'Bienvenido al actualizador, quieres actualizar?[S/n]    eleccion: '
  16.     ans= raw_input(ans)
  17.     if ans in ('s', 'si', 'SI', 'S', 'sip'): os.system('sudo apt-get update')
  18.     if ans in ('n'): return 1
  19. #!--------------------------@---------------------------------
  20. def salida(prompt, retries=4, complaint='Si o no, por favor!'):
  21.     while 1:
  22.         ok = raw_input(prompt)
  23.         if ok in ('s', 'si', 'SI', 'S', 'sip'): return 1
  24.         if ok in ('n', 'no', 'nop', 'nope'): os.system('python salir.py')
  25.         retries = retries - 1
  26.         if retries < 0: raise IOError, 'refusenik user'
  27.         print complaint
  28. #!--------------------------@-----------------------------------
  29. #!------ Fin declaracion de funciones ----------
  30.  
  31. print "Instalador GNU/Linux de gonzo"
  32. print "======"
  33. print "Escoge una opcion por favor"
  34. print "Actualizar repositorios   [repositorios]"
  35. print "Actualizar distribucion   [distribucion]"
  36. #!------- Llamada a la funcion menu -----------
  37. menu ('Eleccion: ')
  38. #!------- Llamada a la funcion salida -----------
  39. salida('Quieres salir?[S/n]     eleccion: ')
El caso es que desde la funcion menu, no consigo hacer que llame a la funcion actualizarRep una vez que pongo su opcion correspondiente (hasta ahora las opciones son 'repositorio' o 'repositorios'). Lo que consigo cuando escribo en la funcion menu es que me pase directamente a la funcion salida.

El resto de opciones tienen tambien su funcion, es logico, pero no quiero crear más hasta no solucionar este problema para no ampliar mas el codigo teniendo errores previos.
Supongo que habra una formas más facil de hacer esto, pero no se cual, a ver si me podeis ayudar con una forma nueva o con esta. Creo que lo unico que necesito es llamar a la funcion actualizarRep desde la funcion menu.

Muchas gracias de nuevo,
Gonzo

Última edición por AlvaroG; 20/09/2008 a las 08:08 Razón: Usar las etiquetas "highlight" en vez de "code"