您好我刚刚进入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
答案 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键入更有意义。