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

回答編集履歴

3

追記

2019/07/06 10:08

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -1,3 +1,21 @@
1
+ 質問の主旨を少し読み間違えていました。
2
+ 思い通りにコードが動作しないのは、次の部分に問題があるからです。
3
+ > ```Python
4
+ if cmd in msg :
5
+ > ```
6
+
7
+ **空文字は、全ての文字列に含まれます。**
8
+ ```Python
9
+ >>> '' in ''
10
+ True
11
+ >>> '' in 'あいうえお'
12
+ True
13
+ ```
14
+
15
+ == で判定するか、先に not cmd で分岐するようにしてください。
16
+
17
+ 編集前
18
+ ---
1
19
  > 下記コードの場合、
2
20
  if response = '' :ということになるのでしょうか? not responseだと、空白ではないということになってしまうのではないでしょうか?
3
21
 

2

修正

2019/07/06 10:08

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -1,10 +1,16 @@
1
1
  > 下記コードの場合、
2
2
  if response = '' :ということになるのでしょうか? not responseだと、空白ではないということになってしまうのではないでしょうか?
3
3
 
4
- notを受けるのがシーケンス(文字列、リストなど)である場合、
5
- not seq は len(seq) == 0 と同意であると思って良いでしょう
4
+ notを受けるのがシーケンス(**註**)である場合、not seq は len(seq) == 0 と同意で
5
+ **註: 文字列・リスト・タプルなど。**
6
6
 
7
7
  細かい点ですが、空白ならTrueです。Falseなのは空文字だからです。
8
+ ```Python
9
+ >>> bool(' ')
10
+ True
11
+ >>> bool('')
12
+ False
13
+ ```
8
14
 
9
15
  ---
10
16
  PEP8にはこのように書かれています。

1

整理

2019/07/06 10:00

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -1,11 +1,15 @@
1
+ > 下記コードの場合、
2
+ if response = '' :ということになるのでしょうか? not responseだと、空白ではないということになってしまうのではないでしょうか?
3
+
4
+ notを受けるのがシーケンス(文字列、リストなど)である場合、
5
+ not seq は len(seq) == 0 と同意であると思って良いでしょう。
6
+
7
+ 細かい点ですが、空白ならTrueです。Falseなのは空文字だからです。
8
+
9
+ ---
1
10
  PEP8にはこのように書かれています。
2
11
  Pythonを長く使うつもりなのであれば、notを利用した書き方に慣れておいた方が良いでしょう。
3
12
 
4
13
  > For sequences, (strings, lists, tuples), use the fact that empty sequences are false.
5
14
 
6
- **引用元:** [PEP 8 -- Style Guide for Python Code | Python.org](https://www.python.org/dev/peps/pep-0008/#programming-recommendations)
15
+ **引用元:** [PEP 8 -- Style Guide for Python Code | Python.org](https://www.python.org/dev/peps/pep-0008/#programming-recommendations)
7
-
8
- ---
9
- > if not response :だと、response = ''と定義しているので、空白ではないというようになる気がしますが・・・。
10
-
11
- 細かい点ですが、空白ならTrueです。Falseなのは空文字だからです。