【無為則無心&Python基礎(chǔ)】— 17.Python運算符(一)

變量的賦值與計算都離不開表達(dá)式,表達(dá)式的運算依賴于變量、常量和運算符。

那么我們先說一說什么是表達(dá)式。

(一)表達(dá)式

  • Java表達(dá)式是變量、常量、運算符、方法調(diào)用的序列,它執(zhí)行指定的計算并返回某個確定的值。

  • 表達(dá)式不會對程序產(chǎn)生實質(zhì)性的影響, 一般只是返回一個結(jié)果。

  • 在Python中,如果在交互模式中只輸入一個表達(dá)式,解釋器會自動將表達(dá)式的結(jié)果輸出。如果是在Python文件中只輸入表達(dá)式,運行文件都不會有任何輸出的。

    • 交互模式中只寫表達(dá)式。


    • Python文件中只寫表達(dá)式的語句會沒有任何輸出。


(二)運算符

運算符用于執(zhí)行程序代碼運算。

1、運算符的分類

Python的常用運算符分為5類:

  • 算數(shù)運算符
  • 賦值運算符
  • 復(fù)合賦值運算符
  • 比較運算符
  • 邏輯運算符

2、算數(shù)運算符

Python中算數(shù)運算符如下:

運算符 描述 實例
+ 1 + 1 輸出結(jié)果為 2
- 1-1 輸出結(jié)果為 0
* 2 * 2 輸出結(jié)果為 4
/ 10 / 2 輸出結(jié)果為 5
// 整除 9 // 4 輸出結(jié)果為2
% 取余 9 % 4 輸出結(jié)果為 1,也叫取模
** 指數(shù) 2 ** 4 輸出結(jié)果為 16,即 2 * 2 * 2 * 2
() 小括號 小括號用來提高運算優(yōu)先級,即 (1 + 2) * 3 輸出結(jié)果為 9

注意:

  • 混合運算優(yōu)先級順序:()高于 ** 高于 * / // % 高于 + -

示例:

# 1、運算符:加、減、乘
# 所有運算中,只要有浮點數(shù)參加的運算,一定會得到一個浮點數(shù)
a = 10.5 + 5
print(f'a = {a}') # a = 15.5

# 2、運算符:除
# 除法不管得到什么數(shù),結(jié)果都是小數(shù)(浮點型),//(整除不會)
b = 4 / 2
print(f'b = {b}') # b = 2.0

# 3、運算符://(整除),只會保留整數(shù)位
# 運算結(jié)果只會得到一個整型,結(jié)果只保留整數(shù)部分。
c = 4 // 2
print(f'c = {c}') # c = 2
# 如果除數(shù)或被除數(shù)是小數(shù),則返回一個浮點數(shù)
c = 4.567 // 2
print(f'c = {c}') # c = 2.0


# 4、用變量d的值減去2,然后再賦值給d
d = 10
d = d - 2
print(f'd = d46fvso') # d = 8

"""
 5、如果將字符串和數(shù)字相乘,
    則會對字符串進(jìn)行復(fù)制操作,
    將字符串重復(fù)指定次數(shù)
 6、如果對字符進(jìn)行加法運算,
    就是字符串的拼接
"""
e = 'hello' + ' ' + 'world' 
print(e) # hello world

f = ('hello' + ' ') * 2
print(f) # hello hello 

# 7、除0異常
g = 5 / 0
# 報出異常:ZeroDivisionError: division by zero

3、賦值運算符

運算符 描述 實例
= 賦值 =右側(cè)的結(jié)果賦值給等號左側(cè)的變量
  • 單個變量賦值
num = 1
print(num)
  • 多個變量賦值
num1, float1, str1 = 10, 0.5, 'hello world'
print(f"num1 = {num1}")
print(f"float1 = {float1}")
print(f"str1 = {str1}")

# 輸出結(jié)果如下:
# num1 = 10
# float1 = 0.5
# str1 = hello world
  • 多變量賦相同值
a = b = 10
print(f"a = {a}")
print(f"b = {b}")

# 輸出結(jié)果如下:
# a = 10
# b = 10

4、復(fù)合賦值運算符

當(dāng)解釋器執(zhí)行到復(fù)合賦值運算符時,先計算算數(shù)運算符的表達(dá)式,再將算數(shù)運算符執(zhí)行后的結(jié)果賦值到等號左邊的變量。

復(fù)合賦值運算符如下:

運算符 描述 實例
+= 加法賦值運算符 c += a 等價于 c = c + a
-= 減法賦值運算符 c -= a 等價于 c = c- a
*= 乘法賦值運算符 c *= a 等價于 c = c * a
/= 除法賦值運算符 c /= a 等價于 c = c / a
//= 整除賦值運算符 c //= a 等價于 c = c // a
%= 取余賦值運算符 c %= a 等價于 c = c % a
**= 冪賦值運算符 c ** = a 等價于 c = c ** a

示例:

# 輸出101  a = a + 1,最終a = 100 + 1
a = 100
a += 1
print(a) # 101

