もっといいコードを教えてください
解決したいこと
現在プログラミングを勉強しており、rubyのカリキュラムを終えたので、
誕生日から星座を調べるプログラムを作成しました。
-仕様-
- 誕生日を入れると星座が出力される
- 存在しない日(2/31など)を選択すると値が正しくありません
と出る
自分で製作したプログラム
def jan
puts "あなたの誕生日を教えてください"
input = gets.to_i
if input <= 19 then
puts "あなたは山羊座です"
elsif input <=31 then
puts "あなたは水瓶座です"
else
puts "値が正しくありません"
end
end
def feb
puts "あなたの誕生日を教えてください"
input = gets.to_i
if input <= 18 then
puts "あなたは水瓶座です"
elsif input <=29 then
puts "あなたは魚座です"
else
puts "値が正しくありません"
end
end
def mar
puts "あなたの誕生日を教えてください"
input = gets.to_i
if input <= 20 then
puts "あなたは魚座です"
elsif input <=31 then
puts "あなたは牡羊座です"
else
puts "値が正しくありません"
end
end
def apr
puts "あなたの誕生日を教えてください"
input = gets.to_i
if input <= 19 then
puts "あなたは牡羊座です"
elsif input <=30 then
puts "あなたは牡牛座です"
else
puts "値が正しくありません"
end
end
def may
puts "あなたの誕生日を教えてください"
input = gets.to_i
if input <= 22 then
puts "あなたは牡牛座です"
elsif input <=31 then
puts "あなたは双子座です"
else
puts "値が正しくありません"
end
end
def jun
puts "あなたの誕生日を教えてください"
input = gets.to_i
if input <= 21 then
puts "あなたは双子座です"
elsif input <= 30 then
puts "あなたは蟹座です"
else
puts "値が正しくありません"
end
end
def jul
puts "あなたの誕生日を教えてください"
input = gets.to_i
if input <= 22 then
puts "あなたは蟹座です"
elsif input <=31 then
puts "あなたは獅子座です"
else
puts "値が正しくありません"
end
end
def aug
puts "あなたの誕生日を教えてください"
input = gets.to_i
if input <= 22 then
puts "あなたは獅子座です"
elsif input <=31 then
puts "あなたは乙女座です"
else
puts "値が正しくありません"
end
end
def sep
puts "あなたの誕生日を教えてください"
input = gets.to_i
if input <= 22 then
puts "あなたは乙女座です"
elsif input <=30 then
puts "あなたは天秤座です"
else
puts "値が正しくありません"
end
end
def oct
puts "あなたの誕生日を教えてください"
input = gets.to_i
if input <= 23 then
puts "あなたは天秤座です"
elsif input <=31 then
puts "あなたは蠍座です"
else
puts "値が正しくありません"
end
end
def nov
puts "あなたの誕生日を教えてください"
input = gets.to_i
if input <= 22 then
puts "あなたは蠍座です"
elsif input <=30 then
puts "あなたは射手座です"
else
puts "値が正しくありません"
end
end
def dec
puts "あなたの誕生日を教えてください"
input = gets.to_i
if input <= 21 then
puts "あなたは射手座です"
elsif input <=31 then
puts "あなたは山羊座です"
else
puts "値が正しくありません"
end
end
puts "あなたの誕生月を入れてください"
input = gets.to_i
case input
when 1 then
jan
when 2 then
feb
when 3 then
mar
when 4 then
apr
when 5 then
may
when 6 then
jun
when 7 then
jul
when 8 then
aug
when 9 then
sep
when 10 then
oct
when 11 then
nov
when 12 then
dec
else
puts "値が正しくありません"
end
1月から12月までの12個のアクションを定義しており、同じ内容を繰り返しているので、もっとシンプルにしたいです。現在アクションの中に
puts "あなたの誕生日を教えてください" input = gets.to_i
を入れていますが、
puts "あなたの誕生月を入れてください" input1 = gets.to_i puts "あなたの誕生日を教えてください" input2 = gets.to_i
と最初に月と日を2つの変数に代入したいです。
どんなプログラムにしたら良いか教えていただけると大変嬉しく存じます。