<DAY75>rubyの問題(ハッシュ要素をeach文で出力する)
学習状況
●学習日数 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