變量&運(yùn)算符&分支結(jié)構(gòu)

變量運(yùn)算符

1.什么是變量&聲明變量

聲明變量就會(huì)申請(qǐng)空間以保存數(shù)據(jù)。

age = 0
print('我的年齡是:', age)
if age < 18:
print("未成年")

import keyword
print(keyword.kwlist)
1)聲明變量的語法

變量名 = 值

2)說明

變量名 - 程序員自己命名的;
要求:是標(biāo)識(shí)符;不能是關(guān)鍵字
規(guī)范:見名知意;滿足PEP8命名規(guī)范:
·用小寫字母拼寫,多個(gè)單詞用下劃線連接。eg.student_name = 'Kiki'
·受保護(hù)的實(shí)例屬性用單個(gè)下劃線開頭。
·私有的實(shí)例屬性用兩個(gè)下劃線開頭。
不能使用系統(tǒng)自帶的函數(shù)名類名,庫名給變量命名。

= - 賦值符號(hào),將右邊的數(shù)據(jù)賦值給左邊的變量(動(dòng)詞)
值 - 任何有結(jié)果的表達(dá)式;eg.數(shù)據(jù)、已經(jīng)賦值過的(聲明過的變量)、運(yùn)算表達(dá)式etc.

2.變量的值

b = 12
b2 = 0x1101
b3 = '你好'
b4 = True
b5 = age
print(b5)
b6 = 10+2+age
print(b6)

3.變量的使用

使用變量就是使用變量中的值;變量中的值可以修改

age = 18
print(age)
age = "你好"

4.同時(shí)聲明多個(gè)變量

1)同時(shí)申明多個(gè)變量賦相同的值

變量名1 = 變量名2 = 變量名3 = ....=值

2)同時(shí)聲明多個(gè)變量賦不同的值

變量名1,變量名2,變量名3...=值1,值2,值3...

c1 = c2 = c3 = 10
print(c1,c2,c3)

x,y=10,20
print(x,y)
print(id(x))

5.python聲明變量的原理

先開辟空間存儲(chǔ)數(shù)據(jù)(數(shù)據(jù)需要多大的內(nèi)存就開辟多少內(nèi)存空間,然后
再將變量和這個(gè)數(shù)據(jù)對(duì)應(yīng)的內(nèi)存空間關(guān)聯(lián)到一起)

變量三要素:
值 - 給變量賦值的數(shù)據(jù)(10) 使用變量
類型 - 給變量賦值數(shù)據(jù)的類型(int) type(變量)
地址 - 給變量賦值的數(shù)據(jù)在內(nèi)存的地址 也是變量中真正存儲(chǔ)的數(shù)據(jù) id(變量)

x = 100
print(id(x))
x = "abc"
print(id(x))
python 中拿一個(gè)變量給另一個(gè)變量賦值的時(shí)候 id是一樣的,賦值完成后,數(shù)據(jù)還是只有一個(gè)
y = x
print(id(x),id(y))

運(yùn)算符

python支持的運(yùn)算符:數(shù)學(xué)運(yùn)算符、比較運(yùn)算符、邏輯運(yùn)算符和賦值運(yùn)算符 位運(yùn)算

1. 數(shù)學(xué)運(yùn)算符:+ - * / % // **

1) + - * / 和小學(xué)數(shù)學(xué)中的加減乘除的功能一樣
print(1+1)
print(20-19)
print(20 * 10)
print(5/2)
2) %取余(求余數(shù)、取模)
print(5%2)
應(yīng)用1 :判斷整數(shù)的奇偶性

%2 是否是0

print(20 % 2)
print(31%2)

應(yīng)用2 :是否整除 - 判斷余數(shù)是否為0
應(yīng)用3 :取低位數(shù),eg.獲取一個(gè)整數(shù)的個(gè)位數(shù)

num = 123
print(num%10) # 3
print(123 %100) # 23
3) // -整除 (除法運(yùn)算后的商只取整數(shù)部分)

注意:負(fù)數(shù)整數(shù)除不盡的時(shí)候向下取整??! - 5//2 == -3

