Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 26, 2016 22:06:53

avldokuchaev
Зарегистрирован: 2016-03-21
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

Подскажите в чем ошибка

Здравствуйте.
Подскажите, пожалуйста, где ошибка в коде:

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)

Офлайн

#2 Апрель 26, 2016 22:18:49

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Подскажите в чем ошибка

Найти n- ную степень элемента с индексом n.
def index_power(array, n):
    return array[n] ** n



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#3 Апрель 26, 2016 22:24:42

avldokuchaev
Зарегистрирован: 2016-03-21
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

Подскажите в чем ошибка

Найти n- ную степень элемента с индексом n.
def index_power(array, n):
return array ** n
Вы имеете ввиду поменять букву i на n в 9 строке?
Если да, то так тоже не работает.
В терминале пишет ошибка синтаксиса.
На сайте, где я нашел это задание выдает, что не верно. Сайт checkio.org

Офлайн

#4 Апрель 27, 2016 00:01:37

avldokuchaev
Зарегистрирован: 2016-03-21
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

Подскажите в чем ошибка

Наконец решил. Работающий код:

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)

Офлайн

#5 Апрель 27, 2016 05:33:25

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Подскажите в чем ошибка

Ваш код неверен, else в данном случае - часть оператора for, и оно отработает не так, как вы ожидаете.
Ну и вообще непонятно, зачем тут цикл? Решение вам дал JOHN_16, просто добавьте туда проверку на существование n-го элемента.



Офлайн

#6 Апрель 27, 2016 09:58:22

avldokuchaev
Зарегистрирован: 2016-03-21
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

Подскажите в чем ошибка

Тогда давайте обсудим более подробно. Почему мой код сработает не так как я ожидаю? Вот условие задания:
Дан массив с положительными числами и число N. Вы должны найти N-ую степень элемента в массиве с индексом N. Если N за границами массива, тогда вернуть -1.

Офлайн

#7 Апрель 27, 2016 10:05:23

avldokuchaev
Зарегистрирован: 2016-03-21
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

Подскажите в чем ошибка

Вот так тоже работает:

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))

Офлайн

#8 Апрель 27, 2016 10:06:00

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Подскажите в чем ошибка

avldokuchaev
Почему мой код сработает не так как я ожидаю?
Потому что вы либо плохо читали спецификацию языка
https://docs.python.org/2/reference/compound_stmts.html#for
либо применяете else не в том месте.



Офлайн

#9 Апрель 27, 2016 10:06:44

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Подскажите в чем ошибка

avldokuchaev
Вот так тоже работает:
но блин, это же совсем другой код



Офлайн

#10 Апрель 27, 2016 10:14:57

avldokuchaev
Зарегистрирован: 2016-03-21
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

Подскажите в чем ошибка

Я же только учусь. Поэтому и хочу чтобы мне об'яснили популярно где ошибка. Спецификацию перечитаю. Просто оба кода выдают один и тотже результат.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version