Pythonuppgifter, kapitel 3. Villkor
Att lära dig från uppgifterna
- Syntax och användning av
if,elifochelse. - 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. 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)
Använda rättningsskriptet
OBS! Rättningsskriptet kan bara användas från LiUs Linux-miljö, dvs. är inloggad på en Linux-dator i ett PUL på Campus, har anslutit via VSCodes RemoteSSH, är inloggad på en dator i ett PUL via RDP, eller är inloggad via ThinLinc.
Du kan bara köra rättningsskriptet för ett specifikt kapitel (t.ex. Pythonuppgifter, kapitel 2) en gång var åttonde minut. Detta är för att ni även behöver lära er hur ni testar er egen kod; ni ska inte vara beroende av att det finns ett rättningskript som hjälper er.
Innan du kör rättningsskriptet
Kommentera ut egna testanrop i din kodfil innan du kör rättningsskriptet. Rättningsskriptet kommer att köra din kodfil och om det finns testanrop i filen kan det störa rättningen. Du kan kommentera ut rader i Python genom att ställa dig på raden och trycka Ctrl+’ (tangenten ’ är oftast till höger om Ä på ett svenskt tangentbord) i VS Code. Du kan också markera flera rader och trycka samma tangentkombination för att kommentera ut alla markerade rader.
Köra rättningsskriptet
För att rätta din fil skriver du nedanstående ($ skrivs inte utan
representerar prompten i terminalen):
|
|
- Ersätt
<kapitel>med det kapitel vars uppgifter koden löser, t.ex.1för att rätta kapitel 1,2för kapitel 2, osv. - Ersätt
<kodfil>med namnet på filen som innehåller din kod. - OBS! Du måste stå i samma katalog som filen som du vill rätta.
- OBS! Du får inte döpa din kodfil till ett namn med en punkt i filnamnet utöver punkten innan ändelsen
py. Alltså,pyuppg1.pyfungerar,pyuppg_kap.1.pyfungerar inte.
Exempel
Exempel för Pythonuppgifter kapitel 2 om filen med dina lösningar är döpt till pythonuppg_2.py
|
|
Exempel för Pythonuppgifter kapitel 3 om filen med dina lösningar är döpt till pyuppg3.py
|
|
Resultat från rättningsskriptet
Rättningsskriptet kommer berätta för dig vilka uppgifter som är godkända, vilka som inte är godkända och vilka som inte hittades. Rättningsskriptet berättar också hur många poäng du fått totalt på hela kapitlet.
När du kör rättningsskriptet kommer du få en utskrift i terminalen som liknar den nedan.
Rättningsskriptet ger ofta viss feedback om vad som är fel. Ni kommer dock ofta själva att behöva felsöka mer i detalj genom att t.ex. lägga till spårutskrifter för att testa koden medan du skriver den.
Exempelutskrift från körning av rättningsskriptet
OBS! Nedanstående utskrift är bara ett exempel på hur utskriften kan se ut. Den är inte kopplad till någon verklig inlämning.
#### POÄNG (100 poäng behövs för GODKÄND UPPG) ####
UPPG 1.1: 5 poäng.
UPPG 1.2: 5 poäng.
UPPG 1.3: 5 poäng.
UPPG 1.4: 5 poäng.
UPPG 1.5: 10 poäng.
UPPG 1.7: 10 poäng.
UPPG 1.8: 10 poäng.
UPPG 1.9: 10 poäng.
UPPG 1.10b: 5 poäng.
UPPG 1.11: 15 poäng.
UPPG 1.12: 15 poäng.
#### SAKNADE UPPGIFTER ####
Kontrollera stavning på din funktioner. Stora och små
bokstäver spelar roll.
UPPG 1.10a saknar funktion: 'first_in_list'
UPPG 1.10c saknar funktion: 'last_in_list'
#### FEL vid TEST ####
Felsök genom att ha testanrop längst ner i din kodfil och
skriv ut resultaten. Kontrollera också så att du har mellanrum
på rätt ställe och att stora/små bokstäver stämmer överrens.
UPPG 1.6: Fel påträffades.
#### ANTAL POÄNG: 95
#### Du är INTE godkänd på Pythonuppgifter 1.
#### 5 poäng saknas.
Skicka in rättningskod
Om uppgiften är godkänd så hittar du även ett stycke med en rättningskod. Detta är en komprimerad version av all data om din lösning och hur många poäng du fått.
Kopiera rättningskoden (se exempel nedan) och klistra in den i en
textfil; en fil för varje rättningskod. För laboration 1 kommer du lämna in 3 filer, en för varje kapitel som ingår i första labben. Döp filerna till pyuppg1.txt, pyuppg2.txt och pyuppg3.txt. Motsvarande gäller för labb 2 (kapitel 4-6) och 3 (kapitel 7-9).
------------------------ KOPIERA FRÅN RADEN UNDER DENNA ------------------------
dXBwZzEvaW5mby50eHRVVAkAAz99zVc/fc1XdXgLAAEE9QEAAAQUAAAABcHLEcIgEADQO1VsA3FY
zVd1eAsAAQT1AQAABBQAAABQSwMEFAAAAAgAiIElSZnJPKxkAAAAcgAAABgAHABqb2RmbzAxLXB5
AjhLN2E/iophTDike9+T7dQCwWNePC0+AeaCoWBy89Bfgdcutnt01j4K/FR+qxQY1xzjgbdxud6+
AGpvZGZvMDEtcHl1cHBnMS9taW5pZmllZC5weVVUCQADP33NVz99zVd1eAsAAQT1AQAABBQAAACN
UEsDBAoAAAAAAIiBJUkAAAAAAAAAAAAAAAAQABwAam9kZm8wMS1weXVwcGcxL1VUCQADP33NVz99
kstugzAQRfd8hUU3pCGhRMomUlb9jLayDIzBjbEte4iavy/YPEJaqV0gM3fO3Bk/RGu0RWKZqnQb
VcCJBeysolxcIdmcojEm8SDEnjBWKFwAHyYhv/EAqyrqsJdrt7Jo4DPexo6p4NM5oNgAvTLrsSuT
HZyPM+/j5+OKZbZO2Gi+NJ+VuXZSVsVSKCgssMtqKssqkr+rYTmEwVxXoGUlJn6CPPXL4a4m6Lug
hxIjBdJCSJmwVncKU9W1BViqOTWgjYS78kBkj4Q3KrUqGYLqv/kMXZ66+/Yu37rQlgvrkArVb82N
47rHOd3by0eYEXrz6k86D7Rk/3De5ZO1hBJpeEY/6aDvy0aLEqa0L6xBgR32avQFWq2oYi0kxgIX
X+BS13H/E656EM/rVhPZ33xgH/KzQUQG5/Nvxxs8xl7LExr46Im89g8GoSLFjZhbK5TgAixJGkTj
TllWC2y6Yl/qNpOCo+Y8W7BN9A1QSwMEFAAAAAgAiIElSclUPoaqAAAAqAEAAB8AHABqb2RmbzAx
zZoKdEnH7GDmmeo9xVhT5JpzNVmFaOPAK6G5P1BLAwQUAAAACACIgSVJoN99PmsBAABgAwAAGwAc
LXB5dXBwZzEvcHl1cHBnMXRlc3QubG9nVVQJAAM/fc1XP33NV3V4CwABBPUBAAAEFAAAAOPiUgYC
hQD/wy1+7goahgYGCgX5h5fkpSskpWYc3lZWrJB2eFuRgru/izdQhYtCaECAu6YCSA8XF4itYKhn
aKVgCtWkBxMzwiJmjEXMBIuYqZWCoQG6oBk2QXNsghbYBC2xCRoaJGKx3tAgCatoMjZRoN8NMUWN
CgAAAAAAiIElSQAAAAAAAAAAAAAAABAAGAAAAAAAAAAQAO1BAAAAAGpvZGZvMDEtcHl1cHBnMS9V
VAUAAz99zVd1eAsAAQT1AQAABBQAAABQSwECHgMUAAAACACIgSVJmck8rGQAAAByAAAAGAAYAAAA
AAAAUEsBAh4DFAAAAAgAiIElSaDffT5rAQAAYAMAABsAGAAAAAAAAQAAAKSBAAEAAGpvZGZvMDEt
AAABAAAApIFKAAAAam9kZm8wMS1weXVwcGcxL2luZm8udHh0VVQFAAM/fc1XdXgLAAEE9QEAAAQU
UEQhIezoF+LoAw1noLShKUTYpVTh8BKk8C04vFQhoLIkIz+vtKAgPTOtRMFQkUtBgQsAUEsBAh4D
JUnJVD6GqgAAAKgBAAAfABgAAAAAAAEAAACkgcACAABqb2RmbzAxLXB5dXBwZzEvcHl1cHBnMXRl
cHl1cHBnMS9taW5pZmllZC5weVVUBQADP33NV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAAAIAIiB
c3QubG9nVVQFAAM/fc1XdXgLAAEE9QEAAAQUAAAAUEsFBgAAAAAEAAQAegEAAMMDAAAAAA==
------------------------- KOPIERA T.O.M. RADEN OVANFÖR -------------------------
(OBS! Ovanstående rättningskod är ogiltig och bara ett exempel på hur utskriften kommer att se ut).
Inlämning
När Pythonuppgifter, kapitel 1-3 är färdiga är det dags att lämna in.
Inlämningar för Pythonuppgifter behöver inte redovisas innan inlämning.
- Till varje inlämning av pythonuppgifter ska ni bifoga flera filer. En textfil med rättningskoden för varje kapitel. T.ex. för Pythonuppgifter 1-3 bifogar ni en fil med rättningskoden för kapitel 1, en för kapitel 2 och en för kapitel 3.
- OBS! Ni ska bara göra EN inlämning av rättningskoder per labb, alla rättningskoder tillhörande samma laboration ska alltså bifogas till samma inlämning.
- Hur du använder rättningsskripten står längst ner på varje sida med uppgifter.
- Inlämning av Pythonuppgifter:
Sidansvarig: Johan Falkenjack
Senast uppdaterad: 2026-01-08
