yujiroのプログラミング

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

<DAY102>rubyコードと忘れていたメソッドメモ

\ Follow me!! /

f:id:yujiro0320:20190512223713p:plain

学習状況

●学習日数 102日

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

●累計学習時間 461.5時間

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

はじめに

昨日は勉強進まず、だらけた1日だった。
気を取り直し、疑問を解消すべく取り組んでいく。

追加で学んだメソッド

メソッド名 効果 式の例 式の実行結果
select 配列に入った対象を1づつ取り出し条件に合えばあっている分のみ入れ直す arrays.select{(array) array == 0,()ではないからね!} [0,0,0]
include?() 要素に()が含まれているか。true,falseで判断 "kawa".include("kawa") true
empty? 要素に()が含まれているか。true,falseで判断 "kawa".include("kawa") true

rubyの問題から。

<実装条件>
入力されたデータを検索し表示するには?
本の著者とタイトルが登録できる事
著者とタイトルが検索できる機能がある事
登録している本の数が表示できる事
終了できること

自分で書いた答え。

def register_book (books)
   book = {}
   puts "タイトルを入力して下さい"
   book[:title] = gets.chomp
   puts "著者を入力して下さい"
   book[:author] = gets.chomp

   books << book
end

def search_book(books)

  puts "本の登録数は#{books.length}冊あります"
  return if books.length ==0
  books.each_with_index do |book,i|
    puts "#{ i +1 }番:タイトル:#{book[:title]}著者:#{book[:author]}"
  end
  puts "検索したい番号を入力して下さい"
  number = gets.to_i
  puts "タイトルもしくは著者を入力して下さい"
  keyword = gets.chomp
  if books[number-1][:title].include?(keyword) || books[number-1][:author].include?(keyword)
    puts <<~EOS
         ----------検索結果---------------- 
         タイトル:#{books[number-1][:title]}
         
         著者は: #{books[number-1][:author]}

         ---------------------------------
         EOS
  else
    puts "検索できない"
  end
end

books = []

loop do  
  puts <<~EOS

      [1]本の登録を行う

      [2]本のタイトルと著者を検索する

      [3]本を終了する
      EOS
      input = gets.to_i

  if  input == 1
   register_book(books)
  elsif input == 2
    search_book(books)
  elsif input == 3
    exit
  else
    puts "無効な値です"
  end
end

rubyのメソッド

昔やって理解していたはずなのにすっかり忘れていた人たち

メソッド名 効果 式の例 式の実行結果
reverse 文字列の並びを反転させる事ができる "abcde".reverse "edcba"
"abcde".sort 条件指定して並び替え["a","b","c","d","e" ].sort{ a,b b<=>a }
upcase 文字列の小文字を大文字に "aaaa".upcase "AAAA"
downcase 文字列の大文字を小文字に "AAAA".dowmcase "aaaa"
capitalize 先頭の文字のみを変換する "hello".capitalize "Hello"