print(5//3)  # 2
print(3.9//3)  # 1.0
應(yīng)用: 取高位
print(num//100) # 1
4) ** - 冪次方 ;x ** y -- 求x的y次方
print(2**3)
開平方應(yīng)用
print(16**(1/2)) #開2次方
print(8**(1/3))  #開3次方

2.比較運(yùn)算符: > < == != >= <=

注意:所有的比較運(yùn)算的運(yùn)算結(jié)果都是布爾值

1)>,< >= <= 和數(shù)學(xué)中的是一樣的
print(10 > 20 ) #False
print(10 < 20) #True
print(30 >=30) #True
2) == -判斷兩個(gè)值是否相等, != -判斷兩個(gè)值是否不相等
print(10 == 10) #True
print(10 != 10) #False
3)python可以像數(shù)學(xué)一樣用比較運(yùn)算符連寫的方式表示范圍(c、java、js不可以)
age = 30
print(18 <age <38)

3.邏輯運(yùn)算符:and(邏輯與運(yùn)算) or(或) not(非)

邏輯運(yùn)算符的運(yùn)算對(duì)象和結(jié)果一般都是布爾值

1)and

"""
運(yùn)算規(guī)則:兩個(gè)都是True結(jié)果才是True
只要有一個(gè)是False 結(jié)果就是False
True and True ——True
False and True ——False
False and False ——False
使用場(chǎng)景:需要多個(gè)條件同時(shí)滿足的時(shí)候就使用and,相當(dāng)于生活中的并且

gpa = 4.5
score = 90
####獲取獎(jiǎng)學(xué)金的條件:績(jī)點(diǎn)不低于4,且操評(píng)分高于95
print('是否能獲取獎(jiǎng)學(xué)金:', gpa >= 4 and score > 95)

練習(xí) :判斷一個(gè)數(shù)是否能同時(shí)被三和七整除

num = 21
print("是否能同時(shí)被3和7整除", num%3==0 and num%7==0)
2)or

運(yùn)算規(guī)則:兩個(gè)都是False結(jié)果才是False,只要有一個(gè)是True,結(jié)果就是True
True or True ->True
True or False ->True
False or False ->False
使用場(chǎng)景:需要多個(gè)條件中有一個(gè)滿足就行,相當(dāng)于生活中的或者。

獲取獎(jiǎng)學(xué)金的條件:績(jī)點(diǎn)不低于4或者操評(píng)分高于95

print('是否能獲取獎(jiǎng)學(xué)金:', gpa >= 4 or score > 95)
3)not

運(yùn)算規(guī)則:True變False,F(xiàn)alse變True
not True ->False
not False->True
使用場(chǎng)景:對(duì)某個(gè)條件進(jìn)行否定的時(shí)候

寫一個(gè)數(shù)不能同時(shí)被3和7整除的條件

num = 212
print('不能同時(shí)被三和七整除', not num % 21 == 0)
4)短路操作

and的短路操作:條件1 and 條件2 ->and前面的條件如果結(jié)果是false,那么后面的條件語句不會(huì)執(zhí)行,結(jié)果直接是False
or的短路操作:條件1 or 條件2 —>or 前面的條件如果結(jié)果是True,那么后面的條件語句不會(huì)執(zhí)行,結(jié)果直接是True

def fun1():
    print('函數(shù)被執(zhí)行')

fun1()

True and fun1()
False and fun1()

False and fun1()
True and fun1()

4.賦值運(yùn)算符 : =,+=,-=,=,/=,%=,//=,*=

所有的賦值運(yùn)算符的左邊必須是變量;組合的賦值運(yùn)算符的左邊除了是變量,變量還必須已經(jīng)聲明過的。

1) 變量 = 數(shù)據(jù) -> 將右邊的值賦給左邊的變量
a = 10
b = 10 * 2
c = a
d = a + b
2) 組合賦值運(yùn)算符
變量 += 值 ->變量 = 變量 + 值
aa = 0
aa +=10  # aa = aa + 10 ; aa = 10

aa *= 4/2    #除法運(yùn)算的結(jié)果都是小數(shù)
print(aa)

aa%= 2
print(aa)

aa= 4
aa **= 2
print(aa)

5.運(yùn)算順序

運(yùn)算符優(yōu)先級(jí):
數(shù)學(xué)運(yùn)算 > 比較運(yùn)算符 > 邏輯運(yùn)算符 > 賦值運(yùn)算符(最低的)
數(shù)學(xué)運(yùn)算符的優(yōu)先級(jí)和數(shù)學(xué)一樣:** > *,/,//,% >+,-
如果有括號(hào),先算括號(hào)里的

位運(yùn)算

所有的位運(yùn)算都是針對(duì)數(shù)字的補(bǔ)碼進(jìn)行操作的;特點(diǎn)是:快(效率高)
位運(yùn)算 :&(與),|(或),~(取反),^(異或),<<(左移),>>(右移)

1. &

應(yīng)用:高效的判斷數(shù)字的奇偶性

111011 最后一位是奇數(shù)的話 一定是奇數(shù)
so 把任何一個(gè)數(shù)的前面變成0 只保留最后一位
即 與1& 結(jié)果是1 是奇數(shù);結(jié)果是0 是偶數(shù)

print(7 &1,123&1,97&1,109&1)
print(8&1,190&1)

運(yùn)算規(guī)則:補(bǔ)碼的每一位上的數(shù)字都是1結(jié)果就是1 如果有一個(gè)是0 就是0

1110 & 0111 = 0110
a = 3 & 2
print(a)

3的補(bǔ)碼:00000011
2的補(bǔ)碼:00000010
00000011 & 00000010 == 2

b = -7 & 3
print(b)

-7的補(bǔ)碼:10000111 原碼-> 11111000 反碼 ->11111001 (補(bǔ)碼)
3的補(bǔ)碼: 00000011
-7 & 3 = 00000001(補(bǔ)碼)==1

2. |

'''
運(yùn)算規(guī)則:每一位上的數(shù)如果都是0,結(jié)果就是0,只要有一個(gè)1,結(jié)果就是1
1110 | 0111 -> 1111

print(2|3) #3
print(-7|3) # 11111001(補(bǔ)) | 00000011

-7:11111001
3:00000011
即:11111011(補(bǔ)碼)->減一 11111010(反碼)->10000101(補(bǔ)碼)==-5

3.取反 ~

運(yùn)算規(guī)則:將每一位上的0變成1,然后1變成0
~1101 -> 0010

print( ~ -7)

11111001(補(bǔ)碼) - > 00000110 ==6

4.^ 異或 雙目運(yùn)算符

運(yùn)算規(guī)則:每一位上的數(shù)相同為0,不同為1
11011 ^ 10010 ->01001

5.<<

數(shù)字 <<N -> 指定的數(shù)字的補(bǔ)碼整體向左移動(dòng)n位 ;計(jì)算:數(shù)字* 2**N

print(2<<1) # 2* 2**1 == 4
print(3<<2)  #3 *2**2 == 12

6. >>

數(shù)字>> N -> 計(jì)算: 數(shù)字//2 ** N 注意是整除2的N次方

print(4>>1) # 2
print(9>>2) # 2
print(-8 >>2) # -8 //4 ==-2
print(-9>>1) #負(fù)數(shù)的話向下取整了

分支結(jié)構(gòu)

python代碼默認(rèn)情況下是從第一排開始從上往下依次執(zhí)行
分支結(jié)構(gòu):某段代碼是否執(zhí)行看條件(if語句)

1.if結(jié)構(gòu) 滿足條件執(zhí)行操作,不滿足不執(zhí)行

1)語法:

if 條件語句:
代碼段
其他代碼

2)說明:

if - 關(guān)鍵字 固定寫法
條件語句 - 任何有結(jié)果的表達(dá)式都可以 eg.數(shù)據(jù),已經(jīng)聲明過的變量,運(yùn)算表達(dá)式(除了賦值運(yùn)算)etc.
: - 固定寫法;(一般出現(xiàn)冒號(hào)的位置后面都會(huì)換行加縮進(jìn))
代碼段 - 和if保持一個(gè)縮進(jìn)的一條或者多條語句 ;需要滿足條件才執(zhí)行的代碼

3)執(zhí)行過程

先判斷條件語句的結(jié)果是否為True(如果條件語句的結(jié)果不是布爾值,就先轉(zhuǎn)換為布爾再看)只要不是0 就是True 空串才是0 None也是0
如果為True就執(zhí)行代碼段,否則代碼段不執(zhí)行

num = 10
# print("偶數(shù)")
if num & 1 == 0:
    print("偶數(shù)")

2.if-else結(jié)構(gòu) -- 滿足條件執(zhí)行某個(gè)操作,不滿足條件的時(shí)候執(zhí)行另一個(gè)操作

1)語法:

if 條件語句:
代碼段1(滿足條件要執(zhí)行的代碼)
else:
代碼段2(不滿足條件要執(zhí)行的代碼)

2)執(zhí)行過程:

先判斷條件語句是否為True,如果為True就執(zhí)行代碼段1,否則就執(zhí)行代碼段2

根據(jù)年齡范圍打印未成年或者成年
age = 20
if age >= 18:
    print("成年")
else:
    print("未成年")
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容