Een menu maken in Python

Ik ben bezig met het maken van een menu in python dat het volgende moet doen:

  1. Druk een menu af met genummerde opties
  2. Laat de gebruiker een genummerde optie invoeren
  3. Voer, afhankelijk van het optienummer dat de gebruiker kiest, een functie uit die specifiek is voor die actie. Voorlopig kan je functie gewoon afdrukken dat deze wordt uitgevoerd.
  4. Als de gebruiker iets ongeldigs invoert, wordt de gebruiker hiervan op de hoogte gesteld en wordt het menu opnieuw weergegeven
  5. gebruik een woordenboek om menu-opties op te slaan, met het nummer van de optie als de sleutel, en de tekst die voor die optie moet worden weergegeven als de waarde.
  6. Het hele menusysteem moet in een lus lopen en de gebruiker in staat blijven keuzes te maken totdat hij exit/quit selecteert, waarna je programma kan eindigen.

Ik ben nieuw bij Python en ik weet niet wat ik verkeerd heb gedaan met de code.

Tot nu toe is dit mijn 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") 

BEANTWOORD

Dit is wat hij blijkbaar wilde:

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

Antwoord 1, autoriteit 100%

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]()

Antwoord 2, autoriteit 50%

Er waren slechts een paar kleine wijzigingen nodig:

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

Ik heb de vier aanhalingstekens gewijzigd in drie (dit is het aantal dat nodig is voor aanhalingstekens met meerdere regels), een haakje sluiten na "What would you like to do? "en de invoer gewijzigd in raw_input.


Antwoord 3, autoriteit 31%

Dit zou het moeten doen. Je miste een )en je hebt er maar """nodig, niet vier. Ook heb je aan het eind geen elif nodig.

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

Antwoord 4, autoriteit 12%

Het lijkt erop dat u zojuist stap 3 hebt voltooid. In plaats van een functie uit te voeren, drukt u gewoon een instructie af. Een functie wordt op de volgende manier gedefinieerd:

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

vervolgens aangeroepen door addstudent()te schrijven.

Ik raad je aan om een while-lus te gebruiken voor je invoer. U kunt de menuoptie buiten de lus definiëren, het printstatement in de lus plaatsen en while(#valid option is not picked)doen, en daarna de if-statements plaatsen. Of u kunt een whilelus maken en continuede lus als er geen geldige optie is geselecteerd.

Bovendien wordt een woordenboek op de volgende manier gedefinieerd:

my_dict = {key:definition,...}

Other episodes