hjälp med menyprogram
Håller på att koda en meny, men har sprungit in i problem och hittar inte lösningen.
Traceback (most recent call last):
File "main.py", line 71, in <module>
print(menuOptions[5])
IndexError: list index out of range
Vilket betyder att elseif val 5 är out of range, vad jag vet så kan man ha oändligt med else if?
import replit
from getkey import getkey, keys
# Welcome page choose by arrows
def welcome():
print("Larssons bilar!\n")
print("-----------------------------------------------")
print("\nNavigera dig med piltangenterna\n\n")
def regCustomer(): # menu choice one
replit.clear() # clear screen
print("Registrera ny kund")
input()
def registerCars(): # menu choice two
replit.clear() # clear screen
print("Vårat billager")
input()
def serviceCar(): # menu choice three
replit.clear() # clear screen
print("Service reparation och garantiärenden")
input()
def employeeList(): #menu choice four
replit.clear() # clear screen
print("Personalregister")
input()
def plannerDiagram(): #menu choice five
replit.clear() # clear screen
print("Planering, aktivitetsdiagram och programkod")
input()
def endProgram(): # menu choice end program
replit.clear() # clear screen
print(
"\nAvslutar programmet") # letting user know action will close program
input("Tryck Enter för att avsluta"
) # close program when user hits Enter key
# menu options
menuOptions = [
"Registrera ny kund\t\t\t\t", "Se bilar i lager\t\t\t\t",
"Service, reparation och garantiärenden\t\t\t\t",
"Personalregister\t\t\t\t\t",
"planering, aktivitetsdiagram och programkod\t\t\t\t\t"
"\nAvsluta\t\t\t\t\t"
]
menuSelected = 0
while (True):
replit.clear() # clear screen
print("\x1b[?25l") # change color to make marker disappear
welcome() # calling function
if menuSelected == 0:
print(menuOptions[0] + "<")
print(menuOptions[1])
print(menuOptions[2])
print(menuOptions[3])
print(menuOptions[4])
print(menuOptions[5]) Här är rad 71 som visas i felbeskrivningen över!
elif menuSelected == 1:
print(menuOptions[0])
print(menuOptions[1] + "<")
print(menuOptions[2])
print(menuOptions[3])
print(menuOptions[4])
print(menuOptions[5])
elif menuSelected == 2:
print(menuOptions[0])
print(menuOptions[1])
print(menuOptions[2] + "<")
print(menuOptions[3])
print(menuOptions[4])
print(menuOptions[5])
elif menuSelected == 3:
print(menuOptions[0])
print(menuOptions[1])
print(menuOptions[2])
print(menuOptions[3] + "<")
print(menuOptions[4])
print(menuOptions[5])
elif menuSelected == 4:
print(menuOptions[0])
print(menuOptions[1])
print(menuOptions[2])
print(menuOptions[3])
print(menuOptions[4] + "<")
print(menuOptions[5])
elif menuSelected == 5:
print(menuOptions[0])
print(menuOptions[1])
print(menuOptions[2])
print(menuOptions[3])
print(menuOptions[4])
print(menuOptions[5] + "<")
# letting the user use arrows to navigate the menu
keyPressed = getkey()
if keyPressed == keys.DOWN and menuSelected + 1 != len(menuOptions):
menuSelected += 1
elif keyPressed == keys.UP and not (menuSelected == 0):
menuSelected -= 1
elif keyPressed == keys.ENTER:
if menuSelected == 0: # choice will activate function below
regCustomer()
elif menuSelected == 1: # choice will activate function below
registerCars()
elif menuSelected == 2: # choice will activate function below
serviceCar()
elif menuSelected == 3: # choice will activate function below
employeeList()
elif menuSelected == 4: # choice will activate function below
plannerDiagram()
elif menuSelected == 5: # choice will activate function below
endProgram()
print("\x1b[?25h") # change color to make marker disappear
break # end program
Tack på förhand / Danosarien
Om du tittar på menuOptions så är det inget komma mellan näst sista och näst sista strängen. Det betyder att de två strängarna slås ihop till en enda, och menuOptions bara har fem element.
Givetvis! Tack, trodde jag höll på att bli tokig!
Nästa problem, försöker göra filer i bakrunden, det vill säga import second, går det att utöka med import third för ett ytterliggare tillägg? när jag gör det så kan jag inte göra det menyvalet i programmet, det händer ingenting.. om jag skriver import third.py så kommer jag vidare i menyn som jag ska men med felmeddelande!
import replit
from getkey import getkey, keys
# Welcome page choose by arrows
def welcome():
print("Larssons bilar!\n")
print("-----------------------------------------------")
print("\nNavigera dig med piltangenterna\n\n")
def regCustomer(): # menu choice one
replit.clear() # clear screen
print("Registrera ny kund")
print("------------------")
import second
def registerCars(): # menu choice two
replit.clear() # clear screen
print("Bilar i lager")
print("-------------")
import third
Vad finns i second.py?
Nu när jag skulle kopiera till dig så försvann allt i import second..
Men menyn ser ut såhär och undermenyerna ska vara i ordning efter menyn!
Larssons bilar!
-----------------------------------------------
Navigera dig med piltangenterna
Registrera ny kund <
Bilar i lager
Service, reparation och garantiärenden
Personalregister
planering, aktivitetsdiagram och programkod
Avsluta
danosarien skrev:Nu när jag skulle kopiera till dig så försvann allt i import second..
Men menyn ser ut såhär och undermenyerna ska vara i ordning efter menyn!
Larssons bilar!
-----------------------------------------------
Navigera dig med piltangenterna
Registrera ny kund <
Bilar i lager
Service, reparation och garantiärenden
Personalregister
planering, aktivitetsdiagram och programkodAvsluta
print("Namn: ")
Name = input()
print("Personnr: ")
Id = input()
print("Mobilnr:")
def method_name():
return print ("+ Name + \n + Id + \n + Nr +")
input()
method_name()
typ nåt sånt här, men vill att input ska hamna i ett register man kan bläddra i sen!
Man gör import på en fil mest för att få tillgång till funktioner som finns definerade där. Sedan händer inget alls om man gör import på den filen igen. Man brukar därför inte ha med nån kod som ska bli körd under själva importen, så print("Namn: ") osv. kommer bara att bli kört en enda gång.
Lägg den koden i en funktion i stället så kan du köra den flera gånger.
så jag ska hoppa över importen helt?
tänkte att det skulle ligga så för att kategorisera upp koden.
känns som ett virrvarr just nu!
Använd kodverktyget {;} i verktygsraden när du klistrar in kod, så blir indenteringen kvar. Nu är det svårt att se vart de där importerna hör. De är fel i vilket fall som helst, men det går inte att säga vad som händer när du kör koden.
print("Namn: ")
Name = input()
print("Personnr: ")
Id = input()
print("Mobilnr:")
Nr = input()
def method_name():
return print ("Namn: " + Name + "Personnummer: " + Id + "Mobilnr: " + Nr + "TACK" )
input()
method_name()
danosarien skrev:print("Namn: ") Name = input() print("Personnr: ") Id = input() print("Mobilnr:") Nr = input() def method_name(): return print ("Namn: " + Name + "Personnummer: " + Id + "Mobilnr: " + Nr + "TACK" ) input() method_name()
det är import second!