Найти - Пользователи
Полная версия: Подскажите в чем ошибка
Начало » Python для новичков » Подскажите в чем ошибка
1 2
avldokuchaev
Здравствуйте.
Подскажите, пожалуйста, где ошибка в коде:
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)
JOHN_16
Найти n- ную степень элемента с индексом n.
def index_power(array, n):
    return array[n] ** n
avldokuchaev
Найти n- ную степень элемента с индексом n.
def index_power(array, n):
return array ** n
Вы имеете ввиду поменять букву i на n в 9 строке?
Если да, то так тоже не работает.
В терминале пишет ошибка синтаксиса.
На сайте, где я нашел это задание выдает, что не верно. Сайт checkio.org
avldokuchaev
Наконец решил. Работающий код:
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)
FishHook
Ваш код неверен, else в данном случае - часть оператора for, и оно отработает не так, как вы ожидаете.
Ну и вообще непонятно, зачем тут цикл? Решение вам дал JOHN_16, просто добавьте туда проверку на существование n-го элемента.
avldokuchaev
Тогда давайте обсудим более подробно. Почему мой код сработает не так как я ожидаю? Вот условие задания:
Дан массив с положительными числами и число N. Вы должны найти N-ую степень элемента в массиве с индексом N. Если N за границами массива, тогда вернуть -1.
avldokuchaev
Вот так тоже работает:
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))
FishHook
avldokuchaev
Почему мой код сработает не так как я ожидаю?
Потому что вы либо плохо читали спецификацию языка
https://docs.python.org/2/reference/compound_stmts.html#for
либо применяете else не в том месте.
FishHook
avldokuchaev
Вот так тоже работает:
но блин, это же совсем другой код
avldokuchaev
Я же только учусь. Поэтому и хочу чтобы мне об'яснили популярно где ошибка. Спецификацию перечитаю. Просто оба кода выдают один и тотже результат.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB