python邏輯運算符的本質,python中邏輯運算符有哪些

本文目錄一覽:

python中and、or和not 三個邏輯運算符,一直理解不了,求幫助!

‘and’、‘or’和‘not’的優先級是notandor

首先,‘and’、‘or’和‘not’的優先級是notandor。

and :x and y 返回的結果是決定表達式結果的值。如果 x 為真,則 y 決定結果,返回 y ;如果 x 為假,x 決定了結果為假,返回 x。

or :x or y  跟 and 一樣都是返回決定表達式結果的值。

not : 返回表達式結果的“相反的值”。如果表達式結果為真,則返回false;如果表達式結果為假,則返回true。

其次,邏輯操作符and 和or 也稱作短路操作符(short-circuitlogic)或者惰性求值(lazy evaluation):它們的參數從左向右解析,一旦結果可以確定就停止。

例如,如果A 和C 為真而B 為假, A and B and C 不會解析C,作用於一個普通的非邏輯值時,短路操作符的返回值通常是最後一個變量。因此,邏輯運算符的理解也與C語言中不同。舉個例子:

在以上例子中,按照C語言對的思維,3 and 4即3與4為3,但是由於是短路操作符,結果為4,是因為and運算符必須所有的運算數都是true才會把所有的運算數都解析,並且返回最後一個變量,即為4;改變一下順序4 and 3 ,結果也不一樣,即為3.

而或邏輯(or),即只要有一個是true,即停止解析運算數,返回最近為true的變量,即 3 or 4,值為3;改變順序4 or 3 即為4.

Python教程:第19篇 邏輯運算符

我們在高一時學習過命題的邏輯運算:與、或、非,在計算機科學中,其運算規則也是類似的(基本原理相同,但操作數與返回結果有所不同),Python也不例外。

在Python中,與用and、或用or、非用not表示。邏輯運算符一般用於操作返回值為bool類型的表達式,以表達式的值True(真)和False(假)為例。其運算規則總覽如下:

需要特別注意的是,在Python中,雖然邏輯運算符的操作數一般是運算結果為邏輯值的表達式,但也可以是運算結果為數值、字符串、元組、列表、集合、字典等類型的表達式。返回值也不一定是邏輯(bool)類型。而有些教程錯誤地稱只能操作bool類型的表達式以及始終返回bool類型。

我們可以用兩個not查看某種數據等價的邏輯值,下面是一些常見數據類型的等價規則:

一、數值除了0視為False,其餘數值(包括小數、負數、複數)均視為True:

二、字符串除了空字符串視為False外,其餘均視為True(包括空格、製表、換行、回車等空白符,也包括字符串’False’):

三、對於元組、列表、集合、字典也是如此,空的視為False,非空的均視為True,即使其中只有一個值為False或0的數據:

有一種情況容易產生誤解,就是使用小括號將False包圍起來,這其實也是表示bool值,而不是元組,元組是使用小括號包圍的數據列表,但是如果只有一個成員,數據後面要加一個逗號,正如上述示例中所示那樣,下面的示例顯示了小括號包圍的False的數據類型:

四、對於一個類也是如此,非空類視為True(註:無法創建什麼都不包含的空類):

五、None視為False:

總結一下就是: 數值0、空字符串、空元組、空列表、空集合、空字典以及None,均視為邏輯值False,其餘均視為True。

需要注意的是,邏輯運算符的返回值不一定是bool類型。

了解了非bool類型的操作數等價的邏輯值之後,還需要了解邏輯運算符的完全運算規則,才能得知具體會返回什麼值。

and為邏輯與(也稱邏輯且),其使用語法如下:

表達式A and 表達式B

其中操作數表達式A和表達式B一般均為邏輯值。但也可以是數值、字符串、元組、列表、集合、字典、對象等類型。

其運算通用規則為: 如果 表達式A 的運算結果等價於False,返回其運算結果,不再計算表達式B。否則返回 表達式B 的運算結果。

對於最常用的兩個操作數均為邏輯值的情況,只有當兩個操作數均為True的情況下為True,其餘情況均為False,以下是所有四種可能情況的運行示例:

其中兩個操作數也都可以是非邏輯值。

當第1個操作數結果等價於False時,比如False、0、None、空字符串、空元組、空列表、空集合、空字典等,整個邏輯表達式返回第1個操作數,注意,返回的是操作數的原始值,而不是等價值False,下面是運行示例(None表示什麼也沒有,所以沒有輸出。set()返回空集合):

當第1個操作數等價於True時(非數值0、非空字符串等都等價於True),則不管第2個表達式的返回值是什麼,都將返回第2個值,當然這時第2個表達式不能有語法錯誤:

or為邏輯或,其使用格式如下:

表達式A or 表達式B

其中操作數表達式A和表達式B與and中的操作數含義相同。

