yujiroのプログラミング

勉強内容をアウトプットし、サボらないようにする為のブログ

<DAY75>rubyの問題(ハッシュ要素をeach文で出力する)

\ Follow me!! /

f:id:yujiro0320:20190415152250p:plain

学習状況

●学習日数 75日 

●学習時間(本日) 9.5時間

●累計学習時間 232.0時間

●一日あたりの平均学習時間 3.09時間 

問題

下記の結果になるよう、コードの記述を行なってください。
1 空のハッシュ hash を定義する
2 hashのキー 「:name」 に"yujiro"を代入する
3 hashのキー 「:height」 に1.6を代入する
4 hashのキー 「:weight」 に60を代入する
5 hashのキー 「:bmi」 にBMIの結果を代入する

実行結果
name: yujiro
height: 1.6
weight: 60
bmi: 23.4

(*1)BMIの計算方法は 体重(kg) ÷ 身長(m) ÷ 身長(m) とします。

ポイント

1:ハッシュにキーを指定して代入できるかどうか。

2:each文でハッシュの要素を出力できるかどうか。

3:四捨五入してくれるroundメソッドを使えるかどうか

回答

hash = {}

hash[:name]   = "yujiro"

hash[:height]  = 160

hash[:weight]  = 60

hash[:bmi] =  (hash[:height]/hash[:weight]/hash[:weight]).round

hash.each do |key: value|
puts "#{key}:#{value}"
end

each文を使いハッシュ要素を出力する事は配列などと比べ少ない。 ごっちゃになったので、アウトプット兼ねて記事にした。

もう少し複雑なコードを作ってみる。

def register_book(a_book)

a_book = {}


a_book[:author] = gets.chomp  #本の著者

a_book[:title] = gets.chomp   #本の題名

a_book[:price] = gets.chomp    #本の価格

puts <<~TEXT

入力された本の著者は#{a_book[:autor]}です。


入力された本のは題名は#{a_book[:title]}です。


入力された本の価格は#{a_book[:price]}です。

TEXT

books << a_book

return books

end










books = []

while ture do
 
 <<~TEXT
 番号を入力してください
  puts  0: 本を登録する
  puts  1: 本の一覧を見る
  puts  2: 終了する
 TEXT
 
input = get.to_i

if input == 0 then
books = register_book(books)

elsif input == 1 then




end