Как добавить неограниченное количество людей в мою программу ruby? - PullRequest
0 голосов
/ 26 октября 2018

Я написал программу, которая проверяла бы, есть ли вы в списке вечеринок. Это работает нормально, но я не хочу ничего добавлять, чтобы вы могли выбрать, сколько человек в вашей группе по сравнению с пятью по умолчанию в этой группе. Спасибо, любая помощь будет оценена. Я только начал так жаль, если я не понимаю.

puts "Create a party"
puts "Who is the first person: "
first_person = gets.chomp.upcase()
puts "Who is the second person: "
second_person = gets.chomp.upcase()
puts "Who is the third person: "
third_person = gets.chomp.upcase()
puts "Who is the fourth person: "
fourth_person = gets.chomp.upcase()
puts "Who is the fifth person: "
fifth_person = gets.chomp.upcase()

friends_list = Array[first_person, second_person, third_person, fourth_person, fifth_person]

puts "What is your name?"
your_name = gets.chomp.upcase()

if friends_list.include? your_name
  puts "Congrats, you were invited"
else
  puts "Sorry, you weren't invited. Please check with the host of the party for more details"
end

Ответы [ 2 ]

0 голосов
/ 26 октября 2018

Это пример группирования инструкций в методах, так что вы можете использовать некоторые (см. get_name), чтобы они были DRY .

Кроме того, он использует хеш для хранения сведений о человеке в массиве.

Программа продолжает работать в loop to до тех пор, пока не прервется из-за ввода пользователя.

def run
  people = []
  loop do
    show_options
    answer = gets.chomp.downcase.to_sym
    case answer
    when :a
      add_person_to people
    when :l
      list people
    when :f
      find_in people
    else
      break
    end
  end
end

def show_options
  puts "-"*50
  puts "A: add person"
  puts "L: list people"
  puts "F: find person"
  puts "any other key: exit"
end

def get_name
  puts "Name?"
  name = gets.chomp.capitalize
  puts "Nickname?"
  nickname = gets.chomp.capitalize
  {name: name, nickname: nickname}
end

def add_person_to people
  puts "Adding person nr. #{people.size + 1}"
  people << get_name # check if already present?
end

def list people
  puts "-"*50
  people.each { |person| puts "Name: #{person[:name]} - Nickname: #{person[:nickname]}" }
  puts "Total people: #{people.size}"
end

def find_in people
  puts people.include? get_name # or improve
end

run # this calls the run method
0 голосов
/ 26 октября 2018

Здорово, что ты начал изучать Ruby!

Вы можете использовать цикл. Сначала создайте массив и push имена в нем.

puts "Create a party"
puts "Enter blank if you are done"

friends_list = []  # new array
count = 1
loop do
  print count.to_s + "th person's name: "
  name = gets.chomp.upcase
  break if name.empty?
  friends_list.push(name)  # add person to list
  count += 1
end

puts "What is your name?"
your_name = gets.chomp.upcase()

if friends_list.include? your_name
  puts "Congrats, you were invited"
else
  puts "Sorry, you weren't invited. Please check with the host of the party for more details"
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...