#list #python-3.x #add #multiplication
#Список #python-3.x #Добавить #умножение
Вопрос:
застрял в упражнении и может понадобиться помощь som!
Упражнение: Создайте функцию, которая принимает список:
[123, 4, 125, 69, 155]
в качестве аргумента. Функция должна умножать все четные числа на 1 и добавлять 6 ко всем нечетным числам. Ответ с измененным списком, отсортированным в числовом порядке по убыванию.
мой код до сих пор.
list1 = [123, 4, 125, 69, 155]
def multi():
for num in list1:
if num % 2 == 0:
num * 1
else:
num 6
return list1
В ответе я указываю `def multi():
ответ, который я получаю, таков
[123, 4, 125, 69, 155] <class 'list'>
и правильный ответ [161,131,129,75,4]
кто-нибудь, пожалуйста, может указать мне правильный путь?
Спасибо.
Комментарии:
1. Указывающий правильный путь:
num * 1
ни к чему не привязан.list1
возвращается без каких-либо изменений (хорошая часть заключается в том, что он не изменяется при повторении, но почему он вообще возвращается)
Ответ №1:
Вы изменяете саму переменную цикла num, а не исходный код значения списка, приведенный ниже, который должен выполнить эту работу
list1 = [123, 4, 125, 69, 155]
def multi():
for i,num in enumerate(list1):
if num % 2 == 0:
num *= 1
else:
num = 6
list1[i] = num # modify list value
return sorted(list1)[::-1] # this do sorting then reverse from large to small
Комментарии:
1.[155, 125, 123, 69, 4]
Ответ №2:
Не нужно умножать на 1. просто проверьте, является ли число нечетным, добавьте 6.
list1 = [123, 4, 125, 69, 155]
def multi():
for i,num in enumerate(list1):
if num % 2 != 0:
num =6
list1[i] = num
return sorted(list1)[::-1]