Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python3
- """
- Das Programm wandelt Ganzzahlen in Binärzahlen um.
- Als Eingabe können auch Dateien vewrwendet werden.
- """
- import sys
- from argparse import ArgumentParser, FileType
- from bisect import bisect
- def get_args():
- """
- Parse arguments from command liene and return the args.
- """
- parser = ArgumentParser(description=__doc__)
- sub_parser = parser.add_subparsers()
- convert = sub_parser.add_parser(
- name="convert", description="Ganzzahl", help="Ganzzahl"
- )
- file = sub_parser.add_parser(
- name="file",
- description="Datei parsen",
- help="Zeile für Zeile einlesen und die Zahlen in Binärzahlen umwandeln",
- )
- convert.add_argument(
- "integer", type=int, help="Ganzzahl zur Konvertierung nach binär"
- )
- file.add_argument(
- "file", type=FileType("r", encoding="utf8"), help="Datei einleesn"
- )
- file.add_argument("-s", action="store_true", help="Sortieren")
- file.add_argument("-r", action="store_true", help="Absteigend sortieren")
- file.add_argument("-u", action="store_false", help="Ungültige Zeilen anzeigen")
- return parser.parse_args()
- def convert(value):
- return f"{value:0b}"
- def show_file(file, sort, reverse, skip_invalid):
- values = []
- for line in file:
- try:
- value = int(line)
- except ValueError:
- if not skip_invalid:
- print(line, end="")
- continue
- if sort:
- index = bisect(values, value)
- values.insert(index, value)
- else:
- print(convert(value))
- if sort and reverse:
- values = reversed(values)
- if sort:
- for value in values:
- print(convert(value))
- def main(args):
- """
- Main program
- """
- if "integer" in args:
- print(convert(args.integer))
- elif "file" in args:
- show_file(args.file, args.s, args.r, args.u)
- if __name__ == "__main__":
- args = get_args()
- sys.exit(main(args))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement