Форум сайта python.su
Есть функция которая принимает в качестве аргументов произвольное число кортежей (каждый кортеж содержит три целых числа), не могу понять как передать ей эти аргументы из командной строки при помощи модуля argparse, у меня получается передать только один кортеж
def func(*argms): for tpl in argms: for num in tpl: print(num) parser = argparse.ArgumentParser() parser.add_argument('--get_values', nargs='+', type=int) args = parser.parse_args() my_tuple = tuple(args.get_values) func(my_tuple)
Офлайн
Это не надо в argparse делать, это надо просто через argparse принять их все в качестве списка чисел непрерывного, на этом argsparse свою функцию выполнил (он может проверить длину списка и выдать ошибку, если она не кратна трём), а потом этот непрерывный список чисел внутри кода уже берётся и нарезается по три элемента списка.
>>> def slice3(lst): ... i, length = 0, len(lst) ... while i + 3 <= length: ... a, b, c = lst[i], lst[i+1], lst[i+2] ... i += 3 ... yield a, b, c ... >>> list(slice3([])) [] >>> list(slice3([1])) [] >>> list(slice3([1, 2])) [] >>> list(slice3([1, 2, 3])) [(1, 2, 3)] >>> list(slice3([1, 2, 3, 4])) [(1, 2, 3)] >>> list(slice3([1, 2, 3, 4, 5])) [(1, 2, 3)] >>> list(slice3([1, 2, 3, 4, 5, 6])) [(1, 2, 3), (4, 5, 6)] >>> list(slice3([1, 2, 3, 4, 5, 6, 7])) [(1, 2, 3), (4, 5, 6)] >>>
Отредактировано py.user.next (Авг. 21, 2023 06:05:43)
Офлайн