2014-09-11 2 views
1

Как сделать диапазон от 1 до 25, а затем распечатать только четные числа (подсказка: запомнить modulo)? Я использовал это в качестве своего ответа:Как сделать этот простой цикл Ruby?

(1..25).each {|n| print n % 2 == 0} 

и напечатано булево значение. Я хочу получить цифры вместо этого. Что мне нужно изменить в моем коде выше?

+0

печати п, если п% 2 == 0 –

ответ

1

Вы были несколько недоразумений состояние

(1..25).each {|n| puts n if n % 2 == 0} 
+0

Спасибо stoneboy ..... глупо меня. – user3843070

6
(1..25).each{|n| puts n if n.even?} 

или

puts (1..25).select(&:even?) 
+1

С таким количеством ответов здесь приятно отметить, почему нам это нравится. Для меня это использование 'even?' :) –

0

Другой способ:

def print_even(r) 
    puts ((r.first.even? ? r.first : r.first+1)..r.last).step(2) { |i| puts i } 
end 

print_even((1..25)) 
    #=> 2 
    #=> 4 
    #=> 6 
    ... 
    #=> 24 
print_even((2..26)) 
    #=> 2 
    #=> 4 
    #=> 6 
    ... 
    #=> 26 

... и еще:

even = true 
(1..25).each { |i| puts i if (even = !even) } 
Смежные вопросы