Ruby on rails 打印0到50(含50)?

Ruby on rails 打印0到50(含50)?,ruby-on-rails,ruby,Ruby On Rails,Ruby,为什么此代码不打印0到50(包括0到50) i = 0 until i <= 50 do print i i += 1 end i=0 直到i直到的条件为真时停止执行。因为这从一开始就是真的,什么都没有发生 将更改为直到到时until基本上与while相同,但条件相反。使用 until i > 50 do # ... end 或 只需交换比较运算符 i = 0 until i > 50 do print i i += 1 end 你也可以这样做 i =

为什么此代码不打印0到50(包括0到50)

i = 0
until i <= 50 do
  print i
  i += 1
end
i=0

直到i
直到
的条件为真时停止执行。因为这从一开始就是真的,什么都没有发生

更改为
直到
until
基本上与
while
相同,但条件相反。

使用

until i > 50 do
  # ...
end


只需交换比较运算符

i = 0
until i > 50 do
  print i
  i += 1
end
你也可以这样做

i = 0
while i <= 50 do
  print i
  i += 1
end
i=0
而我Ugh

但是,即使使用
while
仍有51个值被输出:

i = 0
output = []
while i <= 50 do
  output << i
  i += 1
end
output.size # => 51
或:

使用惯用Ruby 其他答案解决了原始代码无法工作的原因,并指出了条件语句中的逻辑错误。然而,值得注意的是,一种更惯用的方式来做你正在做的事情,可以完全避免使用条件语句。例如:

(1..50).each { |i| pp i }

另一种迭代方法是

0.upto(50) do |i|
  puts i
end
我非常喜欢这种快速迭代的方法。这是一个超级惯用的方法(它做到了它所说的),并且它包含了开始值和结束值,因此您不必计算/说明独占的结束值。

这很有效。;)

i=1
而我呢
打印i
i+=1
结束

首先要做的是将比较向后唱

您希望执行以下操作:

i = 0
until i >= 50 do
  print i
  i += 1
end

您可以查看更多信息

我不是Ruby专家,但是“直到”对我来说意味着当条件为真时它将停止循环。顺便说一句,Ruby包含了一个打印数字0到11的例子。user3874912,
-1
的堆积是当有人在每个问题上打了个耳光然后走开时发生的事情。最好在附近逗留至少几分钟。:-)@按我说的做,使用3874912…?我知道,但它要求使用until@user3874912然后将条件更改为
i>50
,与
i快速注释相反:如果您使用irb而不是pry作为您的REPL,您可能需要
要求标准库中的'pp'
,才能使用此答案。否则,只需使用
put
而不是
pp
。热爱50倍的东西。对我来说,这是最干净的方式
i = 0
output = []
while i <= 50 do
  output << i
  i += 1
end
output.size # => 51
50.times do |i|
  puts i
end
50.times { |i| puts i }
(1..50).each { |i| pp i }
0.upto(50) do |i|
  puts i
end
i = 1
while i < 51 do
  print i
  i += 1
end
i = 0
until i >= 50 do
  print i
  i += 1
end