[Tutor] How inefficient is this code?

Alex Kleider akleider at sonic.net
Thu May 8 02:32:12 CEST 2014


On 2014-05-07 16:27, C Smith wrote:

> #sum all even fib seq integers under 4 million
> fibs = [1,2]
> sum = 0
> while fibs[-1] < 4000000:
>     nexty = fibs[-1] + fibs[-2]
>     fibs.append(nexty)
> 
> for xer in fibs:
>     if xer%2 == 0:
>         sum += xer
> print sum
> 
> This gets the correct solution, but what would be ways to improve
> speed or use more complicated parts of Python to do the same thing.
> Thanks in advance

I think you could eliminate the second part, could you not, by inserting 
the (slightly modified) if statement into the while statement?
while fibs[-1] < 4000000:
     nexty = fibs[-1] + fibs[-2]
     if nexty%2 ==0:
         sum += nexty
     fibs.append(nexty)

Also you might want to initialize 'sum' to 1 rather than 0 since the 
second element in your 'fibs' won't get counted.




More information about the Tutor mailing list