Нужна помощь в устранении ошибок
Дали задание на дз с 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 шт):
вы уже задавали этот вопрос вчера
еще раз повторю:
вы используете НЕ СРАВНЕНИЕ, а ПРИСВАИВАНИЕ
if some_list[i] % 3 = 0: print(some_list[i] % 3)
вместо двойного == используете одинарное =
в случае кратности элемента 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)
вы работаете с числами, но в списке в вашем примере вы передаете и строки:
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)