Ruby哈希和用户输入

时间:2017-11-19 18:28:27

标签: ruby user-input ruby-hash

您好我刚刚进入ruby,我需要帮助完成这项任务。任务是以这样的哈希值输入一周中的7天{" Monday" => 1,"星期二" => 2 ..etc}当用户输入1-7之间的数字时,它显示相应的日期。因此,如果用户按下5,则输出" Friday"。到目前为止,我已经想出了这个:

   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 个答案:

答案 0 :(得分:1)

你是以正确的方式,只需要获得用户的输入,如果每个键的值都是整数,那么你可以考虑使用<a @click.prevent="blah">chomp,之后您可以使用find来检查散列中的键,其中值等于用户选择的数字:

to_i

通过使用find,您可以获得与块内表达式匹配的第一个元素为true。

答案 1 :(得分:0)

您接近工作解决方案,但每次都接受输入。接受输入的行为需要在循环之外发生。

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

这将输入一次然后迭代。你的解决方案所做的是每周要求输入一次。

答案 2 :(得分:0)

如果初始哈希必须绝对是几天作为键,你总是可以反转它 - 这样键和值可以相互交换位置:

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]

但是通过id键入更有意义。