Skip to content

Commit 7db5b36

Browse files
committed
Level 6: calc als Beispiel für argparse
1 parent 1359b7b commit 7db5b36

1 file changed

Lines changed: 61 additions & 0 deletions

File tree

Level_06/calc.py

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
#!/usr/bin/env python3
2+
"""Berechnet Dinge."""
3+
4+
from argparse import ArgumentParser
5+
6+
7+
def op_add(a: int, b: int) -> int:
8+
"""Addiert a und b."""
9+
return a + b
10+
11+
12+
def op_sub(a: int, b: int) -> int:
13+
"""Subtrahiert b von a."""
14+
return a - b
15+
16+
17+
def op_mult(a: int, b: int) -> int:
18+
"""Multipliziert a mit b."""
19+
return a * b
20+
21+
22+
def op_div(a: int, b: int) -> float:
23+
"""Teilt a durch b."""
24+
return a / b
25+
26+
27+
def op_exp(a: int, b: int) -> int:
28+
"""Potenziert a mit b."""
29+
return a ** b
30+
31+
32+
def op_root(a: int, b: int) -> float:
33+
"""Berechnet die a-te Wurzel von b."""
34+
return b ** (1 / a)
35+
36+
37+
parser = ArgumentParser(description=__doc__)
38+
subparsers = parser.add_subparsers(help="die auszuführende Rechenoperation")
39+
40+
for function in (
41+
op_add,
42+
op_sub,
43+
op_mult,
44+
op_div,
45+
op_exp,
46+
op_root,
47+
):
48+
parser_func = subparsers.add_parser(
49+
function.__name__.lstrip("op_"),
50+
help=function.__doc__
51+
)
52+
parser_func.add_argument("a", help="erster Wert", type=int)
53+
parser_func.add_argument("b", help="zweiter Wert", type=int)
54+
parser_func.set_defaults(func=function)
55+
56+
if __name__ == "__main__":
57+
# Verarbeiten der Argumente
58+
args = parser.parse_args()
59+
# die tatsächliche Funktion aufrufen
60+
res = args.func(args.a, args.b)
61+
print(res)

0 commit comments

Comments
 (0)