teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

1

Excelファイルの内容を載せました。またスクリーンショットではなくプログラム自体を載せました。

2017/12/01 07:31

投稿

Looove
Looove

スコア11

title CHANGED
File without changes
body CHANGED
@@ -5,12 +5,75 @@
5
5
  最終的な結果のみ表示したいのですが、if文の処理が終了する度に結果が表示されてしまいます。
6
6
 
7
7
  ###該当のソースコード
8
+ Excelファイルです
9
+ ![![イメージ説明](05c8e0ffbded36e2271d54aa092c5678.png)](6f1e0f1ea51b4e051fb81947fa0656af.png)
10
+ ```
11
+ import xlrd
12
+ import os.path
13
+ import numpy as np
14
+ import itertools
15
+ import sys
16
+ import openpyxl
8
17
 
18
+ xlfile = "結果.xlsx"
19
+ if os.path.exists(xlfile):
20
+ xls = xlrd.open_workbook(xlfile)
21
+ sheet1 = xls.sheet_by_index(0)
22
+ nrows = sheet1.nrows
23
+ ncols = sheet1.ncols
9
- ![イメージ説明](f36607c9644b206944e89ed8e596b8c2.png)
24
+ data = np.zeros(ncols*nrows).reshape((nrows, ncols))
25
+ surablist = []
26
+ atusalist = []
27
+ seibunlist = []
28
+ kekkalist = []
29
+ b = range(1,37)
30
+ for r in range(0, nrows):
31
+ for c in range(0, ncols):
10
- ![イメージ説明](c9cc230ebcc8ed1300890dd88c26f4de.png)
32
+ data[r,c] = sheet1.cell(r,c).value
11
33
 
12
- これだと以下のようにに出力されてしまいます
34
+ for r in range(0, nrows):
35
+ surablist.append(data[r,0])
36
+ atusalist.append(data[r,2])
37
+ seibunlist.append(data[r,3])
13
38
 
39
+ for i, _ in enumerate(surablist, 2):
40
+ if i == 6:
41
+ sys.exit()
42
+ for j in itertools.combinations(surablist, r=i):
43
+ if i == 2:
44
+ n = int(j[0]-1)
45
+ m = int(j[1]-1)
46
+ if data[n,3] == data[m,3] and data[n,2] + data[m,2] <= 2.0:
47
+ kekkalist.append(j)
48
+
49
+ elif i == 3:
50
+ o = int(j[0]-1)
51
+ p = int(j[1]-1)
52
+ v = int(j[2]-1)
53
+ if data[o,3] == data[p,3] and data[o,3] == data[v,3] and data[p,3] == data[v,3] and data[o,2] + data[p,2] + data[v,2] <= 2.0:
54
+ kekkalist.append(j)
55
+
56
+ elif i == 4:
57
+ g = int(j[0]-1)
58
+ u = int(j[1]-1)
59
+ z = int(j[2]-1)
60
+ a = int(j[3]-1)
61
+ if data[g,3] == data[u,3] and data[g,3] == data[a,3] and data[g,3] == data[z,3] and data[u,3] == data[z,3] and data[a,3] == data[u,3] and data[z,3] == data[a,3] and data[g,2] + data[u,2] + data[z,2] + data[a,2] <= 2.0:
62
+ kekkalist.append(j)
63
+
64
+ else:
65
+ q = int(j[0]-1)
66
+ w = int(j[1]-1)
67
+ e = int(j[2]-1)
68
+ f = int(j[3]-1)
69
+ h = int(j[4]-1)
70
+ if data[q,3] == data[w,3] and data[q,3] == data[f,3] and data[q,3] == data[e,3] and data[q,3] == data[h,3] and data[w,3] == data[e,3] and data[f,3] == data[w,3] and data[h,3] == data[w,3] and data[e,3] == data[f,3] and data[e,3] == data[h,3] and data[f,3] == data[h,3] and data[q,2] + data[w,2] + data[e,2] + data[f,2] + data[h,2] <= 2.0:
71
+ kekkalist.append(j)
72
+ print (kekkalist)
73
+ ```
74
+
75
+ これだと例えばですが以下のようにに出力されてしまいます
76
+
14
77
  [(1.0, 2.0)]
15
78
  [(1.0, 2.0), (1.0, 2.0, 3.0)]
16
79
  [(1.0, 2.0), (1.0, 2.0, 3.0), (1.0, 2.0, 3.0, 4.0)]