Руби получает / ставит только для строк? - PullRequest
16 голосов
/ 15 мая 2011

Я новичок в 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' целым числом?У меня ничего не получилось, так что, может, кто-нибудь покажет мне, где я ошибаюсь?

Ответы [ 4 ]

25 голосов
/ 15 мая 2011

Если вы используете 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!"
6 голосов
/ 15 мая 2011

Используйте метод to_i, чтобы преобразовать его в целое число.Другими словами, измените это:

num = gets.chomp

На это:

num = gets.chomp.to_i
0 голосов
/ 24 августа 2017

Я написал программу, похожую на вашу.Вот как я наконец-то заставил его работать должным образом!Мне пришлось назначить любимое число целым числом.Затем в следующей строке я установил 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's not bad, but " +
new_fav_num + " is bigger and better!"

Надеюсь, это поможет.

0 голосов
/ 03 марта 2015

Вы также можете убедиться, что число, которое использует пользователь, является целым числом следующим образом:

num = Integer(gets.chomp)

но вы должны создать способ отловить ошибку в случае, если пользовательский ввод в противном случае будет похож на char или string; лучше использовать:

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

Это пример взаимодействия с этим скриптом:

give me a number:
 sggd
0 es menor a 3 o 3
nil

Надеюсь, это прояснит вашу точку зрения.

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