LoginSignup
2
0

More than 1 year has passed since last update.

【Ruby】条件分岐 if文 gets to_iメソッド

Last updated at Posted at 2022-01-16

※初心者向け
※アウトプット練習の為

開発環境
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つのパターンで条件を分けるため、elsifelseも使います。


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

以上です。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0