Home > Software design >  Python assignment (school) dinner options without loops
Python assignment (school) dinner options without loops

Time:11-08

I've got to create a 4 meal option, of which 3 meals also have sauce options. No loop and/or functions are allowed.

So I got 4 meals; 1) Steak, 2) Mussels, 3) Scampi, 4) Quinoa The user get's asked what meals he wants, by inserting the corresponding number. Any other number should result in a; "We do not serve this".

The first 3 meals, also get another user prompt of different sauces. The output should reflect the meal sauce.

I've been trying this assignment for many more hours than I dare to admit. I'm a beginner (started in September, combining studies with full-time work) and all other assignments went pretty good so far, this one not so much... I also tried to line up my sauces better with '\n', but this gave me a error. Currently my code has no error, but I kinda wish it did...

I've gotten completely lost in the cycle of 'if' and 'elif'. I hope someone can shine some light.

import sys
maaltijd_1 = "Biefstuk"
maaltijd_2 = "Mosselen"
maaltijd_3 = "Scampis"
maaltijd_4 = "Quinoa met wintergroenten"
#Biefstuk saus
maaltijd_1_saus_1 = "Geen saus"
maaltijd_1_saus_2 = "Béarnaise"
maaltijd_1_saus_3 = "Pepersaus"
maaltijd_1_saus_4 = "Champignonroomsaus"
#Mosselen saus
maaltijd_2_saus_1 = "Natuur"
maaltijd_2_saus_2 = "Look"
maaltijd_2_saus_3 = "Pikant"
#Scampis saus
maaltijd_3_saus_1 = "Natuur"
maaltijd_3_saus_2 = "Look"
maaltijd_3_saus_3 = "Pikant"

print("Welkom, U kan kiezen uit:\n 1)Biefstuk\n 2)Mosselen\n 3)Scampis\n 4)Quinoa met wintergroeten")
klant = int(input("Geef het nummer in van uw gewenste maaltijd: "))

#biefstuk
if (klant == maaltijd_1):
    print("Prima, bij biefstuk kan U kiezen uit de volgende sausen: ", maaltijd_1_saus_1, maaltijd_1_saus_2, maaltijd_1_saus_3, maaltijd_1_saus_4)
elif (klant == 0 and klant >= 5):
    print("Dit gerecht hebben hebben we niet.")
klant = int(input("Geef het nummer in van uw gewenste saus: "))
if (klant == 0 and klant >= 5):
    print("Deze saus hebben hebben we niet.")
elif (klant == maaltijd_1_saus_1):
    print("Uw maaltijd: Biefstuk zonder saus komt er zo aan. Smakelijk!")
    sys.exit()
elif (klant == maaltijd_1_saus_2):
    print("Uw maaltijd: Biefstuk met Béarnaise saus komt er zo aan. Smakelijk!")
    sys.exit()
elif (klant == maaltijd_1_saus_3):
    print("Uw maaltijd: Biefstuk met pepersaus komt er zo aan. Smakelijk!")
    sys.exit()
elif (klant == maaltijd_1_saus_4):
    print("Uw maaltijd: Biefstuk met champignonroomsaus komt er zo aan. Smalelijk!")
    sys.exit()
    
#Mosselen
elif (klant == maaltijd_2):
    print("Prima, bij mosselen kan U kiezen uit de volgende sausen: ", maaltijd_2_saus_1, maaltijd_2_saus_2, maaltijd_2_saus_3)
elif (klant == 0 and klant >= 5):
    print("Dit gerecht hebben hebben we niet.")
klant = int(input("Geef het nummer in van uw gewenste saus: "))
if (klant == 0 and klant >= 5):
    print("Deze saus hebben we niet.")
if (klant == maaltijd_2_saus_1):
    print("Uw maaltijd: Mosselen Natuur, komt er zo aan. Smakelijk!")
elif (klant == maaltijd_2_saus_2):
    print("Uw maaltijd: Mosselen Look, komt er zo aan. Smakelijk!")
elif (klant == maaltijd_2_saus_3):
    print("Uw maaltijd: Mosselen Pikant, komt er zo aan. Smalelijk!")
    sys.exit()
    
#Scampis
elif (klant == maaltijd_3):
    print("Prima, bij scampis kan U kiezen uit de volgende sausen: ", maaltijd_3_saus_1, maaltijd_3_saus_2, maaltijd_3_saus_3)
elif (klant == 0 and klant >= 5):
    print("Deze saus hebben hebben we niet.")
klant = int(input("Geef het nummer in van uw gewenste saus: "))
if (klant == 0 and klant >= 5):
    print("Deze saus hebben we niet.")
if (klant == maaltijd_3_saus_1):
    print("Uw maaltijd: Scampis Natuur, komt er zo aan. Smakelijk!")
elif (klant == maaltijd_3_saus_2):
    print("Uw maaltijd: Scampis Look, komt er zo aan. Smakelijk!")
elif (klant == maaltijd_3_saus_3):
    print("Uw maaltijd: Scampis Pikant, komt er zo aan. Smalelijk!")
    sys.exit()

#Quinoa
elif (klant == maaltijd_4):
    print("Prima, uw gerecht; Quinoa met wintergroenten, komt er zo aan. Smakelijk!")
    sys.exit()

CodePudding user response:

I recognize doing these kinds of things when I just started out. No worries, just keep improving! That said, here is something to think about:

If you create a variable for each combination of "maaltijd" and "saus", you'll have to add an enormous amount of code every time you add either one. One improvement would be to disconnect the two.

If your goal is to create a custom message, you can also use variables in your print statement like this:

x = 'Nice saus'
print(f'This prints variable x: {x}')

I hope this helps you compact this code a bit. Side note: sys.exit() is not necessary, and generally bad practice. Just make sure that no other logic gate is triggered and let the program run its course!

Good luck!

CodePudding user response:

without loops and function you can solve it like this
instead of loops for iteration you can use a lot of things: map, ''.join, [::] slices
I've used lambda, this is allowed, isn't it?

data = {
    "Biefstuk": [
        "Geen saus",
        "Bearnaise",
        "Pepersaus",
        "Champignonroomsaus"
    ],
    "Mosselen": [
        "Natuur",
        "Look",
        "Pikant"
    ],
    "Scampis": [
        "Natuur",
        "Look",
        "Pikant"
    ],
    "Quinoa met wintergroenten": None
}



choice = input(("Welkom, U kan kiezen uit:\n 1)Biefstuk\n 2)Mosselen\n 3)Scampis\n 4)Quinoa met wintergroeten\n\nGeef het nummer in van uw gewenste maaltijd: "))

if choice not in ['1','2','3','4']:
    print(f"We do not serve dish like: {choice}")
    exit()

choice_as_idx = int(choice)-1
choice_as_text = list(data)[choice_as_idx]
souce_options = data[list(data)[choice_as_idx]] #['Natuur', 'Look', 'Pikant']

if souce_options:
    s = ''.join(map( lambda x: str(souce_options.index(x) 1)   '. '   x '\n', souce_options))
    souce_choice = input(f"what souce do you want to {choice_as_text}:\n{s}")

    try:
        print(f'your choice: {choice_as_text} with {souce_options[int(souce_choice)-1]}')
        exit()
    except Exception as ex:
        print(f"We do not serve souce like: {souce_choice}")
        exit()

print(f'your choice: {choice_as_text}')
  • Related