Skip to content

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.

Du har jobbat allt material i “kmom01”.

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.

  1. Skriv din kod i filen src/kmom01/convert/convert.py.
Terminal window
# Ställ dig i roten av kurskatalogen python
touch src/kmom01/convert/convert.py
cd src/kmom01/convert
ls
  1. convert.py skall innehålla kod för att omvandla två värden, som beskrivs i texten ovanför, hastighet och pris.

  2. 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: A
      Invalid value, please enter a number.
    • Om det är endast siffror, omvandla det till ett decimaltal, float.
  3. 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: 100
      Choose what to convert:
      P: Price, before --> after discount and tax
      S: Speed, km/h --> mph
      P
      The 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: 80
      Choose what to convert:
      P: Price, before --> after discount and tax
      S: Speed, km/h --> mph
      S
      80.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: 80
      Choose what to convert:
      P: Price, before --> after discount and tax
      S: Speed, km/h --> mph
      X
      Invalid converter, please enter P or S.
  4. 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.

  5. Koden ska validera med Ruff.

    Terminal window
    # Kommandot funkar oavsett var du står i ditt repo
    uv run ruff check
  6. Testerna som finns ska passera.

    Terminal window
    # om du står i katalogen src/kmom01/convert i ditt repo
    uv run tester ../../../tests/kmom01/convert/
    # om du står i root katalogen i ditt repo
    uv run tester tests/kmom01/convert/
  7. 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.py
    git commit -m "Klart med uppgiften convert"
    git push
  • 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ända ValueError och TypeError.

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.