Differences between revisions 4 and 5
Revision 4 as of 2018-10-14 03:12:56
Size: 3605
Comment:
Revision 5 as of 2018-10-14 23:45:53
Size: 404
Comment:
Deletions are marked like this. Additions are marked like this.
Line 17: Line 17:

 ||<|2>演習(4)||<|2>拡張課題(4a)||<|2>【関数定義】||[じゃんけん]対戦ゲーム||
 ||<|1> [[../EP_004a|EP_02_004a_janken_game.py|target="_blank"]]||


 * 解答は基本的に,下記の二つの関数です.


{{{#!highlight python
import random

def janken_random_hand():
    return( random.randint( 0, 2 ) )
}}}

{{{#!highlight python
def janken_judge( x, y ):
    return( ((y-x)+3)%3 )
}}}

 *

{{{#!highlight python
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# ==============================================================================
# * Copyright (c) 2018 IIJIMA, Tadashi
# * (IIJIMA Laboratory, Dept. of Science and Technology, Keio University).
# ==============================================================================
# ソフトウェア工学[02] 拡張課題[02]-(000a) EP_02_000a_.py
# EP(Extended Problem) 02-000a:
# 2018-10-03 飯島 正 (iijima@ae.keio.ac.jp)
# ==============================================================================
# ----- 乱数を取り扱うrandomモジュールをインポートする -----
import random
# ==============================================================================
# ===== 【関数定義】 乱数で「じゃんけんの手」を求める関数 (0,1,2の整数で返す) =====
def janken_random_hand():
    return( random.randint( 0, 2 ) )
# ==============================================================================
# ===== 【関数定義】 「じゃんけんの勝敗」を0,1,2の整数で返す関数 =====
def janken_judge( x, y ):
    return( ((y-x)+3)%3 )
# ==============================================================================
# ===== 【関数定義】 「じゃんけんの勝敗」の文字列を,対応する整数0,1,2から返す関数 =====
# リスト(配列)もしくは辞書を使うともっと簡潔にできる → 後日
def judge_str( x ):
    if x == 0:
        return( "あいこ" )
    elif x == 1:
        return( "勝ち" )
    else:
        return( "負け" )
# ==============================================================================
# ===== 【メイン・プログラム】  =====
# ----- オープニングメッセージ -----
print( "じゃんけんをしましょう.コンピュータはランダムに手を決めます: " )

# ----- じゃんけんゲーム -----
hand = int()
judge = int()
while True:
    computer_hand = janken_random_hand()
    print( "あなたの手は何ですか" )
    your_hand = input( "(グーならg, チョキならc, パーならp,終了ならXを入力してください)>>> " )
    print( "コンピュータの手は", computer_hand, "でした" )
    if your_hand == "g":
        judge = janken_judge( 0, computer_hand )
    elif your_hand == "c":
        judge = janken_judge( 1, computer_hand )
    elif your_hand == "p":
        judge = janken_judge( 2, computer_hand )
    elif your_hand == "X":
        break
    
    print( judge_str( judge ) )
# ==============================================================================

}}}



----

拡張問題(4)

*


概要

[ edit ]

*


ヒント

この課題で使うPythonの機能 (学習のヒント)

[ edit ]

この課題の解き方 (問題解決のヒント)

[ edit ]

  • この課題の解き方 (問題解決のヒント) ....
    • これまでの課題でやってきたことを総合すればできそうですね.
      • Xが入力されるまで,入力を繰り返す
      • じゃんけんの「手」を乱数で決める
      • じゃんけんの勝敗を判定する
    • 後日,リストについて取り上げた後に,勝敗の履歴,勝率などを終了時に表示させるように改良するのも悪くありませんね.
*


実行例

[ edit ]

  • 実行例(1) ... クリックすると拡大します

fig-01

*


プログラム例: 本質的な部分 (授業中に順次公開します)

[ edit ]

  • 解答は基本的に,下記の二つの関数です.

import random

def janken_random_hand():
    return( random.randint( 0, 2 ) )

def janken_judge( x, y ):
    return( ((y-x)+3)%3 )
*


高度な話題 (授業中,もしくは授業後に順次公開します)

[ edit ]

  • 高度な話題へのリンク: 授業の流れを阻害しないように別ページにします

    • (後日の回の授業内容にはなる可能性がありますが,この回の授業内容には含めません).
    • に関するものです.


プログラム例: 配布コード (授業中に順次公開します)

*

*

SoftEng: Python/Prog/Practice/Extended/02/EP_004a (last edited 2018-10-28 15:20:52 by TadashiIijima)