2 flat logo on transparent 256
2018-06-03

Rubyの練習問題:ハッシュ編|初心者・独学者向け入門コンテンツ

Hash0321321

初心者・独学者向けの入門コンテンツとしてRubyでハッシュを編集する際の練習問題を作成しました。

各問題の回答は内部リンクに設定しています。

Rubyのハッシュ解説については下記を御覧ください

初心者・独学者向け|Rubyのハッシュ入門とよく使うメソッド

その他関連練習問題

Rubyの練習問題:配列編|初心者・独学者向け入門コンテンツ

Rubyの練習問題:繰り返し処理編|初心者・独学者向け入門コンテンツ

Rubyの練習問題:条件分岐編|初心者・独学者向け入門コンテンツ

Rubyでハッシュを処理する際の練習問題

1:rubyのハッシュでキー一覧を取得する

ハッシュの{ "像" => 5, "ライオン" => 6, "トラ" => 7 }を ["像", "ライオン", "トラ"]として出力してください。

1-1rubyのハッシュでキー一覧を取得するの回答

2:rubyのハッシュで値の一覧を取得する

ハッシュの{ "像" => 2, "ライオン" => 5, "トラ" => 9 }を [2, 5, 9]として出力して下さい。

1-2rubyのハッシュで値の一覧を取得するの回答

3:rubyのハッシュで指定条件で値を取得する

prices = { "ほうれん草" => 150, "じゃがいも" => 190, "牛肉" => 200,"ねぎ"=> 100}

{"じゃがいも"=>190, "牛肉"=>200}

として出力してください

1-3rubyのハッシュで指定条件で値を取得するの回答

4:rubyのハッシュでキーを取り出す

以下処理を実行した場合の実行結果は何か?

選択肢から1つ選択してください

hash = {"hash" => 1}
p hash.key?(:hash)

選択肢

1:エラー

2:true

3:false

1-4rubyのハッシュでキーを取り出すの回答

5:rubyのハッシュで値を取り出す

以下の実行結果を選択肢から選んでください。

hash = {:hash => ""}
p hash.value?("")

選択肢

1:true

2:false

3:"値"

1-5rubyのハッシュで値を取り出すの回答

6:rubyのハッシュで値を操作する

以下を実行した場合の実行結果を選択肢から1つ選んでください。

price = { :orange => 150, :apple => 160, :peach => 190}
price[:peach] = 200

p [:peach]

選択肢

1:エラーになる

2:190と表示される

3:200と表示される

4: {:peach => 200}と表示される

1-6rubyのハッシュで値を操作する の回答

7:rubyのハッシュを配列化する

{ "山田" => 170, "砂糖" => 190, "安田" => 200}

[["山田", 170], ["砂糖", 190], ["安田", 200]]

としてください。

1-7rubyのハッシュを配列化する の回答

8:rubyのハッシュから値を取得して配列化する

{ "山田" => 170, "砂糖" => 190, "安田" => 200}

[170, 190, 200]

としてください。

1-8rubyのハッシュから値を取得して配列化するの回答

9:rubyの配列からハッシュ化する

[["りんご", 200], ["マンゴー", 140], ["ぶどう", 200]]

{"りんご"=>200, "マンゴー"=>140, "ぶどう"=>200}

としてください。

1-9rubyの配列からハッシュ化するの回答

10:rubyのハッシュを生成する

以下を実行した場合の動作を選択肢から1つ選んで下さい

 p a:1,b:2  

選択肢

1:false

2:エラー

3:true

4:{:a=>1, :b=>2}

1-10rubyのハッシュを生成するの回答

11:rubyのハッシュを結合する

以下のhash1とhash2を結合してください。

出力結果はコードをご覧ください

hash1 = { :key1 => "メモ1", :key2 => "メモ2" }
hash2 = { :key3 => "メモ3"}

# 以下出力結果にしてください
# {:key1=>"メモ1", :key2=>"メモ2", :key3=>"メモ3"}

