Læringsmål:
- if-elif-else
Starting out with python:
- If-setninger
- Tilfeldige tall
Pensum
- Kap 1.6
- Kap 2.1.3
- Kap 3.7
- Kap 4.1 - 4.3PLACEHOLDER
En sprø professor har et frivillig fag om "tilfeldighet". Han bedømmer eksamen etter to faktorer: En tilfeldig poengsum og en en svært uformell gruppering av håndskrift: fin eller stygg. Fin skrift trekker en hel karakter opp, mens stygg skrift trekker ned en hel karakter ned. Han tror gir ikke på noe ut karakterer over A eller mindre lavere enn F.
Det skal lages et program som skriver ut hvor mange poeng en elev fikk, karakteren dette tilsvarer, og hvorvidt håndskriften trakk eleven opp eller ned. En eksempelutskrift fra å kjøre programmet kan være som følger:
"Du fikk 89 87 poeng på eksamen, en B. Fordi du skrev stygt ble dette en C.".
Dette gjøres
Vi skal gjøre dette ved å bryte ned problemet i mindre deler.
a) Lag en funksjon som gir deg returnerer en karakter bokstavkarakter basert på et antall poeng. Prototypen skal se slik ut:"
function
...
grade
...
= num2grade(points)
Poenggrensene ;" Poenggrensene er som følger:
A | B | C | D | E | F |
---|---|---|---|---|---|
100-89 | 88-77 | 76-65 | 64-53 | 52-41 | 40-0 |
Skriv ut en feilmelding om antall poeng ikke er et heltall eller er utenfor skalaen.
Tips: Bruk den innebygde funksjonen, error(), til å skrive ut feilmeldingen.
Code Block | ||||
---|---|---|---|---|
| ||||
>> num2grade(65)
ans =
C
>> num2grade(110)
Error using num2grade (line 6)
points må ligge i intervallet [0, 100]! |
b) Skriv funksjonen evaluateGrade(points, handWriting)
. Den tar inn skal ha to parametre: en poengsum (heltall) og en streng boolsk verdi for kvaliteten på håndskriften. Fin håndskrift = true, stygg håndskrift = false. Den skal deretter returnere hva bokstavkarakterer blir når håndskriften tas hensyn til.
, 'fin' eller 'stygg'. Tips: Bruk num2grade
og det at at char
('B'
+ - 1) = 'A'
.
Code Block | ||||
---|---|---|---|---|
| ||||
>> evaluateGrade(83, true)
ans =
A
>> evaluateGrade(94, true)
ans =
A
>> evaluateGrade(56, false)
ans =
E
>> evaluateGrade(34, false)
ans =
F |
c) Det er behov for en funksjon randomGrade som randomPoints()
som generer en tilfeldig poengsum (heltall!) fra 0 til 100, og returnerer denne. Lag denne og test at den funker med: num2grade(
randomGrade).
d) num2grade, evaluateGrade og randomGrade skal settes sammen. grades(70, 'fin') skriver ut: Du fikk 70 poeng på eksamen, en C. Fordi du skrev fint ble dette en B.
randomPoints())
.
Code Block | ||||
---|---|---|---|---|
| ||||
>> randomPoints()
ans =
19
>> num2grade(randomPoints())
ans =
C |
d) Lag også en funksjon randomHandW()
som returnerer en tilfeldig håndskrift, true (fin) eller false (stygg).
Code Block | ||||
---|---|---|---|---|
| ||||
>> randomHandW
ans =
1
>> randomHandW
ans =
0
>> randomHandW
ans =
0 |
e) num2grade(points)
, evaluateGrade(points, handWriting)
, randomHandW()
og randomPoints()
skal settes sammen. Funksjonen grades()
skal bruke funksjonene fra de tidligere deloppgavene til å generere en tilfeldig poengsum og håndskrift, og deretter skrive ut til brukeren hva poengsummen ble, hvilken karakter det tilsvarer, og hvordan håndskriften påvirket karakteren.
Code Block | ||||
---|---|---|---|---|
| ||||
>> grades
Du fikk 58 poeng på eksamen, en D. Fordi du skrev fint ble dette en C
>> grades
Du fikk 96 poeng på eksamen, en A. Fordi du skrev fint ble dette en A
>> grades
Du fikk 93 poeng på eksamen, en A. Fordi du skrev fint ble dette en A |
...