標準入力から一行の数値を受け取るの巻
line = gets.to_i
puts line * 2
入力する値
100
実行結果
200
標準入力から一行の文字列を受け取るの巻
line = gets
puts "Hello #{line}"
puts "Hello #{line}" * 2
入力する値
おもち
実行結果
Hello おもち
Hello おもちHello おもち
標準入力から複数行の文字列を受け取るの巻
方法1
・受け取りたい行数分getsを書く
line = gets
puts "みたらし#{line}"
line = gets
puts "あずき#{line}"
line = gets
puts "三色#{line}"
入力する値
だんご
だんご
だんご
実行結果
みたらしだんご
あずきだんご
三色だんご
疑問のコーナー
Q1.以下のように書くと三色だんご以外が”だんご”の直前で改行される理由。
chat GPTのA.
標準入力から一行ずつ読み取り、それぞれの行の末尾に "だんご" を追加して出力するものです。しかし、出力されるときに各行の末尾に改行が追加されていないため、次の行が直前の行とつながって表示されます。
これは、getsメソッドが、ユーザーが入力したテキストの末尾に自動的に改行を含んでいるためです。そのため、"#{line}だんご" を puts メソッドで出力すると、line の末尾に改行が含まれたままであり、"だんご" の前に改行が追加されないため、直前の行と一緒に表示されます。
Q2.三色だんごが”だんご”の直前で改行されない理由。
chat GPTのA.
gets メソッドがユーザーが入力したテキストの末尾に自動的に改行を含んでいるため、puts メソッドがそれを含んだままで出力してしまうためです。そのため、次の行が直前の行とつながって表示されます。
line = gets
puts "#{line}だんご"
line = gets
puts "#{line}だんご"
line = gets
puts "#{line}だんご"
入力する値
みたらし
あずき
三色
実行結果
みたらし
だんご
あずき
だんご
三色だんご
解決方法
実行結果を以下のようにしたい場合は、chompを使う。
みたらしだんご
あずきだんご
三色だんご
line = gets
puts "#{line.chomp}だんご"
line = gets
puts "#{line.chomp}だんご"
line = gets
puts "#{line.chomp}だんご"
Ruby 3.2 リファレンスマニュアル,chomp
munch
chat GPT
Rubyのchompメソッドは、文字列の末尾にある改行文字を削除するためのメソッドです。chompは「切り落とす」という意味があり、改行文字を切り落とすことからこの名前がつけられました。
Rubyでは、getsメソッドを使ってユーザーからの入力を受け取る場合、改行文字も一緒に取得されます。例えば、getsメソッドで取得した文字列をそのまま使うと、文字列の末尾に改行文字が含まれることになります。
しかし、改行文字が不要な場合には、chompメソッドを使って改行文字を取り除くことができます。これにより、文字列の処理が簡単になり、余計な文字列を扱うことがなくなります。
また、chompメソッドは、引数を指定することで、改行文字以外の文字列を削除することもできます。例えば、chomp("s")とすると、文字列の末尾にある"s"を削除することができます。
標準入力からスペース区切りの文字列を受け取るの巻
num = gets.to_i
# p num
str = gets
puts str.split(" ")
入力する値
3
mitarashi azuki sanshoku
実行結果
mitarashi
azuki
sanshoku