実際にプログラムを書いてみよう 〜その1〜
数あてゲーム
それでは、前回習ったことを参考に新しいプログラムを書いてみましょう
- 0から9の整数を乱数により生成する
- キーボードから予想を入力してもらう
- 予想が当たれば「正解」と表示します
- その他の場合は大きいか小さいかヒントを出し、2に戻ります
とても簡単なプログラムです
まず、最初の項目ですが、これは前回習いました
int(10 * random.random()) でも randrange(10) でも構いません
これを a に入れることにしましょう
ここで、道具箱と入れ物を準備するのを思い出さなければなりません
import random
a = 0
この場合、入れ物の方は必ずしも初期化する必要はなさそうですが、念の為書いておきましょう ところで、プログラムが長くなってきたり、自分以外の人が読んだりすることを考えて、ところどころに説明文を書いておくと、後で読み返すときに便利です
import random # 乱数を作る道具箱a = 0 # 生成した乱数の入れ物
a = random.randrange(10) # 0から9の乱数を整数化して a に入れる
あっという間に、最初の部分ができました #の記号のあとは行末までコンピュータが処理しないので、自由に自分用メモを挿入できます
次の部分です キーボードから数字を入力してもらいましょう
b = input("0から9の数字を入力してください: ")
これで、入力された数字が b に入りました
では、 a と b を比べましょう
if a == b:print("正解です")elif a < b:print("それより小さい整数です")else:print("それより大きい整数です")
この if, elif, else についてですが、最初の if ~ の条件に合致したら、すぐ下の命令を実行します 合致しない場合は次の elif に進みます 最初の条件にも次のにも合致しない場合は、 else のあとの命令を実行します
数字の場合、数値は「同じ」「大きい」「小さい」以外にはないので、条件式はこれでいいでしょう
if 条件1 :
命令1
elif 条件2 :
命令2
else:
命令3
条件はいくらでも増やせます ところが、これでは、次の当たるまで再入力を促すことができません
外れた場合に繰り返す命令ですが、これが意外に難しい BASICプログラムなら行番号があるので、GOTO XX と戻る箇所を指定すればよかったのですが、PythonやC言語には行番号もラベルもないので、ループを作って条件に合うまで繰り返す方法を取りましょう また、サブルーチンを作成してそれを読み込み実行することもできますが、基本は同じです
while ~ という制御は条件〜に合うまで下の命令を繰り返します for ~ を使って、予め繰り返す回数を9回までと制限しても良いでしょう 今回は while で作ってみましょう
while a != b: # aがbではない場合、下記の段落を繰り返すif a < b:print("それより小さい整数です")b = input("0から9の数字を入力してください: ")else:print("それより大きい整数です")b = input("0から9の数字を入力してください: ")print("正解です")
同じ命令が何回も繰り返し書かれていて美しくないですが、とりあえずはこれでいいでしょう aとbが同じになったら、最後の行を実行してプログラムが終了します
まとめるとこうなります
import random # 乱数を作る道具箱a = 0 # 生成した乱数の入れ物a = random.randrange(10) # 0から9の乱数を整数化して a に入れるb = 0 # キーボードからの入力を入れる入れ物b = input("0から9の数字を入力してください: ")while a != b: # aがbではない場合、下記の段落を繰り返すif a < b:print("それより小さい整数です")b = input("0から9の数字を入力してください: ")else:print("それより大きい整数です")b = input("0から9の数字を入力してください: ")# ここまでが while の段落print("正解です")
まずは、動作するプログラムが書けたことに満足しましょう 次回は、実行して気がついたいろいろな不具合と修正する方法です
Comments
Post a Comment