回答編集履歴

4

余分な空白の削除

2017/09/15 10:32

投稿

namnium1125
namnium1125

スコア2043

test CHANGED
@@ -162,7 +162,7 @@
162
162
 
163
163
  n = int(i)
164
164
 
165
- if 0<=n and n <= 100:
165
+ if 0<=n and n<=100:
166
166
 
167
167
  result.append(n)
168
168
 

3

さらに追記しました。

2017/09/15 10:32

投稿

namnium1125
namnium1125

スコア2043

test CHANGED
@@ -129,3 +129,75 @@
129
129
  print(is_int_in_array(string2)) # [1, 0, 0, 2, 0, 0, 3, 0, 0]
130
130
 
131
131
  ```
132
+
133
+
134
+
135
+ ##追記3
136
+
137
+
138
+
139
+ ○追記2について補足
140
+
141
+ 後々になって考えてみれば文字列なら`int(文字列)`でエラーが出るか見るだけでいいんですよね…まぁ配列がメインだったということで。
142
+
143
+
144
+
145
+ ○返信に対して
146
+
147
+
148
+
149
+ 指定というのがどういう意味かによりますけど、条件分岐させるということならそのようなif節を加えるだけで良いかと。
150
+
151
+
152
+
153
+ ```lang-python
154
+
155
+ def is_int_in_array(arr):
156
+
157
+ result = []
158
+
159
+ for i in arr:
160
+
161
+ try:
162
+
163
+ n = int(i)
164
+
165
+ if 0<=n and n <= 100:
166
+
167
+ result.append(n)
168
+
169
+ '''
170
+
171
+ else:
172
+
173
+ return False
174
+
175
+ '''
176
+
177
+ except ValueError:
178
+
179
+ return False
180
+
181
+ return result
182
+
183
+
184
+
185
+ if __name__=='__main__':
186
+
187
+ array1 = ['100','.','abc']
188
+
189
+ print(is_int_in_array(array1)) # False
190
+
191
+
192
+
193
+ array2 = ['0','50','100','200','300']
194
+
195
+ print(is_int_in_array(array2)) # [0, 50, 100]
196
+
197
+ ```
198
+
199
+ 収まらなければ弾く(resultに加えない)だけならそのままで、収まらない場合が一つでもあれば`False`を返すようにするなら途中のコメントアウト(''')を取って下さい。m(_ _)m
200
+
201
+
202
+
203
+ 追記が長くなってしまいすみません、、

2

もう一度追記しました。

2017/09/15 10:18

投稿

namnium1125
namnium1125

スコア2043

test CHANGED
@@ -67,3 +67,65 @@
67
67
  print(*(is_int_in_array(array))) # 100 False False
68
68
 
69
69
  ```
70
+
71
+
72
+
73
+ ##追記2
74
+
75
+
76
+
77
+ 一つでも変換できなければ`False`を返すようにするならばこうですかね?
78
+
79
+ ジェネレータにはできませんでしたが、、
80
+
81
+
82
+
83
+ あともしかして文字列を配列とみなすという意味だったとか?その場合でも下記プログラムでいけるはずです。
84
+
85
+
86
+
87
+ ```lang-python
88
+
89
+ def is_int_in_array(arr):
90
+
91
+ result = []
92
+
93
+ for i in arr:
94
+
95
+ try:
96
+
97
+ result.append(int(i))
98
+
99
+ except ValueError:
100
+
101
+ return False
102
+
103
+ return result
104
+
105
+
106
+
107
+ if __name__=='__main__':
108
+
109
+ array1 = ['100','.','abc']
110
+
111
+ print(is_int_in_array(array1)) # False
112
+
113
+
114
+
115
+ array2 = ['100','200','300']
116
+
117
+ print(is_int_in_array(array2)) # [100, 200, 300]
118
+
119
+
120
+
121
+ string1 = '100.abc'
122
+
123
+ print(is_int_in_array(string1)) # False
124
+
125
+
126
+
127
+ string2 = '100200300'
128
+
129
+ print(is_int_in_array(string2)) # [1, 0, 0, 2, 0, 0, 3, 0, 0]
130
+
131
+ ```

1

追記しました。

2017/09/15 07:47

投稿

namnium1125
namnium1125

スコア2043

test CHANGED
@@ -29,3 +29,41 @@
29
29
  print(is_int_in_array(array)) # [100, False, False]
30
30
 
31
31
  ```
32
+
33
+
34
+
35
+ ##追記
36
+
37
+
38
+
39
+ ○`False`で返せとのことでしたから返してますけど、配列で返すなら`result.append(False)`を取り除き、そこを`pass`にすることで数値だけの配列にできます。
40
+
41
+
42
+
43
+ ○ついでにジェネレータにしてみました(^_^)
44
+
45
+
46
+
47
+ ```lang-python
48
+
49
+ def is_int_in_array(arr):
50
+
51
+ for i in arr:
52
+
53
+ try:
54
+
55
+ yield int(i)
56
+
57
+ except ValueError:
58
+
59
+ yield False
60
+
61
+
62
+
63
+ if __name__=='__main__':
64
+
65
+ array = ['100','.','abc']
66
+
67
+ print(*(is_int_in_array(array))) # 100 False False
68
+
69
+ ```