質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

155閲覧

文字列同士のand演算について

akayon

総合スコア32

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2019/03/02 11:26

python

1if 'auejfef' and 'jfjefef': 2 print(1) 3 4#出力 51

上記のように、適当な文字列同士で and を取るとどうやらTrueになるようですが、なぜでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

a and bは、aもbも真値であるときに真値を返します。(註)

Pythonにおいては空でない文字列は真値ですので、
空でない適当な文字列同士のandを取ると常に真値が返ることになります。

どのようなオブジェクトでも真理値として判定でき、 if や while の条件あるいは以下のブール演算の被演算子として使えます。

...中略...

主な組み込みオブジェクトで偽と判定されるものを次に示します:

  • 偽であると定義されている定数: None と False
  • 数値型におけるゼロ: 0, 0.0, 0j, Decimal(0), Fraction(0, 1)
  • 空のシーケンスまたはコレクション: '', (), [], {}, set(), range(0)

引用元: Python 標準ライブラリ » 真理値判定


註記
もっと詳しく言うと、bが返ります。
試しに print('abc' and 'def') とすると 'def' が返ることが確認できます。

『適当な文字列同士で and を取るとどうやらTrueになる』というのは誤りですが、
if文の条件として使う分には真値とTrueを同一視してもコーディングに支障は無いでしょう。

投稿2019/03/02 11:30

編集2019/03/02 11:39
LouiS0616

総合スコア35660

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

akayon

2019/03/02 11:35

「Pythonにおいては空でない文字列は真値ですので」<- 知りませんでした! ありがとうございます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問