Как мне заменить None на -1?

#python

#python

Вопрос:

Итак, задача состоит в том, чтобы умножить n-ю степень элемента в массиве на индекс n. Если n находится за пределами массива, тогда верните -1. Я не могу понять, как вернуть -1. Извините за этот глупый вопрос от stupid me.

 def index(array, n):
    for j,i in enumerate(array):
        if j == n:
            res = i**n
            return res
            if res == None:
                return -1
  

Ответ №1:

Попробуйте это:

 def index(array, n):
    if len(array)-1<n:
        return -1
    else:
        return array[n]**n
  

Ответ №2:

Вряд ли вам нужно ходить по «массиву» (я не знаю, каков фактический тип, но я предполагаю, что он индексируемый).

 def index(array, n):
    try:
        v = array[n]
    except IndexError:
        return -1
    return v**n * n
  

Я не знаю, где, по вашему мнению None , может возникнуть результат. Операция индексации, выходящая за рамки, вызывает исключение.

Комментарии:

1. Подобные тесты: Test.assert_equals(индекс([1, 2, 3, 4],2),9) (9 является результатом, который должен произойти) Test.assert_equals(индекс([1, 3, 10, 100],3),1000000) (1000000 это результатчто также должно произойти) Test.assert_equals(индекс([1, 3, 10, 100],9)) — вот -1

2. О, я понял. Просто без последнего «n» все работает. Спасибо.

Ответ №3:

Вы можете использовать тот факт, что индексация, превышающая длину списка, приведет к увеличению IndexError .

Этот код должен работать (предполагая, что вы имеете в виду, что n = 1 — это первая позиция):

 def index(array, n):
    try:
        return array[n - 1] ** n
    except IndexError:
        return -1