Ruby хэш и пользовательский ввод

Здравствуйте, я только что получил в рубине, и мне нужна помощь с этой задачей. Задача состоит в том, чтобы ввести 7 дней недели в хэш, например: {"Monday" => 1, "Tuesday" =>2 ..etc}. Когда пользователь вводит число от 1 до 7, он показывает соответствующий день., Таким образом, если пользователь нажимает 5, он выводит "пятницу". До сих пор я придумал это:

   puts "Enter Number"
    hash = {"Monday"=>1,"Tuesday"=>2,"Wednesday"=>3,"Thursday"=>4,"Friday"=>5,"Saturday"=>6,"Sunday"=>7}
    hash.each do |x,y|
    input = gets.to_i
    print x if input == y
end

3 ответа

Вы на правильном пути, просто вам нужно получить ввод от пользователя, если значения для каждого ключа являются целыми числами, то вы могли бы рассмотреть возможность использования chomp а также to_iпосле этого вы можете использовать find, чтобы проверить ключи в хэше, где значение равно числу, которое выбрал пользователь:

puts 'Enter Number'
number = gets.chomp.to_i
hash = {'Monday'=>1,'Tuesday'=>2,'Wednesday'=>3,'Thursday'=>4,'Friday'=>5,'Saturday'=>6,'Sunday'=>7}
p hash.find { |_, v| v == number }.first

Используя find, вы получаете первый элемент, который соответствует выражению внутри блока как true.

Вы близки к рабочему решению, но каждый раз принимаете участие. Акт приема должен происходить вне цикла.

puts "Enter Number"
hash = {"Monday" => 1, "Tuesday" => 2, "Wednesday" => 3, "Thursday" => 4, "Friday" => 5, "Saturday" => 6, "Sunday" => 7}
input = gets.to_i
hash.each do |x,y|
  puts x if input == y
end

Это примет ввод один раз и затем повторяется. То, что вы сделали, это попросить ввести один раз для каждого дня недели.

Если начальный хеш должен обязательно быть днями в качестве ключей, вы всегда можете инвертировать его, чтобы ключи и значения обменивались местами друг с другом:

puts 'Enter Number'
number = gets.chomp.to_i
hash = {'Monday'=>1,'Tuesday'=>2,'Wednesday'=>3,'Thursday'=>4,'Friday'=>5,'Saturday'=>6,'Sunday'=>7}
p hash.invert[number]

Но было бы больше смысла вводить по идентификатору.

Другие вопросы по тегам