Du kannst nicht mehr als 25 Themen auswählen Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.
 

255 Zeilen
5.9 KiB

""" coding=utf-8
Analytical Skills - practicum 2: statistiek
(c) 2019 Hogeschool Utrecht
Tijmen Muller (tijmen.muller@hu.nl)
"""
"""
LET OP: JE MAG VOOR DEZE OPDRACHT GEEN (extra) MODULES IMPORTEREN!
Je krijgt in deze opdracht alleen de beschikking over de functie sqrt() om een
wortel te kunnen trekken. Deze is al voor je geimporteerd en kun je direct aanroepen.
Bijvoorbeeld: sqrt(16) = 4.0
Practicum 2: Werk onderstaande functies uit. Elke functie krijgt een lijst *lst* met
gehele getallen (int) als argument.
freq(lst):
Return een dictionary met als keys de waardes die voorkomen in *lst* en
als value het aantal voorkomens van die waarde.
Bijvoorbeeld: freq([0, 0, 4, 5]) = {0: 2, 4: 1, 5: 1}
mean(lst):
Return het gemiddelde van de lijst lst.
median(lst):
Return de mediaan van de lijst lst.
modes(lst):
Return een gesorteerde lijst van de modi van lijst lst.
rnge(lst):
Return het bereik van de lijst lst.
var(lst):
Return de variantie van de lijst lst.
std(lst):
Return de standaardafwijking van de lijst lst.
q1(lst):
Return het eerste kwartiel Q1 van de lijst lst.
q3(lst):
Return het derde kwartiel Q3 van de lijst lst.
"""
from math import sqrt
def freq(lst):
freqs = dict()
return freqs
def mean(lst):
return 0.0
def median(lst):
return 0.0
def modes(lst):
return []
def rnge(lst):
return 0
def var(lst):
return 0.0
def std(lst):
return 0.0
def q1(lst):
return 0.0
def q3(lst):
return 0.0
"""
========================================================================================================================
Onderstaand staan de tests voor je code -- hieronder mag je niets wijzigen!
Je kunt je code testen door deze file te runnen of met behulp van pytest.
"""
def my_assert_arg(function, arg, expected_output):
assert function(arg) == expected_output, "Fout: {}({}) geeft {} in plaats van {}".format(function.__name__, arg, function(arg), expected_output)
def test_mean():
testcases = [
([1, 3, 2, 4, 6, 2, 4, 2], 3.0)
]
for case in testcases:
my_assert_arg(mean, case[0], case[1])
def test_rnge():
testcases = [
([1, 3, 2, 4, 6, 2, 4, 2], 5)
]
for case in testcases:
my_assert_arg(rnge, case[0], case[1])
def test_median():
testcases = [
([1, 3, 4, 6, 4, 2], 3.5),
([1, 3, 4, 6, 2, 4, 2], 3.0),
([1, 3, 2, 4, 6, 2, 4, 2], 2.5)
]
for case in testcases:
my_assert_arg(median, case[0], case[1])
def test_modes():
testcases = [
([1, 3, 6, 4, 2], [1, 2, 3, 4, 6]),
([1, 3, 4, 6, 4, 2], [4]),
([1, 3, 4, 6, 2, 4, 2], [2, 4]),
([1, 3, 2, 4, 6, 2, 4, 2], [2])
]
for case in testcases:
my_assert_arg(modes, case[0], case[1])
def test_var():
testcases = [
([1, 3, 2, 4, 6, 2, 4, 2], 2.25)
]
for case in testcases:
my_assert_arg(var, case[0], case[1])
def test_std():
testcases = [
([1, 3, 2, 4, 6, 2, 4, 2], 1.5)
]
for case in testcases:
my_assert_arg(std, case[0], case[1])
def test_q1():
testcases = [
([1, 3, 4, 6, 4, 2], 2.0),
([1, 3, 5, 6, 1, 4, 2], 1.0),
([1, 3, 3, 5, 6, 2, 4, 1], 1.5)
]
for case in testcases:
my_assert_arg(q1, case[0], case[1])
def test_q3():
testcases = [
([1, 3, 4, 6, 4, 2], 4.0),
([1, 3, 5, 6, 2, 4, 1], 5.0),
([1, 3, 3, 5, 6, 2, 4, 1], 4.5)
]
for case in testcases:
my_assert_arg(q3, case[0], case[1])
def test_freq():
testcases = [
([1, 3, 4, 6, 4, 2], {1: 1, 2: 1, 3: 1, 4: 2, 6: 1}),
([1, 3, 5, 6, 2, 4, 1], {1: 2, 2: 1, 3: 1, 4: 1, 5: 1, 6: 1}),
([1, 3, 3, 5, 6, 2, 4, 1], {1: 2, 2: 1, 3: 2, 4: 1, 5: 1, 6: 1})
]
for case in testcases:
my_assert_arg(freq, case[0], case[1])
if __name__ == '__main__':
try:
print("\x1b[0;32m")
test_mean()
print("Je functie mean(lst) werkt goed!")
test_rnge()
print("Je functie rnge(lst) werkt goed!")
test_median()
print("Je functie median(lst) werkt goed!")
test_modes()
print("Je functie modes() werkt goed!")
test_q1()
print("Je functie q1(lst) werkt goed!")
test_q3()
print("Je functie q3(lst) werkt goed!")
test_var()
print("Je functie var(lst) werkt goed!")
test_std()
print("Je functie std(lst) werkt goed!")
test_freq()
print("Je functie freq(lst) werkt goed!")
print("Gefeliciteerd, alles lijkt te werken! Lever je werk nu in op Canvas...\n")
def hist(freqs):
v_min = min(freqs.keys())
v_max = max(freqs.keys())
histo = str()
for i in range(v_min, v_max + 1):
histo += "{:5d} ".format(i)
if i in freqs.keys():
histo += "" * freqs[i]
histo += '\n'
return histo
s = input("\x1b[0;30mGeef een reeks van gehele getallen (gescheiden door een spatie): ")
userlst = [int(c) for c in s.split()]
print("\nHet gemiddelde is {:.2f}".format(mean(userlst)))
print("De modi zijn {}".format(modes(userlst)))
print("De mediaan is {:.2f}".format(median(userlst)))
print("Q1 is {:.2f}".format(q1(userlst)))
print("Q3 is {:.2f}".format(q3(userlst)))
print("Het bereik is {}".format(rnge(userlst)))
print("De variantie is {:.2f}".format(var(userlst)))
print("De standaardafwijking is {:.2f}".format(std(userlst)))
print("\nHistogram (gekanteld):\n\n" + hist(freq(userlst)))
except AssertionError as ae:
print("\x1b[0;31m" + str(ae))