Программа курса:
Разбор задачи: Знак произведения массива
Предложенный нами код решения:
def signFunc(nums):
"""
Определяет знак произведения всех элементов массива nums.
:param nums: Список целых чисел
:return: 1, если произведение положительное; -1, если отрицательное; 0, если произведение равно нулю
"""
if 0 in nums:
return 0 # Если есть ноль, произведение будет равно 0
negative_count = sum(1 for num in nums if num < 0) # Считаем количество отрицательных чисел
return -1 if negative_count % 2 != 0 else 1 # Если количество отрицательных чисел нечетное, произведение отрицательное
Заголовок функции
def signFunc(nums):
"""
Определяет знак произведения всех элементов массива nums.
"""
Функция принимает список целых чисел nums и возвращает:
1, если произведение положительное.-1, если произведение отрицательное.0, если хотя бы один элемент равен нулю (произведение будет равно нулю).
Проверка наличия нуля
if 0 in nums:
return 0 # Если есть ноль, произведение будет равно 0
Первым делом функция проверяет, содержит ли массив nums хотя бы один ноль.
- Если ноль найден, произведение всех элементов однозначно равно нулю, и функция возвращает
0.
Подсчет отрицательных чисел
negative_count = sum(1 for num in nums if num < 0)
Здесь функция подсчитывает, сколько отрицательных чисел есть в массиве nums:
- Генератор
1 for num in nums if num < 0пробегается по всем элементам массива. - Для каждого отрицательного числа добавляется
1в суммирующую переменнуюnegative_count.
Определение знака произведения
return -1 if negative_count % 2 != 0 else 1
На этом шаге функция использует свойство произведения чисел:
- Если количество отрицательных чисел (
negative_count) нечетное, то произведение будет отрицательным, и возвращается-1. - Если количество отрицательных чисел четное, то произведение будет положительным, и возвращается
1.
Пример работы функции
Ввод: nums = [-1, -2, -3, -4, 3, 2, 1]
- Проверка на наличие нуля: нулей нет.
- Подсчет отрицательных чисел:
negative_count = 4(числа-1, -2, -3, -4). - Количество отрицательных чисел четное (
4 % 2 == 0), значит, результат:1.
Ввод: nums = [1, 5, 0, 2, -3]
- Проверка на наличие нуля: ноль найден, результат:
0.
Ввод: nums = [-1, 1, -1, 1, -1]
- Проверка на наличие нуля: нулей нет.
- Подсчет отрицательных чисел:
negative_count = 3(числа-1, -1, -1). - Количество отрицательных чисел нечетное (
3 % 2 != 0), результат:-1.
Вы должны Войти или Зарегистрироваться чтобы оставлять комментарии