Menu
CoddyTech

Filtrer par genre

Fait partie de la section Logique et flux du Journey Ruby de Coddy. Leçon 31 sur 56.

Ajoutez l’option 3. Filter By Genre. L’utilisateur saisit un genre et le programme répertorie tous les livres de ce genre exact, avec une correspondance sensible à la casse cette fois-ci.

Vous signalerez également un décompte, en utilisant count du chapitre précédent.

challenge icon

Défi

Facile

Étendez la boucle du menu. Lorsque le choix est "3" :

  1. print l'invite Genre: et lisez-la
  2. select les livres dont le :genre correspond exactement à la saisie
  3. Affichez une ligne par correspondance : <title> by <author>
  4. Après la liste, affichez Total: <n> où n est le nombre de correspondances (utilisez count ou matches.length)

Conservez toutes les branches précédentes intactes.

Pour des entrées ajoutant deux livres de Fantasy et un livre de Sci-Fi, puis en filtrant par Fantasy et en quittant, le bloc de filtrage doit afficher les deux livres de fantasy et Total: 2.

Essayez vous-même

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
  # TODO : gérer choice == "3", demander le genre,
  # sélectionner les livres correspondants, afficher chacun, puis "Total : <n>"
end
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Logique et flux

Entraînez-vous par vous-même : Compilateur Ruby en ligne