1 svar
58 visningar
Business är nöjd med hjälpen
Business 33
Postad: 10 sep 2023 23:07

rabatter på python

hej

Undrar om jag har tolkat frågan rätt,samt vill jag få in en "return" dock blir det bara fel varje gång jag testar, vad gör jag för fel?

Frågan:
Skapa en funktion som beräknar rabatter. Handlar man för över 100 kr skall 5% rabatt tillämpas. Handlar man för över 500 kr skall 10% rabatt tillämpas.

handlar man för 585 kr skall man först få 0% rabatt på de första 100 kr. Därefter skall man få 5 % rabatt på 400 kr. Slutligen är det då 85 kr kvar som man ska få 10% rabatt på. Dessutom skall koden ha en korrekt felhantering när man skriver in hur mycket man handlat av respektive vara. 

Koden:

def BeräknaRabatt(handelsbelopp):

    rabatt = 0

 if handelsbelopp > 500:

        rabatt <= (handelsbelopp - 500) * 0.10

        handelsbelopp = 500


    if handelsbelopp > 100:

        rabatt <= (handelsbelopp - 100) * 0.05

      

handelsbelopp1=50

rabatt1 = BeräknaRabatt(handelsbelopp1)

print("handelsbelopp:",handelsbelopp1, "kr",rabatt1)


handelsbelopp2=600

rabatt2 = BeräknaRabatt(handelsbelopp2)

print("handelsbelopp:", handelsbelopp2,"kr", rabatt2)

Ruben 71
Postad: 12 sep 2023 08:39

Indentation är väldigt viktigt i python (https://www.scaler.com/topics/python/indentation-in-python/) och det ser ut att ha blivit fel i din funktion. Misstänker att du har koll på det och att det bara blivit fel när du kopierat in koden dock.

Logiken har också blivit fel: Säg att du handlar för 585kr som i uppgiften. Din funktion kommer ge 5% rabatt på allt över 100kr, när du bara ska ge 5% rabatt för det mellan 100 och 500kr. Lös det exempelvis genom att ta bort allt som redan är inräknat i rabatten från handelsbelopp.

Du försöker använda <= för att lägga till i rabatt. <= är en jämförelseoperator, så du ändrar inte på rabatt utan du testar om rabatt är mindre eller lika med (handelsbelopp - 500) * 0.10. Använd += istället.

Slutligen, för att returnera skriver du bara return rabatt i slutet av funktionen. Viktigt med indentation här. Vad försökte du med som blev fel?

Svara Avbryt
Close