Форум сайта python.su
BudulianinИзвини, я не специально
FishHookНу вот, взял всё испортил.
Офлайн
Budulianin
код FishHook'а не работает, и это не то, что мне нужно. Я буду очень благодарен, если Вы еще пару раз попробуете натолкнуть меня на решение, чтобы я сам понял, что написал.
Итак, вот, до чего я пока что дошел:
def gprogrestion(lst): from math import sqrt if lst == []: return [] else: if abs(lst[n]) == sqrt(lst[n-1]*lst[n+1]): return True else: return False
Офлайн
Denis_YakovenkoТоропился видать :)
код FishHook'а не работает
Denis_YakovenkoПо разному можно решить эту задачу
Насколько мне кажется, осталось лишь одно - каким-то образов определить n
Отредактировано Budulianin (Окт. 21, 2013 21:05:57)
Офлайн
Denis_YakovenkoНет
Я прав или нет?
Отредактировано Budulianin (Окт. 21, 2013 21:09:01)
Офлайн
Budulianin
def gprogrestion(lst): from math import sqrt if lst == []: return ('Empty list') else: for x in lst: if abs(lst[x]) == sqrt(lst[x-1]*lst[x+1]): return True else: return False
Отредактировано Denis_Yakovenko (Окт. 21, 2013 21:10:30)
Офлайн
def check_prog(lst): if len(lst) >= 3 and lst[1] != 0: for i in xrange(1, len(lst)-1): if not pow(lst[i-1] * lst[i+1], 0.5) == abs(lst[i]): return False return True elif len(lst) == 2 and all(lst): return True if check_prog([1, 2, 4, 8]): print('this is a geometric progression') else: print('this is not a geometric progression')
Отредактировано Budulianin (Окт. 21, 2013 21:54:26)
Офлайн
#!/usr/bin/env python3 def isgeompro(lst): """Test whether the list is a geometric progression.""" if not (len(lst) >= 2 and lst[0] and lst[1]): return False q = lst[1] / lst[0] p = lst[1] for e in lst[2:]: # в p - элемент геом. прогрессии с коэфф. q if e / p == q: p = e else: return False return True
#!/usr/bin/env python3 from itertools import islice def isgeompro(lst): """Test whether the list is a geometric progression.""" if not (len(lst) >= 2 and lst[0] and lst[1]): return False q = lst[1] / lst[0] p = lst[1] for e in islice(lst, 2, None): # в p - элемент геом. прогрессии с коэфф. q if e / p == q: p = e else: return False return True
[1, 2, 3]
Отредактировано py.user.next (Окт. 22, 2013 21:49:23)
Офлайн
py.user.next
py.user.nextДа он и не проверял наверно, главное идею видно.
у FishHook'а первая выдаёт ошибку с индексом, а вторая вообще истину на
Отредактировано Budulianin (Окт. 21, 2013 23:19:56)
Офлайн
[guest@localhost timecmp]$ ./timecmp.py
[1.0042134939999414, 1.025258840999868, 1.007287111000096]
[0.9715859099999307, 0.9866435950000323, 0.9697419239998908]
[0.9852825709999706, 0.988240076000011, 1.010458663999998]
[guest@localhost timecmp]$
lst[2:]
islice(lst, 2, None)
Отредактировано py.user.next (Окт. 22, 2013 21:50:23)
Офлайн
py.user.nextfixed
а вторая вообще истину на
lst = [2, 4] if len(lst) < 2: raise ValueError("len < 2") l = lst[-1::-1] s = map(lambda x: float(x[0])/x[1], zip(*[iter(l)]*2)) if len(lst) % 2: s.append(lst[0]) print len(set(s)) == 1
Офлайн