Обменять элементы двух массивов на месте так, чтобы их новый контент также был обращен вспять
Это тестовая функция
exchange_with(a, b)
Test.assert_equals(a, ["c", "b", "a"])
Test.assert_equals(b,['7', '6', '5', '4', '3', '2', '1']
Дан вот такой пример:
# before
my_list = ['a', 'b', 'c']
other_list = [1, 2, 3]
exchange_with(my_list, other_list)
# after
my_list == [3, 2, 1]
other_list == ['c', 'b', 'a']
Задача написать функцию! Вот моё решение но тест на тестируемой системе не прохожу
a = ["1", "2", "3", "4", "5", "6", "7"]
b = ['a', 'b', 'c']
def exchange_with(a, b):
a, b = b[::-1], a[::-1]
return f"{a},\n {b}"
print(exchange_with(a, b))
Вот что выдаёт print()
['c', 'b', 'a']
['7', '6', '5', '4', '3', '2', '1']
Подскажите где моя ошибка. С уважением Андрей.
Ответы (2 шт):
Автор решения: Durtanyan
→ Ссылка
Попробуйте вот так:
a = ["1", "2", "3", "4", "5", "6", "7"]
b = ['a', 'b', 'c']
def exchange_with(a, b):
a, b = b, a
a.reverse()
b.reverse()
return a, b
c = exchange_with(a, b)
for i in c:
print(i)
Но неплохо бы конечный ответ посмотреть. Что тест вернуть должен. Если Вам нужно развернуть именно срезом, то тогда в return, уберите запятую и после переноса уберите отступ.
Автор решения: Igor
→ Ссылка
Ваша ошибка в том, что снаружи функции exchange_with массивы a и b не изменились. Вам внутри функции надо менять содержимое существующих массивов a и b, а не присваивать этим переменным (параметрам) ссылки на новые массивы.
def exchange_with(a, b):
tempA = a.copy()
tempB = b.copy()
a.clear()
b.clear()
# insert items from tempB into a in reverse order
# insert items from tempA into b in reverse order