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

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

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

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

5回答

1894閲覧

Python初心者ですが and 演算子の使い方で 論理式として評価されない場合の挙動についての質問です

Kup

総合スコア11

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

1クリップ

投稿2020/06/10 01:40

win10のpythonのIDLEを使用しています

1 and 0  が 0になり
1 and 2  など1と1以上の場合では大きい方の値が返ってきますが
論理値が返ってくるわけでもエラーにもならないのはどうしてでしょう?

論理演算子も論理値を扱う以外の演算子としての挙動はどのように決まっているのでしょうか?(数値や文字列など)

こういう場合どこを調べたら早いとかもあればお教えください

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

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

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

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

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

LouiS0616

2020/06/10 01:43

> 1 and 2  など1と1以上の場合では大きい方の値が返ってきますが 2 and 1 も試してみると良いですよ。
Kup

2020/06/10 01:47

順序が逆でも同じでしたが?
LouiS0616

2020/06/10 01:56

2 and 1 だと 1 が返ってきますよ。
guest

回答5

0

ベストアンサー

こういう場合どこを調べたら早いとかもあればお教えください

私の場合、分からないことがあったらまずは公式のドキュメントを見ます。
Python 3.8.3 ドキュメント
ブール演算 --- and, or, not | 公式ドキュメント
ただ、公式のドキュメントは専門用語が多く理解できないときがたまにあるので、そのときは以下のサイトをよく参考にしています。
note.nkmk.me
論理演算子についても分かりやすく説明してくれています。
Pythonの論理演算子and, or, not(論理積、論理和、否定)| note.nkmk.me

私もPython歴2か月程度の初心者ですが、この方法で大抵の問題は解決できているので試してみてはどうでしょうか。

投稿2020/06/10 03:20

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

Kup

2020/06/10 05:41

論理演算としての定義がわかりました。 たまたま見た解説が真/偽の返り値しか表示してなったのでわかりませんでした ドキュメントも見たのですが気が付きませんでした。 教えていただき納得しました。 他の皆様もご説明ありがとうございました
guest

0

1 and 2  など1と1以上の場合では大きい方の値が返ってきますが

ちがいます

python

1print(1 and 2) # => 2 2print(2 and 1) # => 1 3print(0 and 1) # => 0 4print(1 and 0) # => 0

リファレンス

式 x and y は、まず x を評価します; x が偽なら x の値を返します; それ以外の場合には、 y の値を評価し、その結果を返します


ちなみに「真」「偽」というのはBooleanクラスのTrue/Falseのことではありません。
True/Falseは数ある真/偽とみなされる物のうちの一つです。

ブール演算のコンテキストや、式が制御フローの文で使われる際には、次の値は偽だと解釈されます: False 、 None 、すべての型における数値の 0、空の文字列、空のコンテナ (文字列、タプル、リスト、辞書、集合、凍結集合など)。 それ以外の値は真だと解釈されます。

投稿2020/06/10 01:46

編集2020/06/10 01:55
ozwk

総合スコア13521

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

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

Kup

2020/06/10 05:37

なるほど、ブール演算という働きがあるのですね
guest

0

Pythonのand演算子は、第一引数(左側)が偽であれば第一引数を返し、そうでなければ第二引数(右側)を返します。

公式ドキュメント

|演算|結果|注釈|

|:--|:--:|--:|
|x or y|x が偽なら y, そうでなければ x|(1)|
|x and y|x が偽なら x, そうでなければ y|(2)|
|not x|x が偽ならTrue,そうでなければFalse|(3)|

注釈:

  1. この演算子は短絡評価されます。つまり第一引数が偽のときにのみ、第二引数が評価されます。
  2. この演算子は短絡評価されます。つまり第一引数が真のときにのみ、第二引数が評価されます。
  3. notは非ブール演算子よりも優先度が低いので、not a == bnot (a == b)と解釈され、a == not bは構文エラーです。

投稿2020/06/10 02:30

glyzinieh

総合スコア208

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

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

shiracamus

2020/06/10 03:15 編集

ついでに補足すると・・・ A and B は「 A ならば B」、A or B は 「 A さもなくば B 」と 英文として読めます。 A は Aの値がある(NoneでもFalseでも数値0でも空要素でもない)と読むといいです。 実際には bool(A) で真偽値判定してます。
glyzinieh

2020/06/10 09:37

補足、ありがとうございます!
guest

0

恐らく数字の大小とかではなく

x and y
x が偽なら x, そうでなければ y

となってると思います。
今回だと左がFalseではないので右の値が返ってきてるんだと思います。

また、調べ切れてませんがbool値以外でもTrue/Falseと判定されて、数値だと0がFalse扱いになると思います。

3(True) and 0(False) → 0
0(False) and 3(True) → 0
※これは予想ですすみません

ブール演算 --- and, or, not

投稿2020/06/10 01:52

akbr

総合スコア88

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

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

ForestSeo

2020/06/10 02:18 編集

えーと、 5 and 4 は 1 ではなく 4 になりますが。
akbr

2020/06/10 02:19

x が偽なら x, そうでなければ y 5(真) and 4(真) → 5が偽ではないので4が返るで正しいと思います。
ForestSeo

2020/06/10 02:46

あっ勘違いしてました。すみません。
guest

0

とりあえず、0は偽、で、0以外は真、ということになってますね

投稿2020/06/10 01:42

y_waiwai

総合スコア87774

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

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

Kup

2020/06/10 01:50

それなら 1 and 2 は Trueになりませんか? "ABC" and "WER" は "WER"になります コマンドライン(?)だけでなくファイルに書いても同じ(文字列は試してませんが)なので明確な理由がありそうだと思うんですが、どういう決まりなんでしょう
y_waiwai

2020/06/10 02:11

「python 文字列 真偽」あたりでぐぐると、いかのものがひっかかります https://note.nkmk.me/python-bool-true-false-usage/ 文字列の真偽値はどうなるのかってのをきちんと確認しておこう。 さきのはなしは、それからになります
Kup

2020/06/10 05:36

値その藻を秦/偽として評価して値を返すブール演算子という働きなんですね
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問