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
Section titled “Förkunskaper”Du har jobbat allt material i “kmom01”.
Introduktion
Section titled “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 max två decimaler.
Det är viktigt att ditt program följer instruktionerna i kraven annars kommer inte testerna fungera och då rättas inte din inlämning.
Lösningar som använder konstruktionerna list/dict comprehension eller lambda funktioner godkänns inte i denna kurs.
Varje uppgift ska lösas med grundläggande Python konstruktioner som vi går igenom i kursen. Egenskapade funktioner får användas först i kmom03 och listor får användas först i kmom04.
- Skriv din kod i filen
src/kmom01/convert/convert.py
.
# Ställ dig i roten av kurskatalogen pythontouch src/kmom01/convert/convert.pycd src/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 är endast siffror 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: AInvalid value, please enter a number. - Felmeddelandet måste innehålla texten
- Om det är endast siffror, omvandla det till ett decimaltal,
float
.
- Om användaren skriver in ett värde som inte är endast siffror så ska programmet skriva ut ett felmeddelande och avsluta.
-
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 --> mphXInvalid 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, båda värdena avrundat till max två decimaler. Obs! det måste vara ett mellanslag direkt efter originalvärdet och det omvandlade värdet i utskriften.
-
Koden ska validera med Ruff.
Terminal window # Kommandot funkar oavsett var du står i ditt repouv run ruff check -
Testerna som finns ska passera.
Terminal window # om du står i katalogen src/kmom01/convert i ditt repouv run tester ../../../tests/kmom01/convert/# om du står i root katalogen i ditt repouv run tester tests/kmom01/convert/ -
Ladda upp din kod till ditt repo på GitHub. Gör flera små commits när du jobbar med uppgiften!
Terminal window git add src/kmom01/convert/convert.pygit commit -m "Klart med uppgiften convert"git push
Extrauppgift
Section titled “Extrauppgift”-
Tillåt små bokstäver i menyvalet (p eller s fungerar lika bra som P och S).
-
Stöd att användaren skriver in decimaltal.
-
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
Övrigt
Section titled “Övrigt”Här finns övriga saker som är bra att tänka på.
- Gör många och små commits i ditt git repo, du kan ha ungefär 5-10 commits för en sådan här uppgift.