Menu
Coddy logo textTech

Türe Göre Filtrele

Coddy'nin Ruby Journey'sinin Mantık ve Akış bölümünün bir parçası — ders 31 / 56.

3. Filter By Genre seçeneğini ekleyin. Kullanıcı bir tür yazar ve program, bu sefer büyük/küçük harf duyarlı bir eşleşme ile o türdeki her kitabı listeler.

Ayrıca önceki bölümdeki count öğesini kullanarak bir sayım bildireceksiniz.

challenge icon

Görev

Kolay

Menü döngüsünü genişletin. Seçim "3" olduğunda:

  1. Genre: istemini print ile yazdırın ve girdiyi okuyun
  2. :genre değeri girdiye tam olarak eşit olan kitapları select ile seçin
  3. Her eşleşme için bir satır yazdırın: <title> by <author>
  4. Listenin ardından, n eşleşme sayısı olacak şekilde Total: <n> yazdırın (count veya matches.length kullanın)

Önceki tüm dalları olduğu gibi bırakın.

İki Fantasy kitabı ve bir Sci-Fi kitabı ekleyen, ardından Fantasy ile filtreleme yapıp çıkan girdiler için, filtreleme bloğu her iki fantasy kitabını ve Total: 2 ifadesini yazdırmalıdır.

Kendin dene

library = []

loop do
  puts "--- Library Manager ---"
  puts "1. Add Book"
  puts "2. Search By Title"
  puts "3. Filter By Genre"
  puts "4. Mark As Read"
  puts "5. Exit"
  print "Choose an option: "
  choice = gets.chomp
  if choice == "5"
    puts "Goodbye!"
    break
  elsif choice == "1"
    print "Title: "
    title = gets.chomp
    print "Author: "
    author = gets.chomp
    print "Genre: "
    genre = gets.chomp
    library.push({ title: title, author: author, genre: genre, read: false })
    puts "Book added!"
  elsif choice == "2"
    print "Search title: "
    query = gets.chomp
    matches = library.select { |b| b[:title].downcase.include?(query.downcase) }
    if matches.empty?
      puts "No matches."
    else
      matches.each { |b| puts "#{b[:title]} by #{b[:author]}" }
    end
  end
  # YAPILACAK: choice == "3" durumunu işle, tür için girdi iste,
  # eşleşen kitapları seç, her birini yazdır, ardından "Toplam: <n>" yazdır
end
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Mantık ve Akış bölümündeki tüm dersler