Найти - Пользователи
Полная версия: При помощи argparse передать в кач. аргументов произвольное число кортежей
Начало » Центр помощи » При помощи argparse передать в кач. аргументов произвольное число кортежей
1
vladimir_vl_vlad
Есть функция которая принимает в качестве аргументов произвольное число кортежей (каждый кортеж содержит три целых числа), не могу понять как передать ей эти аргументы из командной строки при помощи модуля 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)

Команда в терминале примерно такая:
python argparse_probe.py –get_values 11 22 33
ну т.е. если из командной строки предается не 3, а 6 чисел, то они должны передаться в функцию как 2 кортежа по 3 числа. Короче, тут я в затруднении, буду рад помощи.
py.user.next
Это не надо в 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)]
>>>
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB