いよいよプログラミングっぽくなってきたよ! おみくじスクリプト!
前回のプログラムではただ表示するだけでした。
決め打ちは芸がないなと思われる方も多いでしょう。
そこで今回は乱数と条件分岐をやります。
ここから難易度がちょっと上がります。
とはいえまだギリギリ全文載せても運営に怒られない程度の長さなのでコードを載せながら解説していきます。
まず初めの二行です
import random as r
fortune = r.random()
はい、逃げないでください! 難しくないですから!
まずimportってなんぞや? というのが疑問でしょう。
import宣言は「今からお前の機能を使わせてもらうぞ」という宣言です。
ここではrandomという乱数を生成する機能を使うよ! と宣言しているわけです。
as rってなんだ? という方もおられるでしょう。
その下の行を見れば勘の良い方は分かるかもしれませんが、まあ平たくいえばrandomにあだ名をつけることです、「お前こっからはrって呼ぶぞ」という意味です。
そして二行目「fortuneって何?」という疑問ですが、これは変数です。
fortuneという名前の入れ物にr.random()で作った乱数を入れるよ! という文です。
乱数とは何か? ようはサイコロみたいなものです、何が出るか分からない数……なのですが、これは奥深い分野で現在コンピュータが完全な乱数を出すことはできません。
出しているのはバラバラの数っぽい規則性のある数です。
とはいえPythonであればかなりうまくばらけてくれるのでここを意識する必要はないです。
ちょっと昔、某ゲームがサイコロの目が偶数と奇数が交互に出る、というバグで祭りになりましたが、あれは精度の低い乱数生成処理をしたのが原因です。
おそらくCで書いたんだと踏んでいます。Cの乱数生成系は偶数と奇数を交互に出すためビットシフトなどの処理を行わないと乱数なのに規則性が出ちゃうんですね。
まあPythonの乱数はほぼ気にする必要がないアルゴリズムを使っているので気にしなくて大丈夫です。
話がずれました。
これでfortuneには0から1までの間のランダムな数が入ります。
では第二回としてこれを使っておみくじプログラムを作ります。
ここまでは下準備です。
ここからいよいよプログラミングの基本、条件分岐が出てきます、といってもそんなに難しくはないですが……
まずは仕様を決めましょう。
今回は「吉」「中吉」「大吉!」のいずれかがランダムで出るプログラムを作ります。え? 凶? 縁起が悪いから避けました。
ここで条件が3つに分岐することが決まりました。
ではまずは0から3までの間でランダムな数を出します。
とはいえこれは簡単で
fortune = fortune * 3
たったこれだけです、これには省略した書き方もあり
fortune *= 3
とも書けます。
数学に触れたことがあればイコールの使い方がおかしいと思うかもしれませんが多くの言語で=は右の数を左の変数に入れるという意味なので慣れてください。
ここでは0から1までの乱数fortuneに3をかけて0から3までの乱数にしています。
実を言えば後述の条件分岐で分岐の基準を変えればこれは必要ないのですが、人間に優しい読みやすいプログラムにするためこれを書いています。
それではいよいよ条件分岐に入っていきます。
一つ目の分岐はこのようになります。
if fortune <= 1:
print("吉")
たったこれだけです。ね、簡単でしょ。
ここでは変数fortuneが1以下だった場合「吉」と表示しています。
ifはその後の条件が真ならば(成り立つならば)コロン「:」の後の文を実行します。
注意点を挙げるならば、このような書き方をするのはPython特有ということです。
例えばC言語なら
if(fortune <= 1){
printf("吉);
}
となります。
Pythonでは行頭の空白が意味を持ち、おなじ数の空白が入っている行を一つのブロックと判断します。
上記のCでprintf();の前に空白が入っているのは純粋にその方が読みやすいからで、極端に書けばCなら
if(fortune <= 1){printf("吉");}
と書くこともできます、できますが……読みにくいですよね……
そんなわけでPythonではきれいなコードを書くのが強制されます、歯並びの矯正装置みたいなものですね、いやでもきれいに書かされるわけです。
では同じように中吉と大吉の処理も載せます
elif fortune <= 2:
print("中吉")
elif fortune <= 3:
print("大吉!")
難しいところは特にないでしょうifがelifに変わっただけですね。
あえて注意点を挙げるならここではelifを使う必要があります。
elifというのはその前のifまたはelifにマッチしなければ以降の条件を判断するというものです。
ここをifで書いてしまうと2以下の数が出たときに吉中吉大吉!と全部表示されてしまいます、それを避けるためここではelifを使ってください。
短いコードなので最後に全部載せておきます。このくらいなら運営も許してくれるんじゃないかなあと思うので多分大丈夫でしょう。
import random as r
fortune = r.random()
fortune = fortune * 3
if fortune <= 1:
print("吉")
elif fortune <= 2:
print("中吉")
elif fortune <= 3:
print("大吉!")
以上がおみくじプログラムになります。
前回で説明したpythonのプログラムを全部消してコピペすればあっという間に完成です。
何度か実行してみてちゃんと条件分岐しているのを確かめてくださいね!
プログラムは基本的に条件分岐と演算の繰り返しです、if文を覚えておけばそれなりにプログラミングができますので是非覚えておいてくださいね!
ぼちぼちネタが尽きそうなので更新ペース落ちるかもしれません……




