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
Denis_YakovenkoНет
Я прав или нет?
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
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')
#!/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Да он и не проверял наверно, главное идею видно.
у FishHook'а первая выдаёт ошибку с индексом, а вторая вообще истину на
[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.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