Ошибка цикла для нескольких условий - PullRequest
0 голосов
/ 27 апреля 2018

У меня есть этот цикл:

puts "Welcome to the Loop Practice Problems"
puts " Write a number between 1 and 10, but not 5 or else...."
ans = gets.chomp!
if ans < 1
  puts "Tf bruh bruh"
elsif ans > 10
  puts "Now you just playin"
elsif x == 5
  print "You wildin B"
else
  puts "Fosho that's all I require"
end

Это не работает должным образом, и я пытаюсь понять, почему. Если вы можете помочь мне с этим, я буду признателен.

Если вы знаете хороший сайт для практических задач, я хотел бы попробовать его. Я проверил Coderbyte и Code Kata, но способ их настройки не выглядит правильным, и у них нет вопросов для решения основ.

Ответы [ 2 ]

0 голосов
/ 27 апреля 2018

Вы должны преобразовать объект типа входной строки в целочисленный тип

ans = gets.chomp!.to_i #input string convert into integer.
if ans < 1
  puts "Tf bruh bruh"
elsif ans > 10
  puts "Now you just playin"
elsif x == 5
  print "You wildin B"
else
  puts "Fosho that's all I require"
end
0 голосов
/ 27 апреля 2018

Проблема в том, что вы не конвертируете 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 здесь преобразует число в целое число, и тогда ваши сравнения будут работать правильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...