回答編集履歴

5

修正

2020/12/27 10:16

投稿

退会済みユーザー
test CHANGED
@@ -62,7 +62,7 @@
62
62
 
63
63
  そもそもこの質問は質問として実用的な問題ではないと思います。
64
64
 
65
- 「勝ち・負け・引き分け」という結果データに対して、「勝ちです・負けです・引き分けです」という、結果に対応するメッセージを、勝ち・負け・引き分けという名前の付いた各関数で返す、という操作をif文を使わずに書け、という問題です。
65
+ 「勝ち・負け・引き分け」を表す**文字列**~~結果データ~~応じて、「勝ちです・負けです・引き分けです」という、結果に対応するメッセージを、勝ち・負け・引き分けという名前の付いた各関数で返す、という操作をif文を使わずに書け、という問題です。
66
66
 
67
67
 
68
68
 
@@ -102,45 +102,7 @@
102
102
 
103
103
 
104
104
 
105
- python3.6以降なら
106
105
 
107
- ```
108
-
109
- from enum import IntEnum, auto
110
-
111
- class Result(IntEnum):
112
-
113
- WIN = auto()
114
-
115
- LOSE = auto()
116
-
117
- DRAW = auto()
118
-
119
-
120
-
121
- result_messages = {
122
-
123
- Result.WIN:'you win !',
124
-
125
- Result.LOSE: 'you lose...',
126
-
127
- Result.DRAW: 'draw game'
128
-
129
- }
130
-
131
-
132
-
133
- result = Result.WIN
134
-
135
-
136
-
137
- mes = result_messages.get(result)
138
-
139
- assert mes is not None
140
-
141
- print(mes)
142
-
143
- ```
144
106
 
145
107
 
146
108
 

4

追加

2020/12/27 10:16

投稿

退会済みユーザー
test CHANGED
@@ -100,6 +100,50 @@
100
100
 
101
101
  ```
102
102
 
103
+
104
+
105
+ python3.6以降なら
106
+
107
+ ```
108
+
109
+ from enum import IntEnum, auto
110
+
111
+ class Result(IntEnum):
112
+
113
+ WIN = auto()
114
+
115
+ LOSE = auto()
116
+
117
+ DRAW = auto()
118
+
119
+
120
+
121
+ result_messages = {
122
+
123
+ Result.WIN:'you win !',
124
+
125
+ Result.LOSE: 'you lose...',
126
+
127
+ Result.DRAW: 'draw game'
128
+
129
+ }
130
+
131
+
132
+
133
+ result = Result.WIN
134
+
135
+
136
+
137
+ mes = result_messages.get(result)
138
+
139
+ assert mes is not None
140
+
141
+ print(mes)
142
+
143
+ ```
144
+
145
+
146
+
103
147
  私個人は超能力者ではないので、質問に書いてあるシンプルな問題を敷衍して、一般的実用的な問題に拡張し、質問者様がご満足されるような一般的な答えを出すことはできません。
104
148
 
105
149
 

3

修正

2020/12/27 10:03

投稿

退会済みユーザー
test CHANGED
@@ -88,7 +88,7 @@
88
88
 
89
89
 
90
90
 
91
- mes = result_mesages.get(result)
91
+ mes = result_messages.get(result)
92
92
 
93
93
  assert mes is not None
94
94
 

2

追加

2020/12/27 09:54

投稿

退会済みユーザー
test CHANGED
@@ -51,3 +51,57 @@
51
51
  print(do(result))
52
52
 
53
53
  ```
54
+
55
+
56
+
57
+ # 追記
58
+
59
+ 元のmethod_dict.get('win')()より100倍直観的だと思ったんですが、わかりにくいという指摘があったのであえて根本的な問題提起を追記します。
60
+
61
+
62
+
63
+ そもそもこの質問は質問として実用的な問題ではないと思います。
64
+
65
+ 「勝ち・負け・引き分け」という結果データに対して、「勝ちです・負けです・引き分けです」という、結果に対応するメッセージを、勝ち・負け・引き分けという名前の付いた各関数で返す、という操作をif文を使わずに書け、という問題です。
66
+
67
+
68
+
69
+ 上記のシンプルな問題をそのままで解決するなら結果に対するメッセージを辞書で対応させればいいだけの話と思います。
70
+
71
+ ```
72
+
73
+ result_messages = {
74
+
75
+ 'win':'you win !',
76
+
77
+ 'lose': 'you lose...',
78
+
79
+ 'draw': 'draw game'
80
+
81
+ }
82
+
83
+
84
+
85
+ # なんやかんや計算して結果は勝ちと出たようです。
86
+
87
+ result = 'win'
88
+
89
+
90
+
91
+ mes = result_mesages.get(result)
92
+
93
+ assert mes is not None
94
+
95
+
96
+
97
+ # 勝負結果のメッセージを表示します。
98
+
99
+ print(mes)
100
+
101
+ ```
102
+
103
+ 私個人は超能力者ではないので、質問に書いてあるシンプルな問題を敷衍して、一般的実用的な問題に拡張し、質問者様がご満足されるような一般的な答えを出すことはできません。
104
+
105
+
106
+
107
+ 複雑度が大きすぎてLintに怒られるから、というのも状況も理解に苦しむのですが、本質的に解決したいならば、その「困っている」現状のソースをそのまま掲載した方が早いのではないでしょうか。

1

修正

2020/12/27 09:54

投稿

退会済みユーザー
test CHANGED
@@ -1,4 +1,6 @@
1
1
  ```
2
+
3
+ import sys
2
4
 
3
5
  def do(command):
4
6