В вашем коде есть некоторые синтаксические ошибки в основной функции около input
, это должно исправить:
if __name__ == '__main__':
input_numbers = []
input_n = input()
input_numbers = [int(x) for x in input_n.split()]
print(max_pairwise_product(input_numbers))
Насчет logi c, подумайте, что произойдет, если у вас 3 2 1 0
. Поскольку максимальное значение будет заменено на первой итерации, second
получит текущее значение largest
, то есть 0
, и оно никогда не будет заменено другим. Чтобы исправить это, вы должны сначала проверить, больше ли значение, чем второе, и только после этого проверить, больше ли оно largest
. Следующий фрагмент должен решить вашу проблему:
def max_pairwise_product(numbers):
n = len(numbers)
largest = float('-inf')
second = float('-inf')
for i in range(0, n):
if numbers[i] > second:
if numbers[i] > largest:
second = largest
largest = numbers[i]
else:
second = numbers[i]
max_product = largest * second
return max_product
Я также изменил значения largest
и second
, чтобы запускать их при отрицательной бесконечности.