Форум сайта python.su
0
Здравствуйте.
Подскажите, пожалуйста, где ошибка в коде:
def index_power(array, n): """ Найти n- ную степень элемента с индексом n. """ for i in range(len(array)): return(i) if n == i: return(array[i]**n) elif n not in len(array): return(-1) return None index_power([1, 2, 3, 4], 2) index_power([1, 3, 10, 100], 3) index_power([0, 1], 0) index_power([1, 2], 3)
Офлайн
221
Найти n- ную степень элемента с индексом n.
def index_power(array, n): return array[n] ** n
Офлайн
0
Найти n- ную степень элемента с индексом n.Вы имеете ввиду поменять букву i на n в 9 строке?
def index_power(array, n):
return array ** n
Офлайн
0
Наконец решил. Работающий код:
def index_power(array, n): """ Найти n- ную степень элемента с индексом n. """ for i in range(len(array)): if i == n: return array[i]**n else: return -1 return None index_power([1, 2, 3, 4], 2) index_power([1, 3, 10, 100], 3) index_power([0, 1], 0) index_power([1, 2], 3)
Офлайн
568
Ваш код неверен, else в данном случае - часть оператора for, и оно отработает не так, как вы ожидаете.
Ну и вообще непонятно, зачем тут цикл? Решение вам дал JOHN_16, просто добавьте туда проверку на существование n-го элемента.
Офлайн
0
Тогда давайте обсудим более подробно. Почему мой код сработает не так как я ожидаю? Вот условие задания:
Дан массив с положительными числами и число N. Вы должны найти N-ую степень элемента в массиве с индексом N. Если N за границами массива, тогда вернуть -1.
Офлайн
0
Вот так тоже работает:
def index_power(array, n): if n in range(len(array)): return array[n]**n else: return -1 return None print(index_power([1, 2, 3, 4], 2)) print(index_power([1, 3, 10, 100], 3)) print(index_power([0, 1], 0)) print(index_power([1, 2], 3))
Офлайн
568
avldokuchaevПотому что вы либо плохо читали спецификацию языка
Почему мой код сработает не так как я ожидаю?
Офлайн
568
avldokuchaevно блин, это же совсем другой код
Вот так тоже работает:
Офлайн
0
Я же только учусь. Поэтому и хочу чтобы мне об'яснили популярно где ошибка. Спецификацию перечитаю. Просто оба кода выдают один и тотже результат.
Офлайн