1.運(yùn)算符
2.代碼塊及流程控制
一、運(yùn)算符
1.算術(shù)運(yùn)算符
+ - * / // % **
加 減 乘 除 地板除 取余 冪
# // 地板除,所取的結(jié)果是整數(shù)部分,即商
res = 10 // 5 #結(jié)果2
res = 10.0 // 5 #結(jié)果為2.0,如果被除數(shù)或者除數(shù)身上帶有小數(shù),結(jié)果也會(huì)帶有小數(shù) .0
# % 取余
res = 10 % 7 # 3
res = -10 % 7 # -3 + 7 = 4 ,前者負(fù)數(shù),則結(jié)果:-正常余數(shù) + 后者
res = 10 % -7 # 3 - 7 = -4 ,后者為負(fù)數(shù),則結(jié)果:正常余數(shù) + -后者
res = -10 % -7 # -3 ,前者后者都為負(fù)數(shù),則結(jié)果:-正常余數(shù)
# ** 冪運(yùn)算
res = 2 ** 4 # 16
2.比較運(yùn)算符
使用比較運(yùn)算符,返回的結(jié)果是 True 或者 False
> < <= >= == !=
res = var1 <= 10
3.賦值運(yùn)算符
= += -= *= /= //= %= **=
# 賦值,右 ---> 左
# 以 += 為例:
var1 += var2
var1 = var1 +var2
4.成員運(yùn)算符
①針對(duì)于容器類型數(shù)據(jù)。
②使用成員運(yùn)算符,返回的結(jié)果是 True 或者 False。
in not in
# 以 str 為例:
strvar = "今天天氣很涼爽"
res = "天" is strvar
res = "涼" not is strvar
# 如果是數(shù)據(jù)類型是字典,通過字典的鍵來進(jìn)行判斷。
5.身份運(yùn)算符
用來判斷內(nèi)存地址的存在,返回結(jié)果是 True 或者 False
is is not
var1 = 10
var2 = 10
print(var1 is var2)
6.邏輯運(yùn)算符
and or not
邏輯與 邏輯或 邏輯非
1.使用規(guī)律
# and
全真則真,一假則假
# or
全假則假,一真則真
# not
真變假,假變真
2. 短路
True or 表達(dá)式 #輸出前者,反之輸出后者
False and 表達(dá)式 #輸出前者,反之輸出后者
3.邏輯運(yùn)算符的優(yōu)先級(jí)
() > not > and > or
7.位運(yùn)算符
針對(duì)于二進(jìn)制進(jìn)行操作,需轉(zhuǎn)換為二進(jìn)制才可進(jìn)行運(yùn)算
& | ~ ^ << >>
按位與 按位或 按位非 按位異或 左移 右移
# &
全1為1,有0為零
# |
有1為1,全0為0
# ~ 公式:res -(n+1)
res = ~19 # 結(jié)果 -20
# ^
不同為1,相同為0
# <<
res = 5 << n
公式:res = 5 * 2 ** n
# >>
res = 5 >> n
公式:res = 5 // 2 ** n
# 位運(yùn)算符的優(yōu)先級(jí)
<< >> > & > ^ > |
8.總結(jié)
1.運(yùn)算符優(yōu)先級(jí)最高的是:**
運(yùn)算符優(yōu)先級(jí)最低的是:=
.
2.整體而言:一元運(yùn)算符 > 二元運(yùn)算符
.
3.整體對(duì)運(yùn)算符的優(yōu)先級(jí)排序:
算數(shù)運(yùn)算符 > 位運(yùn)算符 > 比較運(yùn)算符 > 身份運(yùn)算符 > 成員運(yùn)算符 > 邏輯運(yùn)算符
二、代碼塊及流程控制
1.代碼塊
以冒號(hào)作為開始,用縮進(jìn)來劃分相同的作用域(作用的范圍),這個(gè)整體叫做代碼塊。
# 以 if 判斷語句為例:
if 5 == 6:
print(111)
print(222)
對(duì)于縮進(jìn)注意:要么都是 \t , 要么都是 4個(gè)空格,不能混合使用。
2.流程控制
流程:代碼執(zhí)行的過程
控制:對(duì)代碼執(zhí)行過程中的把控
1.三大結(jié)構(gòu)
(1)順序結(jié)構(gòu),代碼從上到下依次執(zhí)行
(2)分支結(jié)構(gòu),4種
(3)循環(huán)結(jié)構(gòu),for 和 while
2.分支結(jié)構(gòu)
(1).單項(xiàng)分支
if 條件表達(dá)式:
code1
(2).雙項(xiàng)分支
if 條件表達(dá)式:
code1
else:
code2
(3).多項(xiàng)分支
多個(gè)條件使,可以利用邏輯運(yùn)算符
if 條件表達(dá)式1:
code1
elif 條件表達(dá)式2:
code2
elif 條件表達(dá)式3:
code3
else:
code4
(4).巢狀分支
if 條件表達(dá)式1:
if 條件表達(dá)式2:
if 條件表達(dá)式3:
code1
else:
code2
else:
code3
else:
code4
3.循環(huán)結(jié)構(gòu)
減少代碼的冗余,提升代碼的效率
(1).while循環(huán)
while循環(huán)的結(jié)構(gòu)組成:
1.初始化一個(gè)變量
2.循環(huán)的條件(邏輯)
3.自增自減的值
# 語法格式
i = 0
while i < 10:
code1
i += 1
# 死循環(huán)
while True:
code1
# 查看幫助,help() 函數(shù)
help(print)
# 雙項(xiàng)循環(huán),以打印99乘法表為例
i = 1
while i <= 9:
j = 1
while j <= i:
print("%d*%d=%2d " % (i,j,i*j),end="")
j += 1
print()
i += 1
(2).for循環(huán)
遍歷、循環(huán)、迭代
for循環(huán)可以遍歷無序的容器,而while不可以
1.遍歷
# 遍歷無需容器
container = {1,2,3,4,5}
for i in container:
print(i)
# 解包
a,b = ["你","好"]
# 遍歷等長(zhǎng)的二級(jí)容器
container = [[1,2,3],("a","b","c"),[4,5,6]]
for a,b,c in container:
print(a,b,c)
# 遍歷不等長(zhǎng)的二級(jí)容器
container = [[1,2],("a","b","c","d"),"x"]
for i in container:
for j in i:
print(j)
2.循環(huán)
range() 對(duì)象,配合for使用
# 一個(gè)值
for i in range(10): # 0~9 10取不到
code1
# 兩個(gè)值
for i in range(2,8): # 2~7 8取不到
code1
# 三個(gè)值
# 正序
for i in range(1,10,3): # 1,4,7 取值范圍1~10,間隔是3
code1
# 倒序
for i in range(10,0,-1): # 10~1 取值范圍10~0,間隔是1 0取不到
code1
4.關(guān)鍵字的使用
1.pass
表達(dá)占位符的概念,空語句,保證程序能夠正常運(yùn)行
for i in range(10):
pass
2.break
終止當(dāng)前循環(huán),后面的代碼不執(zhí)行
# while 中
i = 0
while i < 10:
if i == 5:
break
print(i)
i += 1
# for 中
for i in range(10):
if i == 5:
break
print(i)
3.continue
跳過本次循環(huán),后面的代碼不執(zhí)行,從下一次循環(huán)開始執(zhí)行
# while 中
i = 0
while i < 10:
if i == 5:
# while 循環(huán)變量需要在continue 進(jìn)行自增或自減,否則發(fā)生死循環(huán)
i += 1
continue
print(i)
i += 1
# for 中
for i in range(10):
if i == 5:
continue
print(i)