ruby中的while语句如何工作?

时间:2017-10-21 17:23:53

标签: ruby-on-rails ruby

我正在尝试学习红宝石,我发现了一些奇怪的东西。当我的第n个元素达到101时,即使它说出来也不会离开循环 while n < 101。有人可以解释为什么会这样吗?

n = 0
sum = 0
while n < 101
        n = n +1
        sum = sum + n
        puts "The count is #{n}"
        puts "The sum is #{sum}"
end
puts "The sum is: #{sum}"

3 个答案:

答案 0 :(得分:4)

如@ sagarpandya82所述,

  

看看你把赌注放在哪里“计数是#{n}”。它在你之后   在计数中加一:n = n

要回答你的原始问题(我认为),在你的循环中n为100,然后你加1并达到101然后终止。这就是你最后一次输出是101的原因。

如果你想做100次,你也可以做

sum = 0
100.times do |n|
  sum += n
  puts "the count is: #{n + 1}"
  puts "The sum is: #{sum}"
end

n从0开始,然后转到99(100次)

答案 1 :(得分:1)

您可能会因为打印count is 101而感到困惑,这是因为您在打印之前递增了计数器。

答案 2 :(得分:1)

要清楚......

...较慢

当n达到100时:

while n < 101 # => while 100 < 101 

所以:

n = n + 1    # n += 1 should be better

...是的,循环可以继续。

我们继续:

n = 101

所以,现在:

while n < 101 # => while 101 < 101

我们遵循:

false

...是101

所以我们停止使用n:100的值,而不是{{1}}。