其運算通用規則為: 如果 表達式A 的運算結果等價於True,返回其運算結果,不再計算表達式B。否則返回 表達式B 的運算結果。 其與and的區別在於,or當表達式A為True則返回表達式A,and當其為False時返回表達式A。

以上面and的示例為模板,可以看到,or與and的返回值正好相反。

與and類似,當表達式A相當於True時,表達式B也不會計算:

下面是常見的兩個操作數均為邏輯值的情況,or運算符的四種可能情況的運行示例(除非兩個值都是False時返回False,其餘情況返回True):

not為邏輯非,其使用格式如下:

not 表達式

其運算規則為: 當 表達式 的運算結果為False、0、None、空字符串、空元組、空列表、空集合、空字典時,返回True。其餘情況均返回False。

下面是一些不同數據類型的運算示例:

與and和or不同的是,not的返回值始終是bool類型,即只有True和False兩種可能的取值。

所以,可以使用not not 表達式來查看一個非邏輯值是等價True還是False,正如上文非邏輯操作數等價的邏輯值中所示的那樣。

當然,not最常用的用法還是逆轉邏輯值,下面是兩種可能情況的運行示例:

邏輯運算符優先級notandor。

下面的示例證明and先於or運算:

下面的示例證明not先於or運算:

下面的示例證明not先於and運算:

另外,所有的邏輯運算符都比元組逗號分隔符的優先級要高,以and為例,比如下面是一個元組:

下面的例子中:

先計算了3 and 4,然後再組合成了元組,相當於:

而不是:

not與or的優先級也比其要高,下面是示例:

所以雖然元組有時可以省略小括號,但在與邏輯運算符運算時,元組請始終使用小括號。

這篇文章的整理與編寫花費了我近十小時時間,從上午寫到晚上。是我目前最具匠心的文章,如果說以前我的文章只適合初學者,偶爾超水平發揮才適合中級學者,那麼這篇文章我感覺對高水平人員也有重要的參考意義。

就我目前所知,我所寫的教程,在全網找不到第二個比它更優秀的了,當然,每個人心中都有一桿稱,不同讀者可能也有不同的際遇,我能做的只是做好自己。

所以,如果你覺得此文不錯,可以分享給你身邊的朋友、同學、同事、同鄉,世界很大也很小,很多東西,初見只能依靠緣分。而再見就需要你的主動了,緣分天註定,努力亦可改變命運。

Python教程:第11篇 變量賦值

Python教程:第17篇 比較運算符

Python教程:第18篇 算術運算符

Python語法小記憶

Python 中的字符串還支持轉義字符。所謂轉義字符是指使用反斜杠“\”對一些特殊字符進行轉義。

轉義字符說明

\ 續行符

\n 換行符

\0 空

\t 水平製表符,用於橫向跳到下一製表位

\” 雙引號

\’ 單引號

\\ 一個反斜杠

\f 換頁

\0dd 八進制數,dd 代表字符,如\012 代表換行

\xhh 十六進制數,hh 代表字符,如\x0a 代表換行

在Python 中,提供了如下表所示的函數進行數據類型的轉換。

函數作用

int(x) 將x 轉換成整數類型

float(x) 將x 轉換成浮點數類型

complex(real [,imag]) 創建一個複數

str(x) 將x 轉換為字符串

repr(x) 將x 轉換為表達式字符串

eval(str) 計算在字符串中的有效Python 表達式,並返回一個對象

chr(x) 將整數x 轉換為一個字符

ord(x) 將一個字符x 轉換為它對應的整數值

hex(x) 將一個整數x 轉換為一個十六進制字符串

oct(x) 將一個整數x 轉換為一個八進制的字符串

賦值運算符主要用來為變量等賦值。使用時,可以直接把基本賦值運算符“=”右邊的值賦給左邊的變量,也可以進行某些運算後再賦值給左邊的變量。在Python 中常用的賦值。

運算符如下表所示。

運算符說明舉例展開形式

= 簡單的賦值運算x=y x=y

+= 加賦值x+=y x=x+y

-= 減賦值x-=y x=x-y

*= 乘賦值x*=y x=x*y

/= 除賦值x/=y x=x/y

%= 取餘數賦值x%=y x=x%y

**= 冪賦值x**=y x=x**y

//= 取整除賦值x//=y x=x//y

比較運算符,也稱關係運算符,用於對變量或表達式的結果進行大小、真假等比較,如果比較結果為真,則返回True,如果為假,則返回False。比較運算符通常用在條件語句中作為判斷的依據。Python 中的比較運算符如下表所示。

運算符作用舉例結果

大於’a’ ‘b’ False

小於156 456 True

== 等於’c’ == ‘c’ True

!= 不等於’y’ != ‘t’ True

= 大於或等於479 = 426 True

