"""
|
|
Analytical Skills
|
|
Opgave: recursie
|
|
|
|
(c) 2019 Hogeschool Utrecht
|
|
Tijmen Muller (tijmen.muller@hu.nl)
|
|
|
|
|
|
Let op! Je mag voor deze opgave geen extra modules importeren met 'import'.
|
|
"""
|
|
|
|
|
|
def faculteit(n):
|
|
# Base case
|
|
if n == 0:
|
|
return 1
|
|
# Recursie
|
|
else:
|
|
return faculteit(0)
|
|
|
|
|
|
def exponent(n):
|
|
# Base case
|
|
|
|
# Recursie
|
|
return n
|
|
|
|
|
|
def som(lst):
|
|
return 1
|
|
|
|
|
|
def palindroom(woord):
|
|
return False
|
|
|
|
|
|
"""==============================================[ HU TESTRAAMWERK ]====================================================
|
|
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.
|
|
"""
|
|
import math, random
|
|
|
|
|
|
def test_faculteit():
|
|
for x in range(6):
|
|
assert faculteit(x) == math.factorial(x), \
|
|
f"Fout: faculteit({x}) geeft {faculteit(x)} in plaats van {math.factorial(x)}"
|
|
|
|
|
|
def test_exponent():
|
|
for x in range(10):
|
|
assert exponent(x) == 2**x, \
|
|
"Fout: exponent({x}) geeft {exponent(x)} in plaats van {2**x}"
|
|
|
|
|
|
def test_som():
|
|
for i in range(6):
|
|
lst_test = random.sample(range(-10, 11), i)
|
|
assert som(lst_test) == sum(lst_test), \
|
|
f"Fout: som({lst_test}) geeft {som(lst_test)} in plaats van {sum(lst_test)}"
|
|
|
|
|
|
def test_palindroom():
|
|
testcases = [
|
|
("", True),
|
|
("radar", True),
|
|
("maandnaam", True),
|
|
("pollepel", False),
|
|
("Maandnaam", False)
|
|
]
|
|
|
|
for testcase, res in testcases:
|
|
assert palindroom(testcase) is res, f"Fout: palindroom({testcase}) geeft {palindroom(testcase)} in plaats van {res}"
|
|
|
|
|
|
if __name__ == '__main__':
|
|
try:
|
|
print("\x1b[0;32m")
|
|
|
|
test_faculteit()
|
|
print("Je functie faculteit() doorstaat de tests!")
|
|
|
|
test_exponent()
|
|
print("Je functie exponent() doorstaat de tests!")
|
|
|
|
test_som()
|
|
print("Je functie som() doorstaat de tests!")
|
|
|
|
test_palindroom()
|
|
print("Je functie palindroom() doorstaat de tests!")
|
|
|
|
print("\x1b[0;30m")
|
|
|
|
x = input("Geef een woord: ")
|
|
print("'" + x + "' is " + ("" if palindroom(x) else "g") + "een palindroom!")
|
|
|
|
except AssertionError as ae:
|
|
print("\x1b[0;31m")
|
|
print(str(ae))
|