Ditt första Python-skript
I denna uppgift ska du skriva ett program som omvandlar ett numeriskt värde beroende på vad användaren väljer att konvertera: pris eller hastighet. Du tränar på användarinmatning, villkorssatser (if/elif/else), datatyper och enkel felhantering.
Förkunskaper
Du har jobbat allt material i “kmom01”.
Du har även läst om dbwebb test och förstår hur du kan rätta uppgiften när du är klar med den.
Introduktion
Du skall nu göra ett program som ber användaren mata in ett av följande värden:
- Hastighet (km/h)
- Pris
Sedan skall programmet fråga vilket värde användaren vill konvertera till:
-
P
: Pris, där värdet justeras med en fast rabatt (10 kr) och sedan ökas med moms (20 %). -
S
: Hastighet, där värdet tolkas som km/h och omvandlas till mph (miles per hour).
1 kilometer är 0.62137 miles.
Avsluta med att skriva ut det omvandlade värdet med två decimaler.
Exempel på hur det kan se ut när man kör progrmmet:
[ASCIINEMA src=416115]
Det är viktigt att ditt program följer instruktionerna i kraven annars kommer inte testerna fungera och då rättas inte er inlämning.
Krav
- Om du vill kan du kopiera exempel programmet
hello.py
och utgå från det. Spara ditt resultat i filenme/kmom01/convert/convert.py
.
# Ställ dig i roten av kurskatalogen pythoncp -i example/hello/hello.py me/kmom01/convert/convert.pycd me/kmom01/convertls
-
convert.py
skall innehålla kod för att omvandla två värden, som beskrivs i texten ovanför, hastighet och pris. -
Gör ett
input()
anrop för att få värdet som ska omvandlas.- Om användaren skriver in ett värde som inte går att omvandla till
float
så ska programmet skriva ut ett felmeddelande och avsluta.- Felmeddelandet måste innehålla texten
Invalid value
. - Avsluta programmet med
exit()
.
Hello and welcome to the unit converter!Enter value to convert: 80Invalid value, please enter a number. - Felmeddelandet måste innehålla texten
- Om användaren skriver in ett värde som inte går att omvandla till
-
Gör ett
input()
anrop för att ta reda på vilket typ av omvandling som ska göras.- Om användaren skriver
P
så ska programmet omvandla priset.Hello and welcome to the unit converter!Enter value to convert: 100Choose what to convert:P: Price, before --> after discount and taxS: Speed, km/h --> mphPThe final price of 100.0 after 10 kr discount and 20% tax is: 108.0 kr - Om användaren skriver
S
så ska programmet omvandla hastigheten.Hello and welcome to the unit converter!Enter value to convert: 80Choose what to convert:P: Price, before --> after discount and taxS: Speed, km/h --> mphS80.0 km/h is equivalent to 49.71 mph - Om användaren skriver något annat så ska programmet skriva ut ett felmeddelande och avsluta.
- Felmeddelandet måste innehålla texten
Invalid converter
. - Avsluta programmet med
exit()
.
Hello and welcome to the unit converter!Enter value to convert: 80Choose what to convert:P: Price, before --> after discount and taxS: Speed, km/h --> mphpInvalid converter, please enter P or S. - Felmeddelandet måste innehålla texten
- Om användaren skriver
-
Skriva ut original värdet och det omvandlade värdet, avrundat till två decimaler. Obs! det måste vara ett mellanslag direkt efter originalvärdet och det omvandlade värdet i utskriften.
-
Kör testerna och validera koden för att kolla att du är godkänd.
-
Ladda upp och publicera uppgiften genom att göra följande kommandon i kurskatalogen i terminalen.
# Ställ dig i roten av kurskatalogen pythondbwebb test convertdbwebb publish convert
Rätta eventuella fel som dyker upp och publicera igen. När det ser grönt ut så är du klar.
Extrauppgift
-
Tillåt små bokstäver i menyvalet (p eller s fungerar lika bra som P och S).
-
Använd try-except för att hantera felaktig inmatning (t.ex. om användaren skriver in bokstäver i stället för ett tal).
- Du får inte använda bas felet
Exception
utan du får bara användaValueError
ochTypeError
.
- Du får inte använda bas felet
Tips från coachen
-
Hur ber man om hjälp med kod i chatten?, där förklaras hur ni ber om hjälp på bästa sättet så ni ska få svar så snabbt som möjligt.
-
En sida med användbara länkar, som kan vara bra att ha under kursensgång.