Skip to content

Instantly share code, notes, and snippets.

@edelbluth
Created March 30, 2016 19:15
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save edelbluth/ae96b1e1c8200e7585b7ef09de141e02 to your computer and use it in GitHub Desktop.
Save edelbluth/ae96b1e1c8200e7585b7ef09de141e02 to your computer and use it in GitHub Desktop.
Code Sample for juergen.rocks Blog Post https://juergen.rocks/art/doku-und-test-python-doctest.html
def addiere(*args):
"""
Die Methode »addieren« soll 2-5 Summanden annehmen und deren Summe zurückliefern.
>>> addiere(1, 2)
3
>>> addiere(1, 2, 3)
6
>>> addiere(1, 2, 3, 4)
10
>>> addiere(1, 2, 3, 4, 5)
15
Werden weniger als zwei Summanden angegeben, so ist mit einem `ValueError` zu antworten.
>>> addiere()
Traceback (most recent call last):
...
ValueError
>>> addiere(1)
Traceback (most recent call last):
...
ValueError
Werden mehr als 5 Summanden angegeben, so ist ebenfalls mit einem `ValueError` zu antworten.
>>> addiere(1, 2, 3, 4, 5, 6)
Traceback (most recent call last):
...
ValueError
>>> addiere(1, 2, 3, 4, 5, 6, 7, 8, 9)
Traceback (most recent call last):
...
ValueError
Wenn einer der Summanden nicht vom Typ `int` oder `float` ist, soll er ignoriert werden.
Bleiben dabei weniger als zwei Summanden übrig, ist wieder mit einem `ValueError` zu antworten.
>>> addiere(1, 2, '3', 4)
7
>>> addiere('a', 2, 'b', 3)
5
>>> addiere(1, 2.5, 3, 'a')
6.5
>>> addiere('a', 'b')
Traceback (most recent call last):
...
ValueError
>>> addiere('', 4)
Traceback (most recent call last):
...
ValueError
:param args: Summanden
"""
gueltige_summanden = list(filter(lambda x: any([isinstance(x, int), isinstance(x, float)]), args))
if 2 <= len(gueltige_summanden) <= 5:
return sum(gueltige_summanden)
raise ValueError
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment