質問編集履歴

2

組み合わせ処理のコードを追記、その後出力値がいまだ不備がある

2018/04/14 06:34

投稿

python3_beginer
python3_beginer

スコア46

test CHANGED
File without changes
test CHANGED
@@ -249,3 +249,145 @@
249
249
 
250
250
 
251
251
  ```
252
+
253
+
254
+
255
+ #追記質問
256
+
257
+
258
+
259
+ ゲーム結果の組み合わせの処理が抜けているとご指摘を受けました。
260
+
261
+ 組み合わせ処理を追記後、トーナメント表の結果の空欄部分に勝敗の結果を記載できた。
262
+
263
+ しかし、トーナメント表の同じ人間同士の結果にまで勝敗の結果が入ってしまった。
264
+
265
+ 本来は、同じ人間同士のため結果表は'-'の表示のままにしたい。
266
+
267
+
268
+
269
+ 重ね重ね申し訳ありません。原因がお分かりの方がいらっさいましたら教えて頂きたいです。
270
+
271
+
272
+
273
+ また、質問内容の記述が分かりづらい点がいくつかありまして申し訳ございませんでした。
274
+
275
+
276
+
277
+
278
+
279
+
280
+
281
+
282
+
283
+ ```ここに言語を入力
284
+
285
+ コード
286
+
287
+
288
+
289
+
290
+
291
+ import itertools
292
+
293
+
294
+
295
+ #プレイヤーの数
296
+
297
+ N = int(input())
298
+
299
+
300
+
301
+ #ゲームの結果表示のボード作成
302
+
303
+ data_1 = [
304
+
305
+ list('-'*N) for _ in range(N)
306
+
307
+ ]
308
+
309
+ print('\n'.join(map(' '.join, data_1)))
310
+
311
+
312
+
313
+ # ゲームの結果
314
+
315
+ data = [
316
+
317
+ list(map(int,input().split())) for _ in range(N)
318
+
319
+ ]
320
+
321
+
322
+
323
+ x,y = zip(*data)
324
+
325
+ print(x,y)
326
+
327
+
328
+
329
+ #ゲーム結果の組み合わせ
330
+
331
+ data_trans = list(itertools.product(x,y))
332
+
333
+ x,y = zip(*data_trans)
334
+
335
+ print(x,y)
336
+
337
+
338
+
339
+
340
+
341
+ #ゲームボードに、結果を代入する
342
+
343
+ for a,b in zip(x,y):
344
+
345
+ data_1[a-1][b-1] = 'W'
346
+
347
+ data_1[b-1][a-1] = 'L'
348
+
349
+ print('\n'.join(map(' '.join, data_1)))
350
+
351
+
352
+
353
+
354
+
355
+ 出力値
356
+
357
+
358
+
359
+ - 〇 〇 〇 〇
360
+
361
+ × × × 〇 〇
362
+
363
+ × 〇 × 〇 〇
364
+
365
+ × × × - 〇
366
+
367
+ × × × 〇 ×
368
+
369
+
370
+
371
+
372
+
373
+ 期待値
374
+
375
+ - 〇 〇 〇 〇
376
+
377
+ × - 〇 〇 ×
378
+
379
+ × × - 〇 〇
380
+
381
+ × × × - ×
382
+
383
+ × 〇 〇 〇 -
384
+
385
+
386
+
387
+
388
+
389
+
390
+
391
+
392
+
393
+ ```

1

質問の内容をより具体的に訂正しました。

2018/04/14 06:34

投稿

python3_beginer
python3_beginer

スコア46

test CHANGED
File without changes
test CHANGED
@@ -114,19 +114,7 @@
114
114
 
115
115
 
116
116
 
117
- 次に入力例から取得した値を、上記のリストのindexに代入し、結果を表示
117
+ 次に入力例から取得した値を、上記のリストのindexに代入し、以下のような結果を表示したい
118
-
119
-
120
-
121
- 入力例1
122
-
123
- 3
124
-
125
- 1 3
126
-
127
- 2 1
128
-
129
- 2 3
130
118
 
131
119
 
132
120
 
@@ -148,17 +136,15 @@
148
136
 
149
137
  ```
150
138
 
139
+
140
+
151
141
 
152
142
 
153
143
  問題)
154
144
 
155
145
 
156
146
 
157
- トーナメント作成までは順調
158
-
159
-
160
-
161
- 入力例から得た数字、リストの項数に代入すると出力値がずれてしまった。
147
+ 上記の方法でコード作成するも期待値と出力値がずれてしまった。
162
148
 
163
149
 
164
150
 
@@ -242,58 +228,24 @@
242
228
 
243
229
 
244
230
 
231
+
232
+
233
+
234
+
235
+ 期待値
236
+
237
+ - 〇 〇 〇 〇
238
+
239
+ × - 〇 〇 ×
240
+
241
+ × × - 〇 〇
242
+
243
+ × × × - ×
244
+
245
+ × 〇 〇 〇 -
246
+
247
+
248
+
249
+
250
+
245
251
  ```
246
-
247
-
248
-
249
- #追記
250
-
251
-
252
-
253
- ゲームボードに、結果を代入する処理コードについて
254
-
255
-
256
-
257
- そのまま、記入例から得た数字をトーナメント表のindexに代入すると以下のようなエラーがでてしまう。
258
-
259
- そのため、上記のコードのように項数をひとつさげた。
260
-
261
-
262
-
263
- ```ここに言語を入力
264
-
265
- コード
266
-
267
-
268
-
269
- #ゲームボードに、結果を代入する
270
-
271
- for a,b in zip(x,y):
272
-
273
- data_1[a][b] = '〇'
274
-
275
- data_1[b][a] = '×'
276
-
277
- print('\n'.join(map(' '.join, data_1)))
278
-
279
-
280
-
281
-
282
-
283
-
284
-
285
- Traceback (most recent call last):
286
-
287
- File "Main.py", line 22, in <module>
288
-
289
- data_1[a][b] = '〇'
290
-
291
- IndexError: list index out of range
292
-
293
-
294
-
295
- ```
296
-
297
-
298
-
299
- エラーが出てしまう。そのため以下のようなコードで対応