31. 演習5: 数当てゲーム1 (大小ヒント付き) を実装してみよう。

  • 共通補足: 説明文では便宜上「変数x」「変数y」と記載しているが、その変数が何を表すのか分かるように、適切な変数名を付けよう。


31.1. 概要

  • ゲームのルール

    • システム側で用意した正解に対し、ユーザの入力した数字が大きいか、小さいか、等しいかを判定し、その結果を返す。

  • 実装の流れ(ここは演習入る前に読まなくてもOK。演習5.1〜5.4に取り組んでから、振り返りとして読みなおしてみよう)

    • 手順1: 当てたい数を「任意の整数」とし、これをint型オブジェクトとして変数xへ保存する。ここでは乱数で決定するとする(使い方は後述)。

    • 手順2: ユーザからの入力を読み込み、これをint型オブジェクトとして変数yへ保存する。

    • 手順3: 変数x(正解)と変数y(ユーザ入力)とを比較し、次の3通りのprint()出力をする。

      • ユーザ入力が小さいのであれば「正解はもっと大きいよ!」と出力する。

      • ユーザ入力が大きいのであれば「正解はもっと小さいよ!」と出力する。

      • 正解と等しい数が入力されたのであれば「正解!!」と出力する。

    • 手順4: 手順3の手続きを「check_answer(変数x, 変数y)」として関数定義し、関数を使う。

>>> # 実行イメージ
>>> answer = random.randint(0, 100)
>>> check_answer(answer, 50)
正解はもっと大きいよ!
>>> check_answer(answer, 90)
正解はもっと小さいよ!
>>> check_answer(answer, 70)
正解はもっと小さいよ!
>>> check_answer(answer, 60)
正解はもっと小さいよ!
>>> check_answer(answer, 55)
正解はもっと小さいよ!
>>> check_answer(answer, 53)
正解!!
>>>

31.2. 乱数の利用

  • 作業内容

    • 正解データを乱数で用意する。具体的には以下のコードを実行し、その結果が実行するたびに異なることを確認せよ。また、random.randint()関数を利用し、正解数値を変数xに用意せよ。

    • 作業は、Pythonインタプリタ、テキストエディタ+ターミナル、IDE等、どれを使っても構わない。

  • ヒント

    • 乱数を用意するためのライブラリとして「random」を使おう。

    • random.randint()は、「第1引数〜第2引数」の両端を含む、その間のint型オブジェクトをランダムに生成する関数である。

    • 変数xには適切な変数名をつけること。

  • レポート

    • レポートにはコードと実行結果を掲載すること。

import random
random.randint(0, 100)
random.randint(0, 100)

31.3. ユーザ入力の読み込み

  • 作業内容

    • ユーザからの入力を読み込み、それをint型オブジェクトとして変数yへ保存せよ。

  • ヒント

    • ユーザへ入力を促す文面と、ユーザ入力となる数値は自由に決めて構わない。

    • 変数yには適切な変数名をつけること。

  • レポート

    • レポートにはコードと実行結果を掲載すること。


31.4. 大小判定してみよう

  • 作業内容

    • 変数x(正解)と変数y(ユーザ入力)とを比較し、次の3通りのprint()出力をする。

      • ユーザ入力が小さいのであれば「正解はもっと大きいよ!」と出力する。

      • ユーザ入力が大きいのであれば「正解はもっと小さいよ!」と出力する。

      • 正解と等しい数が入力されたのであれば「正解!!」と出力する。

    • Pythonインタプリタ上で作業すること。

      • なお、インタプリタ上でブロックを含むコードを書く際には「途中で書き間違えると冒頭から書き直す」必要がある。何度も間違えて書き直すことが手間に感じてきた場合には、テキストエディタを使って作業して構わない。

  • レポート

    • レポートにはコードと、どれか1通りの実行結果を掲載すること。


31.5. 関数として定義してみよう

  • 作業内容

    • 演習5.3で書いた処理に「関数check_answer()」として名前をつけて定義せよ。この関数の仕様は次のとおりである。

    • テキストエディタで作業し、「ex5_4.py」というファイル名で保存して動作確認しよう。

  • 関数の仕様

    • 関数名: check_answer

    • 入力(引数)

      • 第1引数: 正解データ(演習5.1で保存した変数)

      • 第2引数: ユーザ入力(演習5.2で保存した変数)

    • 出力

      • 演習5.3参照。(第1引数、第2引数の大小関係に応じて出力が変更される)

    • 戻り値

      • なし。

  • レポート

    • レポートには、シェル上で実行する様子と、実行結果を掲載すること。

    • 演習5.3と異なり、一度ファイルに保存したうえでの実行結果が出力される形になるため、スクリプトを実行する都度3通りの出力全てを得られるとは限らない。ここでは3通りの出力を確認するため、変数x(正解)を50として上書きしておき、変数y(ユーザ入力)を0, 50, 100の3通りで試すコードとなるようにすること。