Pythonuppgifter 3 - Villkor
Skriv lösningarna till uppgifterna i en och samma fil och testa koden själv innan du använder rättningsskriptet. Att kunna testa sin kod är en viktig del av att programmera!
Att lära dig från uppgifterna
- Syntax och användning av
if
,elif
ochelse
. - Jämförelser med
!=
,==
,<
,>
,<=
, och>=
. - Logiska operatorer för att kombinera jämförelser.
Man kan få max 45 poäng och för att få godkänt krävs 30 poäng (40 för väl godkänt). Försök dock att lösa alla uppgifter då inte alla fel upptäcks av rättningsskriptet. Om ni har lite marginal kan ni kanske bli godkända även om assistenten som rättar hittar något sådant fel.
Uppgift 3.1 (5p)
Skriv funktionen greeting(name)
som tar emot en sträng med ett namn som värde. Funktionen returnerar sedan hälsningsfrasen "Hej " + name + "!"
förrutom när namnet som skickats in börjar på (stora) bokstaven M
. I dessa fall returneras "Hej " + name + ", visste du att M är min favoritbokstav!"
Anropet greeting("Pontus")
ska alltså returnera strängen "Hej Pontus!"
medan anropet greeting("Morgan")
ska returnera strängen "Hej Morgan, visste du att M är min favoritbokstav!"
.
Uppgift 3.2 (5p)
Skriv funktionen is_this_a_long_sequence(s)
som får en sekvens (s
) som argument och returnerar True
eller False
beroende på hur lång sekvensen är. Sekvenser längre än 5 anses vara långa.
Tips: Använd funktionen len()
för att ta reda på längden på en sekvens (och även oordnade samlingar, som vi kommer till snart, för den delen).
Uppgift 3.3 (5p)
Skriv funktionen get_grade(score)
som tar in en siffra (argumentet score
) som antingen ett heltal eller ett flyttal och returnerar en sträng med betyget som man får när man har score
poäng. Betygsgränserna är följande:
- Betyget
"G"
returneras om poängen är 50 eller högre. - Är poängen högre än 80 returneras betyget
"VG"
. - Vid mindre än 50 poäng returneras
"U"
.
Uppgift 3.4 (5p)
Skriv funktionen days_in_month(name_of_month)
som tar in namnet på en månad (som sträng) och returnerar antalet dagar i den månaden (antag att det inte är skottår). Följande stavningar på månader ska användas: "januari"
, "februari"
, "mars"
, "april"
, "maj"
, "juni"
, "juli"
, "augusti"
, "september"
, "oktober"
, "november"
, "december"
.
Lösningen ska innehålla en if
-sats med tre klausuler. Fullständig uppräkning är inte godkänt.
Tips: Använd operatorn in
för att testa om ett visst värde finns i en samling, t.ex. om en viss sträng finns i en viss lista.
Uppgift 3.5 (5p)
Skriv funktionen odd(value)
som tar in ett heltal och returnerar True
om
heltalet value
är udda, och returnerar False
om heltalet value
är jämt.
Tips!
Operatorn modulo som i Python skrivs som %
ger resten vid division. Om man
ska dela heltalet 6 med heltalet 5, så får 5 plats 1 gång och man får en rest
på 1. Dvs man delar 6 % 5
ger 1
eftersom 6 = 5 * 1 + 1. 6 % 3
ger oss en
rest på 0
eftersom 6 = 3 * 2 + 0
.
Resten 0 innebär allstå att att täljaren är jämt delbar med nämnaren. Eftersom
alla tal som är jämt delbara med 2
är jämna, kan man använda modulo-operatorn
för att ta reda på om ett tal är jämt eller udda. Om resten är 0 är talet jämt!
Uppgift 3.6 (10p)
Skriv funktion get_integer_description(value)
som tar in ett heltal och
returnerar ett annat heltal beroende egenskaperna hos value
.
- om
value
är positivt och jämt returneras 2 - om
value
är positivt och udda returneras 1 - om
value
är 0 returneras 0 - om
value
är negativt och udda returneras -1 - om
value
är negativt och jämt returneras -2
Tips: Använd logiska operatorer för att kombinera fler än en jämförelse
Uppgift 3.7 (10p)
Skriv funktionen appraisal_factor(rare, good_condition)
som returnerar ett flyttal. Båda argumenten rare
och good_condition
är sanningsvärden (dvs antingen True
eller False
).
Funktionen är tänkt att användas för att justera priset på antikviteter. Om ett föremål är sällsynt (om argumentet rare
är True
) läggs en bonus på 25% till priset. Om föremålet inte är sällsynt (om argumentet rare
är False
) dras 25% bort från priset.
Förrutom sällsyntheten behöver man även ta hänsyn till hur gott skick som föremålet är i. Är föremålet i gott skick (om argumentet good_condition
är True
) lägger man till 50% till priset. Är det i dåligt skick (om argumentet good_condition
är False
) drar man bort 50% från priset.
Funktionen appraisal_factor(rare, good_condition)
ska returnera den faktor som orginalpriset ska multipliceras med för att kompensera för sällsynthet och skick.
Exempel: Ett sällsynt föremål i gott skick ska alltså ha en faktor på 1.75
(1 + 0.25 + 0.50
). Ett sällsynt föremål som inte är i gott skick ska ha en faktor på 0.75
(1 + 0.25 - 0.50
)
Sidansvarig: Johan Falkenjack
Senast uppdaterad: 2025-08-05