web-dev-qa-db-fra.com

Création d'un menu dans Python

Je travaille sur la création d'un menu en python qui doit:

  1. Imprimer un menu avec des options numérotées
  2. Laisser l'utilisateur entrer une option numérotée
  3. Selon le numéro d'option choisi par l'utilisateur, exécutez une fonction spécifique à cette action. Pour l'instant, votre fonction peut simplement imprimer qu'elle est en cours d'exécution.
  4. Si l'utilisateur entre quelque chose d'invalide, il lui indique qu'il l'a fait et réaffiche le menu
  5. utilisez un dictionnaire pour stocker les options de menu, avec le numéro de l'option comme clé et le texte à afficher pour cette option comme valeur.
  6. L'ensemble du système de menus doit fonctionner dans une boucle et continuer à permettre à l'utilisateur de faire des choix jusqu'à ce qu'il sélectionne Quitter/Quitter, moment auquel votre programme peut se terminer.

Je suis nouveau sur Python et je ne peux pas comprendre ce que j'ai fait de mal avec le code.

Jusqu'à présent, c'est mon code:

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

RÉPONSE

C'est ce qu'il voulait apparemment:

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!" 
12
Jack
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]()
9
Joran Beasley

Quelques modifications mineures étaient nécessaires:

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

J'ai changé les quatre guillemets en trois (c'est le nombre requis pour les guillemets multilignes), ajouté un crochet de fermeture après "What would you like to do? " et changé l'entrée en raw_input.

7
ChrisProsser

Cela devrait le faire. Vous manquiez un ) et il vous suffit de """ pas 4 d'entre eux. De plus, vous n'avez pas besoin d'un Elif à la fin.

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")
5
jramirez

Il semble que vous venez de terminer l'étape 3. Au lieu d'exécuter une fonction, vous imprimez simplement une instruction. Une fonction est définie de la manière suivante:

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

puis appelé en écrivant addstudent().

Je recommanderais d'utiliser une boucle while pour votre entrée. Vous pouvez définir l'option de menu en dehors de la boucle, placer l'instruction print à l'intérieur de la boucle et faire while(#valid option is not picked), puis placer les instructions if après le temps. Ou vous pouvez faire une boucle while et continue la boucle si une option valide n'est pas sélectionnée.

De plus, un dictionnaire est défini de la manière suivante:

my_dict = {key:definition,...}
2
JFA