実際にプログラムを書いてみよう 〜その1〜

数あてゲーム

それでは、前回習ったことを参考に新しいプログラムを書いてみましょう

  1. 0から9の整数を乱数により生成する
  2. キーボードから予想を入力してもらう
  3. 予想が当たれば「正解」と表示します
  4. その他の場合は大きいか小さいかヒントを出し、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

Popular posts from this blog