web-dev-qa-db-ja.com

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変数のコピーを10個置くだけで、実際には数を乗算しないため、「num」変数を整数にする必要があると思いますか?私はこれで成功しなかったので、誰かが私が間違っているところを教えてもらえますか?

17
AndyNico

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!"
27
sawa

使用 to_iメソッドを使用して整数に変換します。つまり、これを変更します。

num = gets.chomp

これに:

num = gets.chomp.to_i
6
icktoofay

次のようにして、ユーザーが使用している数値が整数であることを確認することもできます。

num = Integer(gets.chomp)

しかし、ユーザーが文字や文字列などの入力を行った場合にエラーをキャッチする方法を作成する必要があります。使用する方が良いでしょう:

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

これがあなたの主張をより明確にすることを願っています。

0
Jesus Gonzalez

私はあなたと同じようなプログラムを書いた。これが最終的に適切に機能する方法です!私は好きな数を整数にする必要がありました。次に、次の行で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
Brian Ruff