Python3 умножать и добавлять в список.

#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]