From 827d2ec034d707384cfc9b2917d76cff3a7e44d0 Mon Sep 17 00:00:00 2001 From: perro Date: Tue, 28 Feb 2023 11:52:31 -0800 Subject: [PATCH] Ejercicio 10 --- exercises/ex10/ex10.py | 48 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 exercises/ex10/ex10.py diff --git a/exercises/ex10/ex10.py b/exercises/ex10/ex10.py new file mode 100644 index 0000000..815e5cf --- /dev/null +++ b/exercises/ex10/ex10.py @@ -0,0 +1,48 @@ +# Exercise 10 +# 1. sort command + +import sys +import argparse +from pathlib import Path + + +def modify(lines, args, name): + if name in args.keys() and args[name] is True: + for i, line in enumerate(lines): + match name: + case "ignore_leading_blanks": + lines[i]["mut"] = lines[i]["mut"].strip() + case "ignore_case": + lines[i]["mut"] = lines[i]["mut"].lower() + case "numeric_sort": + if lines[i]["mut"].isnumeric(): + lines[i]["mut"] = int(lines[i]["mut"]) + + +parser = argparse.ArgumentParser() +parser.add_argument("stream", default=sys.stdin, nargs="*") +parser.add_argument("-f", "--ignore-case", action="store_true") +parser.add_argument("-b", "--ignore-leading-blanks", action="store_true") +parser.add_argument("-n", "--numeric-sort", action="store_true") +parser.add_argument("-r", "--reverse", action="store_true") +args = parser.parse_args().__dict__ +lines = [] + +for stream in args["stream"]: + if isinstance(args["stream"], list): + for line in Path(stream).open().readlines(): + lines.append({"fix": line.rstrip(), "mut": line.rstrip()}) + else: + lines.append({"fix": stream.strip(), "mut": stream.strip()}) + +modify(lines, args, "ignore_leading_blanks") +modify(lines, args, "ignore_case") +modify(lines, args, "numeric_sort") + +lines = sorted(lines, key=lambda k: k["mut"]) + +if args["reverse"]: + lines.reverse() + +for line in lines: + print(line["fix"])