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.

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

  1. Om du vill kan du kopiera exempel programmet hello.py och utgå från det. Spara ditt resultat i filen me/kmom01/convert/convert.py.
Terminal window
# Ställ dig i roten av kurskatalogen python
cp -i example/hello/hello.py me/kmom01/convert/convert.py
cd me/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 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: 80
      Invalid value, please enter a number.
  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
      p
      Invalid converter, please enter P or S.
  4. 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.

  5. Kör testerna och validera koden för att kolla att du är godkänd.

  6. Ladda upp och publicera uppgiften genom att göra följande kommandon i kurskatalogen i terminalen.

Terminal window
# Ställ dig i roten av kurskatalogen python
dbwebb test convert
dbwebb 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ända ValueError och TypeError.

Tips från coachen