Как вернуть позиционные аргументы с нечетными индексами?
Напишите функцию, которая принимает на вход неограниченное количество позиционных и именованных аргументов, в качестве результата функция должна возвращать только позиционные аргументы с нечетными индексами и именнованные, значения которых являются строками. Проверить на примере:
func_7(1, 2, 3, 4, 5, 6, 7, 8, a = 'Hello', b = ',', c = 'word', d = '!', f = 4)
def function1(*arg, **args):
arg1 = []
arg2 = []
for i in range(arg):
if i%2 != 0:
arg1.append(i)
for j in args:
if type(args[j] != int):
arg2.append(args[j])
print(arg2)
function1(1, 2, 3, 4, 5, 6, 7, 8, a = 'Hello', b = ',', c = 'word', d = '!', f = 4)
Ответы (1 шт):
Автор решения: Maksim Alekseev
→ Ссылка
Позиционные аргументы принято называть args, а именованные kwargs.
В вашем решении проблема в двух строках:
for i in range(arg):
необходимо передавать в range длину списка:
for i in range(len(arg)):
и необходимо вынести проверку на число из скобок:
if type(args[j]) != int:
Я бы решил вот так:
def function1(*args, **kwargs):
pos = [num for i, num in enumerate(args) if i % 2 == 0]
kw = [elem for elem in kwargs.values() if isinstance(elem, str)]
return pos + kw
print(function1(1, 2, 3, 4, 5, 6, 7, 8, a = 'Hello', b = ',', c = 'word', d = '!', f = 4))
Вывод:
[1, 3, 5, 7, 'Hello', ',', 'word', '!']