Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 21, 2013 19:57:48

Denis_Yakovenko
Зарегистрирован: 2013-09-28
Сообщения: 20
Репутация: +  0  -
Профиль   Отправить e-mail  

Являеться ли последовательность геометрической прогрессией?

Нужно запрограммировать функцию, которая вернёт True, если последовательность в списке является геометрической прогрессией, и False, если нет.

Подскажите, как сие чудо решить?

Отредактировано Denis_Yakovenko (Окт. 21, 2013 19:59:40)

Офлайн

#2 Окт. 21, 2013 20:07:13

Budulianin
От:
Зарегистрирован: 2011-10-18
Сообщения: 1218
Репутация: +  33  -
Профиль   Отправить e-mail  

Являеться ли последовательность геометрической прогрессией?

Denis_Yakovenko
сие чудо
Чудо это ты :D

Прочитай статью и подумай, как бы ты это сделал без Python. А потом сделай на Python



Офлайн

#3 Окт. 21, 2013 20:16:26

Denis_Yakovenko
Зарегистрирован: 2013-09-28
Сообщения: 20
Репутация: +  0  -
Профиль   Отправить e-mail  

Являеться ли последовательность геометрической прогрессией?

Budulianin
Дело в том, что я уже читал эту статью, и не только её. Если бы я знал как решить или хотябы имел идею, я бы не просил помощи

Офлайн

#4 Окт. 21, 2013 20:19:53

Budulianin
От:
Зарегистрирован: 2011-10-18
Сообщения: 1218
Репутация: +  33  -
Профиль   Отправить e-mail  

Являеться ли последовательность геометрической прогрессией?

Denis_Yakovenko
BudulianinДело в том, что я уже читал эту статью, и не только её. Если бы я знал как решить или хотябы имел идею, я бы не просил помощи

Плохо значит читал.

Вот там есть пример геометрической прогрессии
2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192  прогрессия со знаменателем 2 из тринадцати членов.

И такое свойство написано хорошее
Своё название прогрессия получила по своему характеристическому свойству
И ниже равенство



Отредактировано Budulianin (Окт. 21, 2013 20:21:27)

Офлайн

#5 Окт. 21, 2013 20:27:46

Denis_Yakovenko
Зарегистрирован: 2013-09-28
Сообщения: 20
Репутация: +  0  -
Профиль   Отправить e-mail  

Являеться ли последовательность геометрической прогрессией?

Budulianin

def gprogrestion (lst):
    for x in lst:
        if x == int:
            lst[1]/lst[0] = n
            if lst[2] == lst[0]*n:
                return True
        else:
            return False
Вот моя попытка написать код. но похоже, найти знаменатель прогрессии нужно не так…

Офлайн

#6 Окт. 21, 2013 20:31:18

Denis_Yakovenko
Зарегистрирован: 2013-09-28
Сообщения: 20
Репутация: +  0  -
Профиль   Отправить e-mail  

Являеться ли последовательность геометрической прогрессией?

Budulianin
Или еще, как вариант, создать цикл, который будет проверять, равно ли a1/a2 и a2/a1 и так далее
но только не знаю, как реализовать

Офлайн

#7 Окт. 21, 2013 20:35:06

Budulianin
От:
Зарегистрирован: 2011-10-18
Сообщения: 1218
Репутация: +  33  -
Профиль   Отправить e-mail  

Являеться ли последовательность геометрической прогрессией?

Denis_Yakovenko

Я же тебе написал про характеристическое свойство, это равенство должно выполняться, для каждого члена.
Понятно?



Офлайн

#8 Окт. 21, 2013 20:41:35

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

Являеться ли последовательность геометрической прогрессией?

lst = [2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192]
n = lst[1]/lst[0]
start = lst[0]
def get_progress(start, n):
    val = start
    while 1:
        val *= n
        yield val
progress = get_progress(start, n)
success = True
for x in lst[1:]:
    if x != progress.next():
        success = False
        break
print success



Офлайн

#9 Окт. 21, 2013 20:43:00

Budulianin
От:
Зарегистрирован: 2011-10-18
Сообщения: 1218
Репутация: +  33  -
Профиль   Отправить e-mail  

Являеться ли последовательность геометрической прогрессией?

FishHook
Ну вот, взял всё испортил.



Офлайн

#10 Окт. 21, 2013 20:47:47

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

Являеться ли последовательность геометрической прогрессией?

lst = [2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192]
l = lst[-1::-1]
s = map(lambda x: x[0]/x[1], zip(*[iter(l)]*2))
if not len(lst):
    s += lst[0]
print len(set(s)) == 1



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version