前提・実現したいこと
3×3のまるばつゲームの結果が、文字列のリストとして与えられています。
縦・横・斜めのいずれかでOが揃っていれば"O"を返し、Xが揃っていれば"X"を返し、そのどちらでもなければ"D"を返す関数を作りました。(文字列のリストにおいて、O,Xのいずれも埋まっていないところには"."を配置しています。)
しかし、ある文字列のリストに対してこの関数を試してみたところ、正しい結果を返しませんでした。(本来は"O"と返すべき所を"D"と返した。)
なぜ正しい結果を返さなかったのか、その原因を知りたいです。
発生している問題
python
1def checkio(a): 2 for i in range(3): 3 if a[i][0] == a[i][1] == a[i][2] == 'O': 4 return "O" 5 elif a[i][0] == a[i][1] == a[i][2] == 'X': 6 return "X" 7 elif a[0][i] == a[1][i] == a[2][i] == 'O': 8 return "O" 9 elif a[0][i] == a[1][i] == a[2][i] == 'X': 10 return "X" 11 elif a[0][0] == a[1][1] == a[2][2] == 'O': 12 return "O" 13 elif a[0][0] == a[1][1] == a[2][2] == 'X': 14 return "X" 15 elif a[0][2] == a[1][1] == a[2][0] == 'O': 16 return "O" 17 elif a[0][2] == a[1][1] == a[2][0] == 'X': 18 return "X" 19 else: 20 return "D"
文字列のリスト
python
1 2a=[ 3 "X.X", 4 "OOO", 5 "OXO" 6] 7 8checkio(a) # --> "D"
試したこと
関数の最初の方に書いた「for i in range(3):」の挙動でうまく関数が機能していないのだとは思いますが、なぜそのfor文がうまく機能しないのかがわからないでいます。for文を使わずともこの関数は作成できると思いますが、なぜfor文が機能しないのかの理由を教えていただきたいです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/03/26 10:55
2018/03/26 11:03