@Stergy

Как проверить, является ли значение числом в Ruby?

Изучаю основы руби. Написал простое приложение, в котором нужно угадать загаданное число. Как в данном коде реализовать функцию проверки, если введено не число, что б программа выводила оповещение и просило заново ввести число, причем не засчитывая ошибочный ввод за попытку.

puts 'Welcome to "Get my number!"'
print 'What is your name? '
name = gets.chomp
puts "Welcome to our game #{name}!"
sleep 1

rand_number = rand(100) + 1
guesses = 0
guessed_it = false

print "You need to guess a number from 0 to 100! \n"
sleep 1

until guesses == 10 || guessed_it == true

  puts "You`ve got #{10 - guesses} guesses left!"
  print "Make a guess: "
  number = gets.to_i

  if number > rand_number
    puts ""
    puts "Oops. Your guess was HIGH"
  elsif number < rand_number
    puts ""
    puts "Oops. Your guess was LOW"
  elsif number == rand_number
    puts ""
    puts "Good job #{name}!"
    puts "You guessed my number in #{guesses} guesses!"
    guessed_it = true
  end
  guesses += 1
end

unless guessed_it
  puts "Sorry. You didn't get my number. (It was #{rand_number})"
end
  • Вопрос задан
  • 2835 просмотров
Решения вопроса 1
oh_shi
@oh_shi
Проверьте, что все символы в строке это цифры:
number = gets
if number[/^\d+$/]
или
if numbers.scan(/\D/).empty?

Это нужно сделать соответственно до numbers.to_i и guesses += 1
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
POS_troi
@POS_troi
СадоМазо Админ, флудер, троль.
oh_shi не люблю регулярки :)

class String
    def numeric?
      Float(self) != nil rescue false
    end
end

puts "566".numeric?


"566" => true
"56.6" => true
"Hello" => false
"999Hello999" => false
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы