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

回答編集履歴

2

コード修正

2019/08/20 22:54

投稿

8524ba23
8524ba23

スコア38352

answer CHANGED
@@ -14,6 +14,9 @@
14
14
  is_match[1] = 1
15
15
  elif re.match(r'[0-9]',c):
16
16
  is_match[2] = 1
17
+ # もし「上記のみで構成される」という制約をつけたいなら、以下のコメント部分を生かす
18
+ #else:
19
+ # return False # それ以外はだめ
17
20
 
18
21
  return sum(is_match) == 3 # すべてを含む
19
22
 

1

回答修正

2019/08/20 22:54

投稿

8524ba23
8524ba23

スコア38352

answer CHANGED
@@ -1,9 +1,4 @@
1
- 0. 数字文字かの判定において`digit=[1,2,...`のように文字ではなく**数値**のリストを用いている
1
+ 数字文字かの判定において`digit=[1,2,...`のように文字ではなく**数値**のリストを用いているのがうまくいかない原因です。該当文字かを判定するには正規表現を用いると少し簡潔に書けます。
2
- 0. (提示例では判定をすりぬけてしまいますが)`-`などの英数以外の文字を考慮していない
3
-
4
- のがうまくいかない原因です。
5
-
6
- 該当文字かを判定するには正規表現を用いると少し簡潔に書けます。
7
2
  ```Python
8
3
  import re
9
4
 
@@ -19,8 +14,6 @@
19
14
  is_match[1] = 1
20
15
  elif re.match(r'[0-9]',c):
21
16
  is_match[2] = 1
22
- else:
23
- return False # 上記以外が含まれていたらだめ
24
17
 
25
18
  return sum(is_match) == 3 # すべてを含む
26
19