Задавая пользователю несколько вопросов с помощью метода Ruby gets.chomp

#ruby

#ruby

Вопрос:

Я очень новичок в Ruby и практикую пользовательский ввод. Я закодировал следующее, которое позволяет пользователю вводить имена учащихся непрерывно, пока они дважды не нажмут return. После каждого ввода программа возвращает количество учащихся в школе, и когда они окончательно завершат ввод, она распечатает список учащихся и когорту, в которой они находятся.

На данный момент когорта жестко запрограммирована, и я хочу изменить это, чтобы я мог запрашивать как имя, так и когорту, при этом программа продолжает запрашивать эту информацию, пока пользователь дважды не нажмет return . Любая помощь была бы действительно оценена — спасибо 🙂

   puts "Please enter the names of the students"
  puts "To finish, just hit return twice"

  students = []

  name = gets.chomp

  while !name.empty? do 
    students << {name: name, cohort: cohort} 
    puts "Now we have #{students.count} students" 
    name = gets.chomp
  end
  students
end

def print_header
  puts "The students of this Academy".center(50)
  puts "-----------".center(50)
end

def print(students)
 students.each do |student, index|
   puts "#{student[:name]} #{student[:cohort]} cohort"
    end
 end
end

def print_footer(names)
  puts "Overall, we have #{names.count} great students".center(50)
end

students = input_students
print_header
print(students)
print_footer(students)
  

Ответ №1:

Вместо цикла while я бы предложил использовать цикл do и break в случае, если name значение пусто (или также cohort ):

 loop do 
  puts "Please enter the names of the students"
  name = gets.chomp
  break if name.empty?
  puts "Please enter the cohort"
  cohort = gets.chomp
  # break if cohort.empty?
  students << {name: name, cohort: cohort} 
end