11 svar
653 visningar
danosarien 8
Postad: 19 feb 2022 18:22

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

Laguna Online 28564
Postad: 19 feb 2022 18:30

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.

danosarien 8
Postad: 19 feb 2022 18:38

Givetvis! Tack, trodde jag höll på att bli tokig!

danosarien 8
Postad: 20 feb 2022 16:46

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

Laguna Online 28564
Postad: 20 feb 2022 16:55

Vad finns i second.py?

danosarien 8
Postad: 20 feb 2022 17:33

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 8
Postad: 20 feb 2022 17:46
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 programkod

Avsluta

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!

Laguna Online 28564
Postad: 20 feb 2022 18:35

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.

danosarien 8
Postad: 20 feb 2022 18:40

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!

Laguna Online 28564
Postad: 20 feb 2022 19:40

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.

danosarien 8
Postad: 20 feb 2022 19:56

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 8
Postad: 20 feb 2022 19:57
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!

Svara Avbryt
Close