※初心者向け
※アウトプット練習の為
開発環境
rails 6.0.4.4
ruby 2.6.5
##問題内容
ターミナルから数字を入力して、数字に応じて以下のように出力するプログラムを書いてください。
・10以下なら10以下の数字です
・10より大きい数値なら10より大きい数字です
・10以下でかつ0以下なら0以下の数字です
ソースコードは以下の雛形を使ってください。
input = gets.to_i
# ここからソースコードを書いてください
##解答
input = gets.to_i
if input <= 0
puts "0以下の数字です"
elsif input <= 10
puts "10以下の数字です"
else
puts "10より大きい数字です"
end
##解説
①ターミナルから数値を入力する書き方
②条件分岐の書き方
の2つに分けて解説します。
①ターミナルから数値を入力する書き方
ターミナルから数値を入力するにはgetsというメソッドを使います。このgetsメソッドを使って入力した値は全て文字列になります。そのためターミナルでは数字を入力しても、プログラムで使うときには文字列に変換されてしまいます。
そこでgetsの値をto_iメソッドを使って数値に変換します。
input = gets.to_i
②条件分岐の書き方
条件分岐はif文を使います。今回は3つのパターンで条件を分けるため、elsifとelseも使います。
if 条件1
# 条件1のときの処理
elsif 条件2
# 条件2のときの処理
else
# 条件3のときの処理
end
今回の条件は数値の比較です。比較には**<や==などの比較演算子を使います。
今回は10以下や0以下という比較なので、<=**を使います。 **=**を付けた場合は以下や以上という意味になります。
input <= 10
今回の問題で難しいのは、3つの条件のうちどの条件から記載するかということです。
if文は先に書いた条件から判断していきます。そのため上の条件に当てはまったら、たとえ下の条件に当てはまっても、下の条件の処理はスルーされます。
今回の問題で以下のように書くとどうなるか考えてみましょう。
if input <= 10
puts "10以下の数字です"
elsif input <= 0
puts "0以下の数字です"
end
このとき、inputが-1だったとすると、最初の条件式にも当てはまってしまい、10以下の数字ですと出力されます。本来は0以下の数字ですと出力されなければいけません。
よって正解は条件式の順番を入れ替えた以下になります。
if input <= 0
puts "0以下の数字です"
elsif input <= 10
puts "10以下の数字です"
end
10以下でなければ10より大きいため、10より大きい数値の場合の条件はelseのあとに書きます。
if input <= 0
puts "0以下の数字です"
elsif input <= 10
puts "10以下の数字です"
else
puts "10より大きい数字です"
end
以上です。