Differences between revisions 3 and 4
Revision 3 as of 2018-10-10 15:23:28
Size: 5676
Comment:
Revision 4 as of 2018-10-10 15:23:53
Size: 5676
Comment:
Deletions are marked like this. Additions are marked like this.
Line 47: Line 47:
 ||X||Y||        ||Y-X||(Y-X)+3||(Y-X)+3)%3||  ||X||Y||<-2> || ||Y-X||(Y-X)+3||(Y-X)+3)%3||

拡張問題(3)

  • 演習(3)

    拡張課題(3a)

    【関数定義】

    [じゃんけんの勝敗]を判定する関数

    EP_02_003a_janken_judge.py

  • 解答は,(手を文字列で書いて)素直に書くと,下記の関数ですが,ちょっと長くなってしまいましたね.

   1 def janken_judge_str( hand1, hand2 ):
   2     if hand1 == hand2:
   3         return( "あいこ" )
   4     elif hand1 == "グー":
   5         if hand2 == "チョキ":
   6             return( "勝ち" )
   7         else:
   8             return( "負け" )
   9     elif hand1 == "チョキ":
  10         if hand2 == "パー":
  11             return( "勝ち" )
  12         else:
  13             return( "負け" )
  14     else: 
  15         if hand2 == "グー":
  16             return( "勝ち" )
  17         else:
  18             return( "負け" )
  • 手を0,1,2で表現すると,わずか1行(読みやすく関数定義すれば2行)で勝敗が判定できます
    • あいこ,勝ち,負けを0,1,2で表現します

   1 def janken_judge( x, y ):
   2     return( ((y-x)+3)%3 )
  • X

    Y

    Y-X

    (Y-X)+3

    (Y-X)+3)%3

    0

    0

    グー

    グー

    あいこ

    0

    3

    0

    0

    1

    グー

    チョキ

    勝ち

    1

    4

    1

    0

    2

    グー

    パー

    負け

    2

    5

    2

    1

    1

    チョキ

    チョキ

    あいこ

    0

    3

    0

    1

    0

    チョキ

    グー

    負け

    -1

    2

    2

    1

    2

    チョキ

    パー

    勝ち

    1

    4

    1

    2

    2

    パー

    パー

    あいこ

    0

    3

    0

    2

    0

    パー

    グー

    勝ち

    -2

    1

    1

    2

    1

    パー

    チョキ

    負け

    -1

    2

    2

   1 #!/usr/bin/env python
   2 # -*- coding: utf-8 -*-
   3 # ==============================================================================
   4 # * Copyright (c) 2018 IIJIMA, Tadashi
   5 # *       (IIJIMA Laboratory, Dept. of Science and Technology, Keio University).
   6 # ==============================================================================
   7 # ソフトウェア工学[02] 拡張課題[02]-(000a)  EP_02_000a_.py
   8 # EP(Extended Problem) 02-000a: 
   9 #        2018-10-03 飯島 正 (iijima@ae.keio.ac.jp)
  10 # ==============================================================================
  11 # ===== 【関数定義】 「じゃんけんの勝敗」を文字列で返す関数 =====
  12 def janken_judge_str( hand1, hand2 ):
  13     if hand1 == hand2:
  14         return( "あいこ" )
  15     elif hand1 == "グー":
  16         if hand2 == "チョキ":
  17             return( "勝ち" )
  18         else:
  19             return( "負け" )
  20     elif hand1 == "チョキ":
  21         if hand2 == "パー":
  22             return( "勝ち" )
  23         else:
  24             return( "負け" )
  25     else: 
  26         if hand2 == "グー":
  27             return( "勝ち" )
  28         else:
  29             return( "負け" )
  30 # ==============================================================================
  31 # ===== 【関数定義】 「じゃんけんの勝敗」を0,1,2の整数で返す関数 =====
  32 # X Y                      Y-X (Y-X)+3 ((Y-X)+3)%3
  33 # 0 0 グー   グー   あいこ  0     3       0
  34 # 0 1 グー   チョキ 勝ち    1     4       1
  35 # 0 2 グー   パー   負け    2     5       2
  36 # 
  37 # 1 1 チョキ チョキ あいこ  0     3       0
  38 # 1 0 チョキ グー   負け   -1     2       2
  39 # 1 2 チョキ パー   勝ち    1     4       1
  40 #   
  41 # 2 2 パー   パー   あいこ  0     3       0
  42 # 2 0 パー   グー   勝ち   -2     1       1
  43 # 2 1 パー   チョキ 負け   -1     2       2 
  44 # ------------------------------------------------------------------------------  
  45 def janken_judge( x, y ):
  46     return( ((y-x)+3)%3 )
  47 # ==============================================================================
  48 # ===== 【関数定義】 「じゃんけんの勝敗」の文字列を,対応する整数0,1,2から返す関数 =====
  49 #     リスト(配列)もしくは辞書を使うともっと簡潔にできる → 後日
  50 def judge_str( x ):
  51     if x == 0:
  52         return( "あいこ" )
  53     elif x == 1:
  54         return( "勝ち" )
  55     else:
  56         return( "負け" )
  57 # ==============================================================================
  58 # ===== 【メイン・プログラム】  =====
  59 # ----- オープニングメッセージ -----
  60 print( "「じゃんけんの勝敗」を判定する: " )
  61   
  62 # ----- 計算と結果の表示 ----
  63 print()
  64 print( "グー  ×グー  : ", judge_str( janken_judge( 0, 0 ) ) )
  65 print( "グー  ×チョキ: ", judge_str( janken_judge( 0, 1 ) ) )
  66 print( "グー  ×パー  : ", judge_str( janken_judge( 0, 2 ) ) )
  67 
  68 print()
  69 print( "チョキ×グー  : ", judge_str( janken_judge( 1, 0 ) ) )
  70 print( "チョキ×チョキ: ", judge_str( janken_judge( 1, 1 ) ) )
  71 print( "チョキ×パー  : ", judge_str( janken_judge( 1, 2 ) ) )
  72 
  73 print()
  74 print( "パー  ×グー  : ", judge_str( janken_judge( 2, 0 ) ) )
  75 print( "パー  ×チョキ: ", judge_str( janken_judge( 2, 1 ) ) )
  76 print( "パー  ×パー  : ", judge_str( janken_judge( 2, 2 ) ) )
  77 # ==============================================================================


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