Проблема в том, что вы не конвертируете ans
в число, а сравниваете его с одним. ans
будет строкой.
В Ruby, когда вы сравниваете число со строкой, Ruby говорит, что они не равны:
"1" == 1
=> false
Вы можете воспроизвести проблему с помощью этого кода:
puts "Welcome to the Loop Practice Problems"
puts " Write a number between 1 and 10, but not 5 or else...."
ans=gets.chomp!
p ans
Метод p
выведет «проверенную» версию этого объекта (это то же самое, что и puts ans.inspect
). Это покажет его в кавычках, что означает, что это строка.
Вы, вероятно, хотите сделать это:
ans = gets.chomp!.to_i
Метод to_i
здесь преобразует число в целое число, и тогда ваши сравнения будут работать правильно.