Ruby получает/ставит только для строк?
Я новичок в Ruby и в настоящее время работаю над некоторым кодом практики, который выглядит следующим образом:
puts 'Hello there, Can you tell me your favourite number?'
num = gets.chomp
puts 'Your favourite number is ' + num + '?'
puts 'Well its not bad but ' + num * 10 + ' is literally 10 times better!'
Этот код, однако, просто помещает десять копий переменной num и фактически не умножает число, поэтому я предполагаю, что мне нужно сделать переменную 'num' целым числом? У меня не было успеха в этом, так может кто-нибудь показать мне, где я ошибаюсь?
Ответы
Ответ 1
Если вы используете to_i
, тогда chomp
до того, как это будет лишним. Итак, вы можете сделать:
puts 'Hello there, Can you tell me your favourite number?'
num = gets.to_i
puts 'Your favourite number is ' + num.to_s + '?'
puts 'Well its not bad but ' + (num * 10).to_s + ' is literally 10 times better!'
Но в целом использование "#{}"
лучше, так как вам не нужно заботиться о to_s
, и он работает быстрее, и его легче увидеть. Метод String#+
особенно очень медленный.
puts 'Hello there, Can you tell me your favourite number?'
num = gets.to_i
puts "Your favourite number is #{num}?"
puts "Well its not bad but #{num * 10} is literally 10 times better!"
Ответ 2
Используйте метод to_i
, чтобы преобразовать его в целое. Другими словами, измените это:
num = gets.chomp
Для этого:
num = gets.chomp.to_i
Ответ 3
вы также можете убедиться, что число, которое пользователь использует, является целым числом следующим образом:
num = Integer(gets.chomp)
но вы должны создать способ поймать ошибку в случае, если пользователь вводит иначе, как char, или строку так; лучше использовать:
num = gets.chomp.to_i
Если пользователь вводит другой тип данных, num будет равен 0, как вы можете видеть в этом тестовом примере:
puts "give me a number:"
num = gets.chomp.to_i
if num >3
puts "#{num} es mayor a 3 "
else
puts "#{num} es menor a 3 o 3"
end
Это пример взаимодействия с этим script:
give me a number:
sggd
0 es menor a 3 o 3
nil
Надеюсь, это лучше пояснит вашу мысль.
Ответ 4
Я написал аналогичную программу, как ваша. Вот как я, наконец, получил его, чтобы он работал правильно! Мне нужно было назначить любимый номер целым числом. Затем в следующей строке я устанавливаю new_fav_num со значением fav_num +1 и затем преобразую его в строку. После этого вы можете просто подключить свой код к оператору return, который вы хотите сказать пользователю, только вы должны преобразовать первый fav_num в строку.
puts "What is your favorite number?"
fav_num = gets.chomp.to_i
new_fav_num = (fav_num + 1).to_s
puts "Your favorite number is " + fav_num.to_s + ". That not bad, but " +
new_fav_num + " is bigger and better!"