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

質問編集履歴

1

コードの修正

2019/01/14 10:37

投稿

22Go
22Go

スコア55

title CHANGED
File without changes
body CHANGED
@@ -33,76 +33,41 @@
33
33
 
34
34
  ```
35
35
  ```python
36
+ A = ""
37
+ max_len = [0]
38
+ min_len = [10000000000000000000000]
39
+ max_number = [0]
40
+ min_number = [0]
41
+
36
42
  with open("short.sequ.txt") as f:
37
-
38
- max_len = 0
39
- max_protein = ""
40
-
41
- min_len = 10000000000000
42
- min_protein = ""
43
-
44
- def change(protein, seq):
45
- global max_len,max_protein,min_len,min_protein
46
- seq_len = len(seq)
47
- if seq_len == 0:
48
- return
49
-
50
- else:
51
- print([seq_len])
52
-
53
- if seq_len > max_len:
54
- max_len,max_protein,min_len,min_protein = seq_len,protein,seq_len,protein
55
-
56
- if seq_len < min_len:
57
- min_len,min_protein = seq_len,protein
58
-
59
-
60
- a_line = ""
61
- a_seq = ""
62
-
63
43
  for line in f:
64
44
  strip_line = line.rstrip()
45
+ len_number = len(strip_line)
46
+
65
47
  if strip_line.startswith(">"):
66
- a_line = strip_line
67
- change(a_line, a_seq)
68
- a_seq = ""
69
- print(strip_line+'\n')
48
+ print(strip_line+"\n")
49
+ A = ""
50
+
70
51
  else:
71
- A = [len(a_seq+strip_line)]
72
- a_seq += strip_line
52
+ A += strip_line
73
- msg1 = "最大アミノ酸エントリ:"
74
- msg2 = "長さ:"
75
- msg3 = "最小アミノ酸エントリ:"
76
- print(msg1,max_protein,msg2,max_len)
77
- print(msg3,min_protein,msg2,min_len)
78
53
 
54
+ if len_number == 0:
55
+ print(len(A))
56
+ A = ""
57
+
58
+ if [len(A)] > max_len:
59
+ max_number.append(len(A))
79
60
 
80
- ```
81
- 1、毎回def changeを使用するので最初に関数を持ってきたいのですがデータを読み込むコードとエラーが生じてしまう
61
+ if [len(A)] < min_len:
62
+ min_number.append(len(A))
63
+
64
+
82
65
 
66
+ print(max(max_number))
83
- 2、global関数を使用せずに最大値、最小値を更新する方法が知りたい
67
+ new_number = [i for i in min_number if i > 0]
68
+ print(min(new_number))
84
69
 
85
- 3、関数について使い方は理解したが、最大値が見つかる度にリストに格納していく方法がわからない
86
70
 
87
- 以前も質問させていただきましたが、自分の中で解決できないので今一度アドバイスをいただきたいです。
88
- 宜しくお願い致します。
89
71
 
90
- 理想の出力は
91
- ```python
92
- >YP_009518834.1 putative uncharacterized protein YjiT [Escherichia coli str. K-12 substr. MG1655]
93
- [100]
94
-
95
- >YP_009518834.1 putative uncharacterized protein YjiT [Escherichia coli str. K-12 substr. MG1655]
96
- [200]
97
-
98
- >YP_009518834.1 putative uncharacterized protein YjiT [Escherichia coli str. K-12 substr. MG1655]
99
- [300]
100
-
101
- 最大アミノ酸:>YP_009518834.1 putative uncharacterized protein YjiT [Escherichia coli str. K-12 substr. MG1655]
102
- 最大値:300
103
-
104
- 最小アミノ酸:>YP_009518834.1 putative uncharacterized protein YjiT [Escherichia coli str. K-12 substr. MG1655]
105
- 最小値:100
106
-
107
72
  ```
108
- った感じで
73
+ 最大値最小値が見つかった時に、前行と対応させてリストに格納るにはどうしたらいいでしょうか?