#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