1-11rubyのハッシュを結合するの回答

12:rubyのハッシュを実行する

以下コードを実行した場合の結果を選択してください

hash1 = { :key1 => "メモ1", :key2 => "メモ2" }

hash1.merge(:key3 => "メモ3")
p hash1

選択肢

1:{ :key1 => "メモ1", :key2 => "メモ2" }

2:実行エラー

3:(:key3 => "メモ3")

4:{:key1=>"メモ1", :key2=>"メモ2", :key3=>"メモ3"}

1-12rubyのハッシュを実行するの回答

1-1:rubyのハッシュでキー一覧を取得するの回答

設問

ハッシュの{ "像" => 5, "ライオン" => 6, "トラ" => 7 }を ["像", "ライオン", "トラ"]として出力してください。

回答 .keysメソッドを利用します。 .keysメソッドはハッシュのkeyを取得して、配列で返します。

animals = { "" => 2, "ライオン" => 5, "トラ" => 9 }
p animals.keys

#実行結果
# ["像", "ライオン", "トラ"]

1-2:rubyのハッシュで値の一覧を取得するの回答

設問

ハッシュの{ "像" => 2, "ライオン" => 5, "トラ" => 9 }を [2, 5, 9]として出力して下さい。

回答 .valuesを利用します。 .valuesはハッシュの値を取得して、配列で返します。

animals = { "" => 2, "ライオン" => 5, "トラ" => 9 }
p animals.values

1-3:rubyのハッシュで指定条件で値を取得するの回答

設問

prices = { "ほうれん草" => 150, "じゃがいも" => 190, "牛肉" => 200,"ねぎ"=> 100}

{"じゃがいも"=>190, "牛肉"=>200}

として出力してください

回答

delete_ifメソッドを利用します。

delete_ifメソッドは、繰り返しブロックを実行して、指定条件が真になったキーと値を「削除」します。

prices = { "ほうれん草" => 150, "じゃがいも" => 190, "牛肉" => 200,"ねぎ"=> 100}
p prices.delete_if {|key, val| val < 180 }

※selectメソッドを利用しても問題ありません。

1-4:rubyのハッシュでキーを取り出すの回答

設問

以下処理を実行した場合の実行結果は何か

選択肢から選択してください

1:エラー

2:true

3:false

hash = {"hash" => 1}
p hash.key?(:hash)

回答

3のfalseとなります。

ハッシュのキーは文字列オブジェクトとシンボルのどちらかで指定する事ができます。

キーを取得する際は文字列は文字列で、シンボルはシンボルで指定しなければなりません。

1-5:rubyのハッシュで値を取り出すの回答

設問

以下の実行結果を選択肢から選んでください。

選択肢

1:true

2:false

3:"値"

hash = {:hash => ""}
p hash.value?("")

回答

1:trueとなります。

.value?メソッドは引数に指定されたハッシュの値をtrue falseで返します。

1-6:rubyのハッシュで値を操作するの回答

設問

以下を実行した場合の実行結果を選択肢から1つ選んでください。

price = { :orange => 150, :apple => 160, :peach => 190}
price[:peach] = 200

p [:peach]

選択肢

1:エラーになる

2:190と表示される

3:200と表示される

4: {:peach => 200}と表示される

回答

3になります

ハッシュの[]=はハッシュに対してkeyと値を追加するメソッドになります。 既存のkeyが存在する場合は値が上書きされます。 なお[]=はstoreメソッドでも対応可能です。

参考

以下はハッシュにkeyと値を追加する場合の処理

price = { :orange => 150, :apple => 160, :peach => 190}
price[:banana] =190

p price[:banana] 

#実行結果
#190

1-7:rubyのハッシュを配列化するの回答

設問

{ "山田" => 170, "砂糖" => 190, "安田" => 200}

[["山田", 170], ["砂糖", 190], ["安田", 200]]

