|
|
- """ 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))
|