Я думаю, что вы должны проверить свои входные данные.
В противном случае это может быть ситуация:
'abc'.to_i.even? #=> true
Это потому, что нецифровое String#to_i
возвращает 0
.
Как видите, это нехорошо.
def odd_or_even(number)
number.odd? ? 'odd' : 'even'
end
puts 'Print any number:'
input = gets.chomp
if input =~ /\D/
puts 'It is not a number'
else
puts "It's #{odd_or_even(input.to_i)}"
end
Сначала мы проверяем данные с помощью регулярных выражений.Если это не число, мы не будем проверять, является ли оно нечетным или четным.
Примечание:
Очень часто мы используем =~
оператор длясовпадение String
и Regexp
.
/\D/
означает любой нецифровый символ.