Read Article

関数を使って星座は判定をしよう

広告

この章では関数で星座の判定を作成します。9999 この例は星座の判定をjudge関数に任せています。
このように判定の部分を関数で作成することでコンパクトになり、プログラムがすっきりします。
では説明を始めます。
9ここでユーザーにデータを入力させます。
ユーザーに入力をさせる関数はraw_input関数です。
9「文字列」には画面に表示させたい文字列を入力します。
ここでユーザーが入力をするとその結果は文字列として変数に入ります。
999の中のbirthmonthのデータがjudgeメソッドの仮引数monthに入り、birthdayのデータがdayに入ります。
ここでmonthとdayを整数値に変換するためにint関数でキャストしています。
つまり、raw_input関数は文字列を返すので、ここでint関数で整数に変換します。
9namesでは星座名をリストで作成しています。
この配列内は山羊座から順番通りに並んでいます。
決して、ランダムに並んでいるわけではありません。
day1には各星座の月の末日をリストに入れています。
day2には1月から12月までの末日をリストに入れています。
99例えば仮引数のmonthに1が入り、dayに19が入っているとします。
9の部分ではcountが0の時にifの条件式trueになりますので、入れ子のif文の条件式の判定に入ります。
if文はこのように入れ子にすることができます。
つまり、初めのif文がtrueであればさらに入れ子のif文の条件判定に入ります。9 9の中のdayには19が入り、1周目の9にはday1の0番目の要素である19が入っていますので、条件式はtrueになり、nameにはnamesの0番目の要素である「やぎ座」が入ります。
例えばdayに19ではなく23が入っていると仮定すると9はfalseになるので、9の条件式の判定に入ります。
ここでday2[count]にはday2の0番目の要素である31が入っていますので trueになり、name には9に該当する星座が入ります。
9のcountには1周目では0が入っていますので9で余りを求めると1になりますので9になり、「みずがめ座」が入ることになります。
では9の詳しい説明をします。
「count + 1」をする理由は例えばmonthが1で、day が23の場合には99になりfalseになるので、elifのブロックに入りますが、1月は やぎ座と水瓶座しかなく、やぎ座ではないのならば水瓶座しかないのでnamesを1つ進めるために9で1を足しています。
len(names) を記述している理由は例えば9の中のcountに11が入ると9の箇所が12になりますが、9の箇所が無いと仮定すると9となってしまいますが、実際に9という要素はありません。
ですので、9の箇所で余りを0(12割る12で余り0)にして山羊座が出るようにしています。
つまり、該当する以下の余りの数字がnames配列の添え字になり、その該当するデータがnameに入ります。9 99結果は以下の通りです。9

URL :
TRACKBACK URL :
Return Top