arithmetic or geometric sequence in python -
do know how can write code in python including function takes list , find out if arithmetic or geometric? wrote code boolean , doesn't arithmetic or geometric , has output.
l=[int(x) x in input("please enter list:").split()] def arithemetic(l): i=1 if(l[0]+l[i]==l[i+1]): return true i+=1 def geometric(l): i=1 if(l[0]*l[i]==l[i+1]): return true i+=1 def isarithemeticorgeometric(l): if(arithemetic(l)): print(arithemetic(l)) elif(geometric(l)): print(geometric(l)) print(isarithemeticorgeometric(l))
there few mistakes here, try go on them 1 one
asking list
l=[int(x) x in input("please enter list:").split()]
this throw valueerror
when gets fed non-numeric type. round float
int
problem 1 can solve surrounding while
loop , try-catch block
while true: try: l=[int(x) x in input("please enter list:").split()] break except valueerror: pass
the problem int
can solved changing int(x)
float(x)
when using float
, beware of the nature of floating point numbers
checking arithmetic , geometric
in solution, i
never gets incremented, checks first 2 values. borrowing @dex-ter's comment can change to
def is_arithmetic(l): return all((i - j) == (j - k) i, j, k in zip(l[:-2], l[1:-1], l[2:]))
for explanation why on how works, check background of list splicing , zip
for is_geometric
can adapt solution.
this excellent example unittests
would've made error clear
assert is_geometric((1,2)) assert is_geometric((1,2, 4)) assert is_geometric((1,2, 4, 8)) assert not is_geometric((1,2, 4, 9)) try: is_geometric((1, 2, 'a')) raise assertionerror('should throw typeerror') except typeerror: pass
the result
your result prints true or false because that's tell program do. isarithemeticorgeometric()
has no return statement, returns none
, not printed. , output comes print(arithemetic(l))
or print(geometric(l))
a possible solution here this:
def is_arithmetic_or_geometric(l): if is_arithmetic(l): return 'arithmetic' if is_geometric(l): return 'geometric' print(is_arithmetic_or_geometric(l))
Comments
Post a Comment