Python全棧之運(yùn)算符詳解
1. 算數(shù)_比較_賦值_成員
1.1 算數(shù)運(yùn)算符
算數(shù)運(yùn)算符: + - * / // % **
# + var1 = 7 var2 = 90 res = var1 + var2 print(res) # - var1 = 7 var2 = 90 res = var1 - var2 print(res) # * var1 = 7 var2 = 10 res = var1 * var2 print(res) # / 結(jié)果永遠(yuǎn)為小數(shù) var1 = 10 var2 = 5 res = var1 / var2 print(res , type(res)) # // 地板除 """被除數(shù) ? 除數(shù) = 商""" """注意點(diǎn):如果被除數(shù)或者除數(shù)是小數(shù),那么得到正常結(jié)果之后,數(shù)值后面帶上.0變成小數(shù)""" var1 = 10.0 var2 = 3.0 # var2 = 3.0 res = var1 // var2 print(res) # % 取余 var1 = 7 var2 = 4 res = var1 % var2 res = -7 % 4 # -3 + 4 = 1 res = 7 % -4 # 3 + (-4) = -1 res = -7 % -4 # -3 (被除數(shù)和除數(shù)都是負(fù)的,正常結(jié)果加負(fù)號(hào)) res = 81 % 7 # 4 res = 81 % -7 # -3 res = -81 % 7 # 3 res = -81 % -7 # -4 print(res) # ** 冪運(yùn)算 res = 2 ** 3 print(res)
1.2 比較運(yùn)算符
比較運(yùn)算符: > < >= <= == !=
"""比較運(yùn)算符的結(jié)果要么是True , 要么是False 只有兩個(gè)值""" res = 10 > 5 res = 10 >= 10 # ==這個(gè)符號(hào)是在做比較,比較==兩邊的數(shù)值是否一樣 res = 5 == 9 res = 5 != 9 print(res)
1.3 賦值運(yùn)算符
賦值運(yùn)算符: = += -= *= /= //= %= **=
# = 賦值運(yùn)算符 將右側(cè)的值賦值給左側(cè)變量 a = 5 <= 3 print(a) var1 = 10 var2 = 5 # += """var1 = var1 + var2""" # var1 += var2 # print(var1) # -= """var1 = var1 - var2""" # var1 -= var2 # print(var1) # %= """var1 = var1 % var2""" var1 %= var2 print(var1)
1.4 成員運(yùn)算符
成員運(yùn)算符: in
和 not in
(針對(duì)于容器型數(shù)據(jù))
"""字符串判斷時(shí),必須是連續(xù)的片段""" strvar = "今天天氣要下雨,趕緊回家收衣服" res = "今" in strvar res = "天氣" in strvar res = "趕回" in strvar print(res) # 針對(duì)于列表,元組,集合 container = ["趙沈陽(yáng)","趙萬(wàn)里","趙世超"] container = ("趙沈陽(yáng)","趙萬(wàn)里","趙世超") container = {"趙沈陽(yáng)","趙萬(wàn)里","趙世超"} # res = "趙沈陽(yáng)" in container # res = "趙萬(wàn)里" not in container res = "趙世超1223232" not in container print(res) # 針對(duì)于字典 (判斷的是字典的鍵,不是值) container = {"zsy":"趙沈陽(yáng)","zwl":"趙萬(wàn)里","zsc":"趙世超"} res = "趙沈陽(yáng)" in container # False res = "zsy" in container print(res)
2. 身份運(yùn)算符
身份運(yùn)算符 is
和 is not
(檢測(cè)兩個(gè)數(shù)據(jù)在內(nèi)存當(dāng)中是否是同一個(gè)值)
# 整型 -5~正無(wú)窮 var1 = 100 var2 = 100 print(var1 is var2) # 浮點(diǎn)型 非負(fù)數(shù) var1 = -9.1 var2 = -9.1 print(var1 is var2) # bool 相同即可 var1 = True var2 = True print(var1 is var2) # complex 在實(shí)數(shù)+虛數(shù)不相同 (只有虛數(shù)的情況下例外) var1 = 6-8j var2 = 6-8j var1 = -10j var2 = -10j print(var1 is var2) # 容器: 相同字符串 , 空元組相同即可 剩下的所有容器都不相同 container1 = () container2 = () print(container1 is not container2) container1 = "你" container2 = "你" print(container1 is not container2) container1 = [1,23,3] container2 = [1,23,3] print(container1 is not container2)
小提示:
# var1和var2地址id是一樣的 var1 = 10j var2 = 10j # var1和var2地址id是不一樣的 var1 = -10j var2 = -10j
3. 邏輯運(yùn)算符
邏輯運(yùn)算符: and or not
# and 邏輯與 """全真則真,一假則假""" res = True and True # True res = True and False # False res = False and True # False res = False and False # False print(res) # or 邏輯或 """一真則真,全假則假""" res = True or True # True res = False or True # True res = True or False # True res = False or False # False print(res) # not 邏輯非 res = not True res = not False print(res) # 邏輯短路 """ 無(wú)論后面的表達(dá)式是True 還是False 都已經(jīng)無(wú)法改變最后的結(jié)果,那么直接短路,后面的代碼不執(zhí)行; (1) True or print("程序執(zhí)行了 ~ 1111") (2) False and print("程序執(zhí)行了 ~ 2222") True or print("程序執(zhí)行了 ~ 1111") True or True => True True or False => True False and print("程序執(zhí)行了 ~ 2222") False and True => False False and False => False """ """ 計(jì)算規(guī)律: 先腦補(bǔ)計(jì)算當(dāng)前表達(dá)式的布爾值是True還是False 如果出現(xiàn)了 True or 表達(dá)式 或者 False and 表達(dá)式的情況,直接返回前者,后面代碼不執(zhí)行 如果沒有出現(xiàn)短路效果,直接返回后者 """ res = 5 and 6 # 6 """ True and True =>True True and False => False """ res = 5 or 6 # 5 res = 0 and 999 res = 0 or "abc" print(res) # 邏輯運(yùn)算符的優(yōu)先級(jí) """ 優(yōu)先級(jí)從高到低: () > not > and > or """ res = 5 or 6 and 7 # 5 or 7 => 5 res = (5 or 6) and 7 # 5 and 7 res = not (5 or 6) and 7 # not 5 and 7 => False and 7 => False res = 1<2 or 3>4 and 5<100 or 100<200 and not (700>800 or 1<-1) """ not (False or False) => True res = 1<2 or 3>4 and 5<100 or 100<200 and not (700>800 or 1<-1) res = True or False and True or True and True res = True or False or True res = True or True => True """ print(res)
3.1 位運(yùn)算符
位運(yùn)算符: & | ^ << >> ~
var1 = 19 var2 = 15 # & 按位與 res = var1 & var2 """ 000 ... 10011 000 ... 01111 000 ... 00011 => 3 """ print(res) # | 按位或 res = var1 | var2 """ 000 ... 10011 000 ... 01111 000 ... 11111 """ print(res) # ^ 按位異或 """兩個(gè)值不相同=>True 反之返回False""" res = var1 ^ var2 """ 000 ... 10011 000 ... 01111 000 ... 11100 """ print(res) # << 左移 (相當(dāng)于乘法) """5乘以2的n次冪""" res = 5 << 1 # 10 res = 5 << 2 # 20 res = 5 << 3 # 40 print(res) """ 000 ... 101 => 5 000 .. 1010 => 10 000 ..10100 => 20 000 .101000 => 40 """ # >> 右移 (相當(dāng)于除法) """5地板除2的n次冪""" res = 5 >> 1 # 2 res = 5 >> 2 # 1 res = 5 >> 3 # 0 """ 000 ... 101 000 ... 010 => 2 000 ... 001 => 1 000 ... 000 => 0 """ print(res) # ~ 按位非 (針對(duì)于補(bǔ)碼進(jìn)行操作,按位取反,包含每一位) """ -(n+1) """ # res = ~22 res = ~19 print(res) """ 原碼:000 ... 10011 反碼:000 ... 10011 補(bǔ)碼:000 ... 10011 補(bǔ)碼: 000 ... 10011 按位非: 111 ... 01100 給你補(bǔ)碼->原碼 補(bǔ)碼:111 ... 01100 反碼:100 ... 10011 原碼:100 ... 10100 => -20 """ res = ~-19 print(res) """ 原碼:100 ... 10011 反碼:111 ... 01100 補(bǔ)碼:111 ... 01101 補(bǔ)碼: 111 ... 01101 按位非: 000 ... 10010 給你補(bǔ)碼->原碼 (因?yàn)槭钦麛?shù) ,原反補(bǔ)相同) 000 ... 10010 => 18 """
3.2 小總結(jié)
總結(jié): 個(gè)別運(yùn)算符: 運(yùn)算符優(yōu)先級(jí)最高的: ** 運(yùn)算符優(yōu)先級(jí)最低的: = ()可以提升優(yōu)先級(jí) 一元運(yùn)算符 > 二元運(yùn)算符 (優(yōu)先級(jí)) 一元運(yùn)算符 : 同一時(shí)間,操作一個(gè)值 ~ - 二元運(yùn)算符 : 同一時(shí)間,操作一個(gè)值 + - * / .... 同一種類運(yùn)算符: 算數(shù)運(yùn)算符 : 乘除 > 加減 邏輯運(yùn)算符 : () > not > and > or 位運(yùn)算符 : ( << >> ) > & > ^ > | 整體排序: 算數(shù)運(yùn)算符 > 位運(yùn)算符 > 比較運(yùn)算符 > 身份運(yùn)算符 > 成員運(yùn)算符 > 邏輯運(yùn)算符 賦值運(yùn)算符用來(lái)做收尾 """ res = 5+5 << 6 // 3 is 40 and False """ res = 10 << 2 is 40 and False res = 40 is 40 and False res = True and False res = False """ print(res) # 用括號(hào)提升下優(yōu)先級(jí) res = (5+5) << (6//3) is 40 and False
4. 代碼塊_單項(xiàng)_雙項(xiàng)分支
4.1 代碼塊
代碼塊:以冒號(hào)作為開始,用縮進(jìn)來(lái)劃分相同的作用域,這個(gè)整體是代碼塊
"""作用域: 作用的范圍""" if 10 == 11: print(1) print(2) print(3) print(4) # 縮進(jìn):要么全都使用\t tab 要么全都是使用4個(gè)空格(也可以兩個(gè)空格,標(biāo)準(zhǔn)的是四個(gè)),來(lái)表達(dá)相同的作用域,不能混再一起; """ if 10 == 10: print(1) print(2) """ # 其他語(yǔ)言的寫法 (了解) """ if(10 == 10){ print(1) print(2) print(3) } """
4.2 流程控制
""" 流程: 代碼執(zhí)行的過程 控制: 對(duì)代碼執(zhí)行過程中的把控 三大結(jié)構(gòu): (1)順序結(jié)構(gòu): 默認(rèn)代碼從上到下,依次執(zhí)行 (2)分支結(jié)構(gòu): 單項(xiàng)分支 雙向分支 多項(xiàng)分支 巢狀分支 (3)循環(huán)結(jié)構(gòu): while / for """
4.3 單項(xiàng)分支
""" if 條件表達(dá)式: code1 code2 當(dāng)條件表達(dá)式成立,返回True,執(zhí)行對(duì)應(yīng)的代碼塊 """ zhiye = "程序員" if zhiye == "程序員": print("拿高薪") print("錢多,話少,死的早") print("發(fā)量日漸稀少")
4.4 雙項(xiàng)分支
""" if 條件表達(dá)式: code1 .. else: code2 ... 如果條件表達(dá)式成立,返回True ,執(zhí)行if這個(gè)區(qū)間的代碼塊 如果條件表達(dá)式不成立,返回False,執(zhí)行else這個(gè)區(qū)間的代碼塊 if 分支的代碼塊也叫做真區(qū)間 else 分支的代碼塊也叫做假區(qū)間 """ zhiye = "強(qiáng)盜" zhiye = "律師" if zhiye == "強(qiáng)盜": print("打他") print("罵他") print("喂他辣椒水") else: print("給你一朵紅花") # input 等待用戶輸入字符串 (注意:結(jié)果一定是字符串) """ name = input("你好~ 你媽貴姓~") print(name , type(name)) """ # ### 模擬網(wǎng)站登錄 # 如果admin = wangwen 密碼:password = 111 顯示登錄成功,否則顯示登錄失敗 # admin = "wangwen" # password = "111" admin = input("請(qǐng)輸入您的賬號(hào):") password = input("請(qǐng)輸入您的密碼:") if admin == "wangwen" and password == "111": print("登錄成功") else: print("登錄失敗")
5. 小作業(yè)
1.99//4 , 99%4 , -99 %4 , -99 %-4值是多少 2.成員和身份運(yùn)算符如何使用 3.邏輯運(yùn)算符優(yōu)先級(jí)?邏輯短路在什么情況下發(fā)生? 4.優(yōu)先級(jí)最高和最低的運(yùn)算符是? 5.左移右移后的值如何計(jì)算?按位非的公式? 6.~(-25) ~25 推到一下過程 7.res = 17>15 or 78<11 or 7 and 8 and not True is True res=? 8.計(jì)算表達(dá)式的值 1).6 or 2 > 1 2).3 or 2 > 1 3).0 or 5 > 4 4).5 < 4 or 3 5).2 > 1 or 6 6).3 and 2 > 1 7).0 and 3 > 1 8).2 > 1 and 3 9).3 > 1 and 0 10).3 > 1 and 2 or 2 < 3 and 3 and 4 or 3 > 2 11)not 2 > 1 and 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6 9.提示用戶輸入 "如何在dnf中變得更強(qiáng)?". 如果輸入的是充錢,打印"馬化騰愛你" ,反之輸出,"你想一想,不充錢怎么可能變得更強(qiáng)"
總結(jié)
本篇文章就到這里了,希望能夠給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
Python中處理字符串的相關(guān)的len()方法的使用簡(jiǎn)介
這篇文章主要介紹了Python中處理字符串的相關(guān)的len()方法的使用簡(jiǎn)介,是Python入門的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-05-05Python中列表,元組,字典和集合的區(qū)別及它們之間的轉(zhuǎn)換
這篇文章主要介紹了Python中列表,元組,字典和集合的區(qū)別及它們之間的轉(zhuǎn)換方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-05-055種Python統(tǒng)計(jì)次數(shù)方法技巧
這篇文章主要給大家分享的是5種Python統(tǒng)計(jì)次數(shù)方法技巧,文章主要包括字典 dict 統(tǒng)計(jì)、collections.defaultdict 統(tǒng)計(jì)、List count方法、集合(set)和列表(list)統(tǒng)計(jì)、collections.Counter方法,感興趣的小伙伴一起進(jìn)入下面文章內(nèi)容吧2021-11-11Python實(shí)現(xiàn)常見的4種坐標(biāo)互相轉(zhuǎn)換
主流被使用的地理坐標(biāo)系并不統(tǒng)一,常用的有WGS84、GCJ02(火星坐標(biāo)系)、BD09(百度坐標(biāo)系)以及百度地圖中保存矢量信息的web墨卡托,本文利用Python編寫相關(guān)類以實(shí)現(xiàn)4種坐標(biāo)系統(tǒng)之間的互相轉(zhuǎn)換,希望對(duì)大家有所幫助2023-02-02關(guān)于Python-faker的函數(shù)效果一覽
今天小編就為大家分享一篇關(guān)于Python-faker的函數(shù)效果一覽,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧2019-11-11