# How can we exit a loop?

This series of code worked after I took the elif statements out of the for loop and changed them to if statements.

Thank you for pointing me in the right directions

``````def over_nine_thousand(lst):
total =[]
for i in lst:
total.append(i)
if sum(total) >= 9000:
return sum(total)
if len(lst) == 0:
return 0
if sum(lst) < 9000:
return sum(lst)
``````
1 Like

âŚWhatâs the sum of an empty list?
And, if youâve already determined that the total sum is at least 9000, do you need to test again whether itâs less than 9000?

Doesnât it say OVER 9000? You seem to accept equal as well

Iâm pointing out a whole lot of really obvious stuff that youâre very capable of reasoning about - most of the mistakes here come from doing reasoning that youâre already great at, but youâre doing it after youâve already written it. If you reason out what should happen before writing it then those ideas are still in a form where you know exactly how to deal with them

You might for example start by writing out what should happen in plain english. yes itâs a bit silly but also forces you to go through it and mainly I only say write because thatâs the easiest way to explain it, the important thing is thinking it through first

turns out we humans are pretty good at doing these manually, so thatâs something you can use to process the problem before you move on to unfamiliar territory (code)

2 Likes

The directions on the exercise:
The function should sum the elements of the list until the sum is greater than `9000` . When this happens, the function should return the sum. If the sum of all of the elements is never greater than `9000` , the function should return total sum of all the elements. If the list is empty, the function should return `0` .

I wrote if statements that coincided with what the directions were asking. My experience is only a few months now with coding so I am quite literal when following directions.

I removed the equal sign on my condition.

1 Like

You may also find that if you do this manually, you wonât be trying to remember the individual numbers but instead only the current sum.

You would catch yourself doing this inefficient thing if you did it manually, yes?

Programming should really stay in that part of your reasoning. Same old every-day logic applies.

1 Like

I do write some of my code manually because it helps me think(especially my mistakes, when I am close to desired output).

If I donât recognize something it is probably because I have not conditioned my brain through experience to do so. as I am still learning (albeit, by myself), getting this feedback is important.

1 Like

Not sure why the hint asks us to use break, when the following seems to work:

``````def over_nine_thousand(lst):
lst_sum = 0
for i in lst:
if (lst_sum < 9000):
lst_sum += i
return lst_sum
``````
1 Like

If I give that something similar to a list that is infinite, then it wonât terminate since it doesnât exit early

1 Like

Isnât that what the line

if (lst_sum < 9000):

checks for?

1 Like

The loop still continues.

Hereâs such a value that you can try:

``````from itertools import repeat

over_nine_thousand(repeat(1))
``````

edit:
oops, should be `repeat(1)`, not `repeat([1])`, apparently. Thatâs what I get for posting things without testing them.

1 Like

Oh and you have a bug. Probably, anyway, didnât actually try. This should result in 9001:

``````print(over_nine_thousand([1] * 10000))
``````
1 Like

Hello! First of all, the return is wrongly intended. It should be exactly below the if statement. But even if you do this , the code will display [8000, 900, 120] as a solution. This is because, you chose to return a list, instead of a variable.

total =

Considering what append.() does, can you now unterstand the error?

I please you to correct me if Iâm wrong, i consider myself as an absolute beginner and itâs my first time advising someone else.

Hope i helped you. Happy coding!