#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