Creando un Menú en Python

Estoy trabajando en hacer un menú en python que necesita:

  1. Imprime un menú con opciones numeradas
  2. Deje que el usuario ingrese una opción numerada
  3. Dependiendo del número de opción que el usuario elija, ejecute una función específica para esa acción. Por ahora, su función puede simplemente imprimir que se está ejecutando.
  4. Si el usuario ingresa algo no válido, le dice al usuario que lo hizo y vuelve a mostrar el menú
  5. use un diccionario para almacenar las opciones de menú, con el número de la opción como clave y el texto que se mostrará para esa opción como el valor.
  6. Todo el sistema de menús debe ejecutarse dentro de un bucle y seguir permitiendo que el usuario tome decisiones hasta que seleccione salir / salir, momento en el que su progtwig puede finalizar.

Soy nuevo en Python, y no puedo entender qué hice mal con el código.

Hasta ahora este es mi código:

ans=True while ans: print ("""" 1.Add a Student 2.Delete a Student 3.Look Up Student Record 4.Exit/Quit """") ans=input("What would you like to do?" if ans=="1": print("\nStudent Added") elif ans=="2": print("\n Student Deleted") elif ans=="3": print("\n Student Record Found") elif ans=="4": print("\n Goodbye") elif ans !="": print("\n Not Valid Choice Try again") 

CONTESTADO

Esto es lo que quería al parecer:

 menu = {} menu['1']="Add Student." menu['2']="Delete Student." menu['3']="Find Student" menu['4']="Exit" while True: options=menu.keys() options.sort() for entry in options: print entry, menu[entry] selection=raw_input("Please Select:") if selection =='1': print "add" elif selection == '2': print "delete" elif selection == '3': print "find" elif selection == '4': break else: print "Unknown Option Selected!" 

 def my_add_fn(): print "SUM:%s"%sum(map(int,raw_input("Enter 2 numbers seperated by a space").split())) def my_quit_fn(): raise SystemExit def invalid(): print "INVALID CHOICE!" menu = {"1":("Sum",my_add_fn), "2":("Quit",my_quit_fn) } for key in sorted(menu.keys()): print key+":" + menu[key][0] ans = raw_input("Make A Choice") menu.get(ans,[None,invalid])[1]() 

Solo se requirieron un par de enmiendas menores:

 ans=True while ans: print (""" 1.Add a Student 2.Delete a Student 3.Look Up Student Record 4.Exit/Quit """) ans=raw_input("What would you like to do? ") if ans=="1": print("\n Student Added") elif ans=="2": print("\n Student Deleted") elif ans=="3": print("\n Student Record Found") elif ans=="4": print("\n Goodbye") elif ans !="": print("\n Not Valid Choice Try again") 

He cambiado las cuatro comillas a tres (este es el número requerido para las cotizaciones de varias líneas), agregué un corchete de cierre después de "What would you like to do? " Y cambié la entrada a raw_input.

Esto debería hacerlo. Te perdiste a ) y solo necesitas """ no 4 de ellos. Además, no necesitas un elif al final.

 ans=True while ans: print(""" 1.Add a Student 2.Delete a Student 3.Look Up Student Record 4.Exit/Quit """) ans=raw_input("What would you like to do? ") if ans=="1": print("\nStudent Added") elif ans=="2": print("\n Student Deleted") elif ans=="3": print("\n Student Record Found") elif ans=="4": print("\n Goodbye") ans = None else: print("\n Not Valid Choice Try again") 

Parece que acaba de terminar el paso 3. En lugar de ejecutar una función, simplemente imprime una statement. Una función se define de la siguiente manera:

 def addstudent(): print("Student Added.") 

luego se llama por escrito addstudent() .

Recomendaría usar un bucle while para su entrada. Puede definir la opción de menú fuera del bucle, poner la statement de impresión dentro del bucle y hacer while(#valid option is not picked) , luego poner las sentencias if después de un tiempo. O puede hacer un bucle while y continue el bucle si no se selecciona una opción válida.

Adicionalmente, un diccionario se define de la siguiente manera:

 my_dict = {key:definition,...}