= 小於或等於62.45 = 45.5 False

邏輯運算符是對真和假兩種布爾值進行運算,運算後的結果仍是一個布爾值,Python中的邏輯運算符主要包括and(邏輯與)、or(邏輯或)、not(邏輯非)。

運算符含義用法結合方向

and 邏輯與op1 and op2 從左到右

or 邏輯或op1 or op2 從左到右

not 邏輯非not op 從右到左

所謂運算符的優先級,是指在應用中哪一個運算符先計算,哪一個後計算,與數學的四則運算應遵循的“先乘除,後加減”是一個道理。

下表按從高到低的順序列出了運算符的優先級。同一行中的運算符具有相同優先級,此時它們的結合方向決定求值順序。

運算符說明

** 冪

~、+、- 取反、正號和負號

*、/、%、// 算術運算符

+、- 算術運算符

、 位運算符中的左移和右移

位運算符中的位與

^ 位運算符中的位異或

| 位運算符中的位或

、=、、=、!=、== 比較運算符

在Python 中,使用內置函數input()可以接收用戶的鍵盤輸入。input()函數的基本用法如下:

variable = input("提示文字")

其中,variable 為保存輸入結果的變量,雙引號內的文字用於提示要輸入的內容。

默認的情況下,在Python中,使用內置的print()函數可以將結果輸出到IDLE或者標準控制台上。其基本語法格式如下:

Print(輸出內容)

其中,輸出內容可以是數字和字符串(字符串需要使用引號括起來),此類內容將直接

輸出,也可以是包含運算符的表達式,此類內容將計算結果輸出。

原創文章,作者:OBHFU,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/330797.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
OBHFU的頭像OBHFU
上一篇 2025-01-16 15:46
下一篇 2025-01-16 15:46

相關推薦

  • Python 常用數據庫有哪些?

    在Python編程中,數據庫是不可或缺的一部分。隨着互聯網應用的不斷擴大,處理海量數據已成為一種趨勢。Python有許多成熟的數據庫管理系統,接下來我們將從多個方面介紹Python…

    編程 2025-04-29
  • Python通配符有哪些

    Python通配符是一種表示字符串中模糊匹配的有效工具,用於匹配與具有特定模式匹配的字符串。Python中主要的通配符有:*,?,[]和{}。 一、星號通配符 * 在Python中…

    編程 2025-04-29
  • 條件運算符(?:)是什麼意思?

    條件運算符(?:)是JavaScript中的一種特殊的運算符,也是許多編程語言中相似語法的一部分。它可以允許我們在一個簡單、一行的語句中完成條件判斷和賦值操作,非常方便。 1.語法…

    編程 2025-04-29
  • Python按位運算符和C語言

    本文將從多個方面詳細闡述Python按位運算符和C語言的相關內容,並給出相應的代碼示例。 一、概述 Python是一種動態的、面向對象的編程語言,其按位運算符是用於按位操作的運算符…

    編程 2025-04-29
  • 註冊表取證工具有哪些

    註冊表取證是數字取證的重要分支,主要是獲取計算機系統中的註冊表信息,進而分析痕迹,獲取重要證據。本文將以註冊表取證工具為中心,從多個方面進行詳細闡述。 一、註冊表取證工具概述 註冊…

    編程 2025-04-29
  • Python函數類型有哪些

    本文將從以下幾個方面詳細闡述Python函數類型。 一、內置函數 Python的內置函數是指在Python編程語言中提供的可以直接使用的函數,不需要通過導入模塊等方式引入。 部分常…

    編程 2025-04-29
  • Python程序變量名有哪些

    Python是一種高級、面向對象、解釋型編程語言,它因為其簡潔明了的語法和廣泛的應用領域而被廣泛使用。在Python中,變量名是關鍵的標識符,它們用於訪問存儲在內存中的值。本文將介…

    編程 2025-04-28
  • Python中賦值運算符和相等運算符解析

    Python是一種高級編程語言,它通常被用於開發 Web 應用程序、人工智能、數據分析和科學計算。在Python中,賦值運算符和相等運算符是非常常見和基本的運算符,它們也是進行編程…

    編程 2025-04-28
  • 北京有哪些好的Python培訓機構

    想要成為一名全能開發工程師,Python是必不可少的編程語言之一。在北京,Python培訓機構也是各式各樣。下面就從教學質量、師資力量、教學內容、服務質量等多個方面,為大家推薦幾個…

    編程 2025-04-28
  • Python中的算數運算符優先級問題

    本文將從多個方面詳細闡述Python中算數運算符的優先級問題,並給出對應代碼示例。算數運算符的優先級指的是在混合運算時,Python自動根據一定的優先級順序決定哪一個運算符先進行。…

    編程 2025-04-28

發表回復

登錄後才能評論