# 輸出6  b = b * 3,最終b = 2 * 3
b = 2
b *= 3
print(b)

# 輸出13, 先算運算符右側(cè)1 + 2 = 3, c += 3 , 推導(dǎo)出c = 10 + 3
c = 10
c += 1 + 2
print(c)
# 注意: 先算復(fù)合賦值運算符右面的表達(dá)式,再算復(fù)合賦值運算.
d = 100
d *= 3 + 4 
print(d) # 700
# 3 + 4 = 7 * 100 = 700

在對浮點數(shù)做算術(shù)運算時,結(jié)果也會返回一個浮點數(shù)。

5、比較運算符

比較運算符也叫關(guān)系運算符,來比較兩個值之間的關(guān)系,總會返回一個布爾值, 如果關(guān)系成立,返回True,否則返回False,通常用來判斷。

比較運算符如下:

運算符 描述 實例
== 判斷相等。如果兩個操作數(shù)的結(jié)果相等,則條件結(jié)果為真(True),否則條件結(jié)果為假(False) 如a=3,b=3,則(a == b) 為 True
!= 不等于 。如果兩個操作數(shù)的結(jié)果不相等,則條件為真(True),否則條件結(jié)果為假(False) 如a=3,b=3,則(a == b) 為 True如a=1,b=3,則(a != b) 為 True
> 運算符左側(cè)操作數(shù)結(jié)果是否大于右側(cè)操作數(shù)結(jié)果,如果大于,則條件為真,否則為假 如a=7,b=3,則(a > b) 為 True
< 運算符左側(cè)操作數(shù)結(jié)果是否小于右側(cè)操作數(shù)結(jié)果,如果小于,則條件為真,否則為假 如a=7,b=3,則(a < b) 為 False
>= 運算符左側(cè)操作數(shù)結(jié)果是否大于等于右側(cè)操作數(shù)結(jié)果,如果大于,則條件為真,否則為假 如a=7,b=3,則(a < b) 為 False如a=3,b=3,則(a >= b) 為 True
<= 運算符左側(cè)操作數(shù)結(jié)果是否小于等于右側(cè)操作數(shù)結(jié)果,如果小于,則條件為真,否則為假 如a=3,b=3,則(a <= b) 為 True

示例:

# 1、關(guān)系運算符基本使用
a = 7
b = 5
print(a == b)  # False
print(a != b)  # True
print(a < b)   # False
print(a > b)   # True
print(a <= b)  # False
print(a >= b)  # True

# 2、數(shù)字可以可布爾值比較,True=1,F(xiàn)alse=0
print(1 == True) # True
print(2 < True) # False
print(-1 < False) # True

# 3、數(shù)字和字符串之間不能進(jìn)行比較
print(2 > '1')
# TypeError: '>' not supported between instances of 'int' and 'str'

"""
# 4、字符串和字符串之間可以進(jìn)行比較
    在Python中可以對兩個字符串進(jìn)行大于(等于)或小于(等于)的運算時,
    實際上比較的是字符串對應(yīng)的Unicode編碼。
    比較兩個字符串的Unicode編碼時,是逐位比較的。
   
    利用該特性可以對字符串按照字母順序進(jìn)行排序,但是對于中文來說意義不是特別大。
    
    注意:如果不希望比較兩個字符串的Unicode編碼,
        則需要通過數(shù)據(jù)類型轉(zhuǎn)換
        將字符串轉(zhuǎn)換為數(shù)值型然后再比較。
"""
#  a(0061) 和 b(0062) 比較
print('a' > 'b') # False

# 比較兩個字符串的Unicode編碼時,是逐位比較的。
# 也就是第一位和第一位比,第二位和第二位比,
# 只有在第一位沒有比出結(jié)果的時候(相等),才比第二位。
print('ab' > 'bc') # 實際上就是a和b比較,結(jié)果False
print('ab' > 'b') # 同上一句結(jié)果
print('af' > 'ac') # True
# 沒有肯定小于有字符
print('a' > 'ac') # False

# 將字符串轉(zhuǎn)換成數(shù)值型在比較
print(int('5') > int('7')) # False
print(float('5.115') > float('4.64')) # True


"""
 5、== 和 != 比較的是結(jié)果對象的值,而不是id。
    對象包括id(地址)、type(類型)、value(值)
    比較id用is 和 is not
    is 比較兩個對象是否是同一個對象,比較的是對象的id。
    is not 比較兩個對象是否不是同一個對象,比較的是對象的id。
    這里有個印象就可以,以后說完可變對象,再詳細(xì)說明。
"""
print(1 == True) # True
print(id(1),id(True)) # 8791323868224 8791323365904
print(1 is True) # False
print(1 is not True) # True
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,505評論 6 533
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,556評論 3 418
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,463評論 0 376
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,009評論 1 312
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 71,778評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,218評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,281評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,436評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,969評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 40,795評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,993評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,537評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,229評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,659評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,917評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,687評論 3 392
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 47,990評論 2 374