Нужна помощь в устранении ошибок

Дали задание на дз с HyperSkill: устранить все ошибки в коде так, чтобы он стал рабочим.

If the function is called in the following way: print_list([1, '2', 3, '4']), then the output should be like this:

2
0
4

Код:

def print_list(some_list):

    while i < range(len(some_list)):
        if some_list[i] % 2 == 0:
            print(some_list[i])
        if some_list[i] % 3 = 0:
            print(some_list[i] % 3)
        i += 1

Я так понимаю, что нужно использовать цикл for после определения функции и исправить 3 == 0. Больше идей нет. Буду рада любой помощи.


Ответы (1 шт):

Автор решения: Zhihar

вы уже задавали этот вопрос вчера

еще раз повторю:

  1. вы используете НЕ СРАВНЕНИЕ, а ПРИСВАИВАНИЕ

     if some_list[i] % 3 = 0:
         print(some_list[i] % 3)
    

вместо двойного == используете одинарное =

  1. в случае кратности элемента 6ти, у вас будет выполняться сразу 2 условия и будет выводиться сразу 2 элемента

     if some_list[i] % 2 == 0:
         print(some_list[i])
     if some_list[i] % 3 == 0:
         print(some_list[i] % 3)
    

если этого не требуется, то надо использовать elif:

    if some_list[i] % 2 == 0:
        print(some_list[i])
    elif some_list[i] % 3 == 0:
        print(some_list[i] % 3)
  1. вы работаете с числами, но в списке в вашем примере вы передаете и строки:

     print_list([1, '2', 3, '4']),
    

поэтому, в зависимости от задачи, предположу, что надо перевести сначала строки в числа (любым способом)

    some_list_new = list(map(int, some_list))

или

    if int(some_list[i] % 2) == 0:
        print(some_list[i])
    elif int(some_list[i] % 3) == 0:
        print(some_list[i] % 3)

правда если передавать будут чистые строки (не числа в виде строки), то программа будет падать и надо использовать или try или предварительную проверку на число

или не рассматривать не числа (не знаю условия задачи, точно сказать не могу), например

    if isinstance(some_list[i], int) and some_list[i] % 2 == 0:
        print(some_list[i])
    elif isinstance(some_list[i], int) and some_list[i] % 3 == 0:
        print(some_list[i] % 3)
→ Ссылка