質問編集履歴

1

コードの修正

2019/01/14 10:37

投稿

22Go
22Go

スコア55

test CHANGED
File without changes
test CHANGED
@@ -68,89 +68,73 @@
68
68
 
69
69
  ```python
70
70
 
71
+ A = ""
72
+
73
+ max_len = [0]
74
+
75
+ min_len = [10000000000000000000000]
76
+
77
+ max_number = [0]
78
+
79
+ min_number = [0]
80
+
81
+
82
+
71
83
  with open("short.sequ.txt") as f:
72
84
 
73
-
85
+ for line in f:
74
86
 
75
- max_len = 0
87
+ strip_line = line.rstrip()
76
88
 
77
- max_protein = ""
89
+ len_number = len(strip_line)
78
90
 
79
-
91
+
80
92
 
81
- min_len = 10000000000000
93
+ if strip_line.startswith(">"):
82
94
 
83
- min_protein = ""
95
+ print(strip_line+"\n")
84
96
 
85
-
86
-
87
- def change(protein, seq):
88
-
89
- global max_len,max_protein,min_len,min_protein
90
-
91
- seq_len = len(seq)
92
-
93
- if seq_len == 0:
97
+ A = ""
94
-
95
- return
96
98
 
97
99
 
98
100
 
99
101
  else:
100
102
 
103
+ A += strip_line
104
+
105
+
106
+
107
+ if len_number == 0:
108
+
101
- print([seq_len])
109
+ print(len(A))
110
+
111
+ A = ""
102
112
 
103
113
 
104
114
 
105
- if seq_len > max_len:
115
+ if [len(A)] > max_len:
106
116
 
107
- max_len,max_protein,min_len,min_protein = seq_len,protein,seq_len,protein
117
+ max_number.append(len(A))
118
+
119
+
120
+
121
+ if [len(A)] < min_len:
122
+
123
+ min_number.append(len(A))
108
124
 
109
125
 
110
126
 
111
- if seq_len < min_len:
127
+
112
-
113
- min_len,min_protein = seq_len,protein
114
128
 
115
129
 
116
130
 
117
-
131
+ print(max(max_number))
118
132
 
119
- a_line = ""
133
+ new_number = [i for i in min_number if i > 0]
120
134
 
121
- a_seq = ""
135
+ print(min(new_number))
122
136
 
123
-
124
137
 
125
- for line in f:
126
-
127
- strip_line = line.rstrip()
128
-
129
- if strip_line.startswith(">"):
130
-
131
- a_line = strip_line
132
-
133
- change(a_line, a_seq)
134
-
135
- a_seq = ""
136
-
137
- print(strip_line+'\n')
138
-
139
- else:
140
-
141
- A = [len(a_seq+strip_line)]
142
-
143
- a_seq += strip_line
144
-
145
- msg1 = "最大アミノ酸エントリ:"
146
-
147
- msg2 = "長さ:"
148
-
149
- msg3 = "最小アミノ酸エントリ:"
150
-
151
- print(msg1,max_protein,msg2,max_len)
152
-
153
- print(msg3,min_protein,msg2,min_len)
154
138
 
155
139
 
156
140
 
@@ -158,58 +142,4 @@
158
142
 
159
143
  ```
160
144
 
161
- 1、毎回def changeを使用するので最初に関数を持ってきたいのですがデータを読み込むコードとエラーが生じてしまう
162
-
163
-
164
-
165
- 2、global関数を使用せずに最大値、最小値を更新する方法が知りたい
166
-
167
-
168
-
169
- 3、関数について使い方は理解したが、最大値が見つかる度にリストに格納しく方法がわらない
145
+ 最大値と最小値が見つかった時、前行と対応させてリストに格納するにはどうたらいでしょう
170
-
171
-
172
-
173
- 以前も質問させていただきましたが、自分の中で解決できないので今一度アドバイスをいただきたいです。
174
-
175
- 宜しくお願い致します。
176
-
177
-
178
-
179
- 理想の出力は
180
-
181
- ```python
182
-
183
- >YP_009518834.1 putative uncharacterized protein YjiT [Escherichia coli str. K-12 substr. MG1655]
184
-
185
- [100]
186
-
187
-
188
-
189
- >YP_009518834.1 putative uncharacterized protein YjiT [Escherichia coli str. K-12 substr. MG1655]
190
-
191
- [200]
192
-
193
-
194
-
195
- >YP_009518834.1 putative uncharacterized protein YjiT [Escherichia coli str. K-12 substr. MG1655]
196
-
197
- [300]
198
-
199
-
200
-
201
- 最大アミノ酸:>YP_009518834.1 putative uncharacterized protein YjiT [Escherichia coli str. K-12 substr. MG1655]
202
-
203
- 最大値:300
204
-
205
-
206
-
207
- 最小アミノ酸:>YP_009518834.1 putative uncharacterized protein YjiT [Escherichia coli str. K-12 substr. MG1655]
208
-
209
- 最小値:100
210
-
211
-
212
-
213
- ```
214
-
215
- といった感じです。