としてください。

回答

.to_aメソッドを利用すれば簡単にハッシュを配列化する事が 可能です

names = { "山田" => 170, "砂糖" => 190, "安田" => 200}
p names.to_a

#実行結果
#[["山田", 170], ["砂糖", 190], ["安田", 200]]

1-8:rubyのハッシュから値を取得して配列化するの回答

設問

{ "山田" => 170, "砂糖" => 190, "安田" => 200}

[170, 190, 200]

としてください。

回答

rubyのvaluesメソッドを利用します。

names = { "山田" => 170, "砂糖" => 190, "安田" => 200}
p names.values

#実行結果
#[170, 190, 200]

1-9:rubyの配列からハッシュ化するの回答

設問

[["りんご", 200], ["マンゴー", 140], ["ぶどう", 200]]

{"りんご"=>200, "マンゴー"=>140, "ぶどう"=>200}

としてください。

回答

rubyのto_hメソッドを利用します。

fruit =[["りんご", 200], ["マンゴー", 140], ["ぶどう", 200]]
p fruit.to_h

#実行結果
#{"りんご"=>200, "マンゴー"=>140, "ぶどう"=>200}

1-10:rubyのハッシュを生成するの回答

以下を実行した場合の動作を選択肢から1つ選んで下さい

 p a:1,b:2  

選択肢

1:false

2:エラー

3:true

4:{:a=>1, :b=>2}

回答

4となります。 ハッシュが生成されます。 あまり一般的な生成方法ではないです。

p a:1,b:2  

#実行結果
#{:a=>1, :b=>2}

1-11:rubyのハッシュを結合するの回答

設問

以下のhash1とhash2を結合してください。 出力結果はコードをご覧ください

hash1 = { :key1 => "メモ1", :key2 => "メモ2" }
hash2 = { :key3 => "メモ3"}

# 以下出力結果にしてください
# {:key1=>"メモ1", :key2=>"メモ2", :key3=>"メモ3"}

回答 ハッシュのmergeメソッドを利用します。

コード例

hash1 = { :key1 => "メモ1", :key2 => "メモ2" }
hash2 = { :key3 => "メモ3"}
hash3 = hash1.merge(hash2)
p hash3
# {:key1=>"メモ1", :key2=>"メモ2", :key3=>"メモ3"}

1-12:rubyのハッシュを実行するの回答

以下コードを実行した場合の結果を選択してください

hash1 = { :key1 => "メモ1", :key2 => "メモ2" }

hash1.merge(:key3 => "メモ3")
p hash1

選択肢

1:{ :key1 => "メモ1", :key2 => "メモ2" }

2:実行エラー

3:(:key3 => "メモ3")

4:{:key1=>"メモ1", :key2=>"メモ2", :key3=>"メモ3"}

回答 選択肢1になります

mergeメソッドは非破壊的メソッドの為、mergeした後に 再度表示しても、変数の中身は変化しません。 破壊的メソッドと非破壊的メソッドの問題は ruby資格試験でもよく出題されます。

ぜひ以下で確認してください

Ruby技術者認定試験 (Silver version 2.1)対策 | !が付かない破壊的メソッド

以上になります。

その他関連記事

Rubyの練習問題:配列編|初心者・独学者向け入門コンテンツ

Rubyの練習問題:文字列編|初心者・独学者向け入門コンテンツ

初心者・独学者向け|Rubyの配列処理の入門とよく使うメソッド

初心者・独学者向け|Rubyのハッシュ入門とよく使うメソッド

初心者・独学者向け|Rubyのinitializeメソッドとは

初心者・独学者向け|RubyのStringクラスとよく使うメソッド

Rubyの練習問題:繰り返し処理編|初心者・独学者向け入門コンテンツ

[Rubyの練習問題:条件分岐編|初心者・独学者向け入門コンテンツ](https://programming-beginner-zeroichi.jp/articles/122

前の記事
次の記事