FAQ: Loops & Iterators - The 'Until' Loop

This community-built FAQ covers the “The ‘Until’ Loop” exercise from the lesson “Loops & Iterators”.

Paths and Courses
This exercise can be found in the following Codecademy content:

Learn Ruby

FAQs on the exercise The ‘Until’ Loop

There are currently no frequently asked questions associated with this exercise – that’s where you come in! You can contribute to this section by offering your own questions, answers, or clarifications on this exercise. Ask or answer a question by clicking reply (reply) below.

If you’ve had an “aha” moment about the concepts, formatting, syntax, or anything else with this exercise, consider sharing those insights! Teaching others and answering their questions is one of the best ways to learn and stay sharp.

Join the Discussion. Help a fellow learner on their journey.

Ask or answer a question about this exercise by clicking reply (reply) below!

Agree with a comment or answer? Like (like) to up-vote the contribution!

Need broader help or resources? Head here.

Looking for motivation to keep learning? Join our wider discussions.

Learn more about how to use this guide.

Found a bug? Report it!

Have a question about your account or billing? Reach out to our customer support team!

None of the above? Find out where to ask other questions here!

In this exersise counter is beeing set to 1. I have to fill in a loop that stops at 11. Thats al ok. But the thing i dont understand ist that we "puts"counter on line 4. And after line 4 we set counter to counter= counter+1.

How is it possible that this get printed in the console while at the time the puts command was not given?

Line 4’s “puts counter” executes the variable already defined in Line 1 “counter = 1”.

The subsequent “counter = counter + 1” is applied to returns thereafter, incrementing each subsequent interation of “counter” by the value of “1”.

“counter = counter + 1” can also (instead) be written as “counter += 1” for the same result.

2 Likes

It did it again.

Try,

puts counter.round(1)

Hi @rrreddd :slight_smile:

I tried to run your code by following the instructions of the exercise:

On line 2, fill in the __ blank so that the loop breaks when counter is greater than 10.

So, the following code:

counter = 1
until counter > 10
  puts counter += 1
end

is displayed by the console like so:

2
3
4
5
6
7
8
9
10
11

Data number 11 is also included , despite the fact we want to exclude it.
Therefore, in this case, I think that when using counter = counter += 1 we should also change the comparison operator to >= or ==, like so:

counter = 1
until counter >= 10
  puts counter += 1
end

Which returns:

2
3
4
5
6
7
8
9
10

Can someone confirm this?

Your code does work, however, by using

puts counter += 1

You don’t include the counters original value of 1. Your puts statement should instead be on the line above:

counter = 1
until counter > 10
  puts counter
  counter += 1
end

This way you can use > instead of >= and still get the 1-10.

2 Likes

By the same token, what if counter = 0, initially?

puts expression

The evaluation of expression takes place first, and since += is an in-place operation it increments counter.

counter = 0 
until counter > 10
    puts counter += 1
end
1
2
3
4
5
6
7
8
9
10

counter = 1

until counter > 10

puts counter

Add code to update ‘counter’ here!

counter = counter + 1

end

I’m confused why this stops at 10 even though its written to evaluate that the counter is to stop unless its greater than ten. It prints out 2-10 (since it started at one) but why doesn’t it stop at 11. Any thoughts on this? Just want to make sure I fully understand the basics.