2017-11-19 7 views
0

こんにちは私はちょうどルビーになっているので、私はこの作業に助けが必要です。タスクは、このようなハッシュで週の7日を入力することです。{"Monday" => 1、 "Tuesday" => 2 ..etc}ユーザーが1-7の間の数字を入力すると、 。したがって、ユーザーが5を押すと、「金曜日」が出力されます。これまでのところ私はこれが出ている:Rubyのハッシュとユーザー入力

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

あなたは実用的なソリューションに近いですが、あなたはそれぞれの時間を入力してください。入力を取る行為は、ループの外側で発生する必要があります。

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 

これは入力を1回受け取り、次に繰り返します。あなたのソリューションがしたことは、毎週の曜日に一度入力を求めたことでした。

+2

これに追加するには、ハッシュのキーと値を反転させて 'hash = {1 =>" Monday "...}'のようにするともっとルビー的なやり方で 'ハッシュ[入力] '。 –

1

あなたは正しい方法で、ユーザーからの入力を取得する必要があります。各キーの値が整数の場合は、chompto_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 

見つける使用することにより、あなたは真のブロック内の式と一致する最初の要素を取得します。

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。

関連する問題