Найти - Пользователи
Полная версия: Являеться ли последовательность геометрической прогрессией?
Начало » Python для новичков » Являеться ли последовательность геометрической прогрессией?
1 2 3 4 5
Denis_Yakovenko
Нужно запрограммировать функцию, которая вернёт True, если последовательность в списке является геометрической прогрессией, и False, если нет.

Подскажите, как сие чудо решить?
Budulianin
Denis_Yakovenko
сие чудо
Чудо это ты :D

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

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

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

И такое свойство написано хорошее
Своё название прогрессия получила по своему характеристическому свойству
И ниже равенство
Denis_Yakovenko
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
Вот моя попытка написать код. но похоже, найти знаменатель прогрессии нужно не так…
Denis_Yakovenko
Budulianin
Или еще, как вариант, создать цикл, который будет проверять, равно ли a1/a2 и a2/a1 и так далее
но только не знаю, как реализовать
Budulianin
Denis_Yakovenko

Я же тебе написал про характеристическое свойство, это равенство должно выполняться, для каждого члена.
Понятно?
FishHook
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
Budulianin
FishHook
Ну вот, взял всё испортил.
FishHook
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
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