一、變量
1、聲明變量(定義變量)
語(yǔ)法:變量名 = 值
說(shuō)明:
變量名 - 要求:標(biāo)識(shí)符,不能使關(guān)鍵字
規(guī)范:
a.遵守PEP8命名規(guī)范(名字的所有字母小寫(xiě),有多個(gè)單詞組成,單詞之間用_隔開(kāi))
b.見(jiàn)名知意(看見(jiàn)名字就知道變量中存的是什么數(shù)據(jù))
student_name
"="賦值符號(hào),將=右邊的賦值給左邊的變量
值 - 可以是任何有結(jié)果的表達(dá)式,例如:100,變量,10+30,調(diào)用函數(shù)表達(dá)式
例如:
age = 18
num = 16574
num1 = num2 = num3 = 19 #同時(shí)聲明多個(gè)變量,并賦一樣的值
x,y = 10,30 #同時(shí)聲明多個(gè)變量,并賦不一樣的值,變量的個(gè)數(shù)和值的個(gè)數(shù)要保持一致
num4 = 100
num4 = 200 #給同一變量賦值,后賦的值會(huì)覆蓋先賦的值
num4 = "abc" #同一變量可以存儲(chǔ)不同類(lèi)型的值
print(num4)
結(jié)果如下:
image.png
注:此聲明變量為假的聲明
2.聲明變量和給變量賦值的本質(zhì)
結(jié)論:python中所有的變量,存的都是數(shù)據(jù)在內(nèi)存中的地址,內(nèi)存地址大小一樣
用一個(gè)變量給另一個(gè)變量賦值,實(shí)質(zhì)是將變量中的地址賦給另一個(gè)變量
使用變量的時(shí)候,是使用的變量中地址所對(duì)應(yīng)的值
3.變量的三要素:值、地址和類(lèi)型
- 值:變量中存的地址對(duì)應(yīng)的值
- 地址:變量中存儲(chǔ)的地址(id)
- 類(lèi)型:變量中存的地址對(duì)應(yīng)的值的類(lèi)型
name = "小米"
name1 = name
print(name)
print(id(name),id(name1)) #id(變量) - 獲取變量中存的地址
print(type(name)) #獲取變量地址中的值的類(lèi)型
結(jié)果如下:
image.png
二、運(yùn)算符
- python中的運(yùn)算符:數(shù)學(xué)運(yùn)算符,比較運(yùn)算符,邏輯運(yùn)算符,賦值運(yùn)算符,位運(yùn)算符
1.數(shù)學(xué)運(yùn)算符:+,-,,/,%,//,*
+:加法運(yùn)算
-:減法運(yùn)算
*:乘法運(yùn)算
/:除法運(yùn)算
print(10+20)
print(10-20)
print(10*20)
print(10/20)
%:取余
應(yīng)用1:獲取一個(gè)整數(shù)的最低的以為或者幾位數(shù)的值 num%(10^n)
應(yīng)用2:判斷一個(gè)是是否能夠被另外一個(gè)數(shù)整除 num1 % num2
print(10 % 3)
print(10 % 2)
# 獲取一個(gè)數(shù)的個(gè)數(shù)
num = 36523
print(num % 10) # 3
print(num % 100) # 23
//:整除取整
**:冪運(yùn)算 print(2 ** 16) x^y print(4 ** 0.5) 開(kāi)方
2.比較運(yùn)算符:>, <, ==, !=, >=, <=
- 所有的比較運(yùn)算符的運(yùn)算結(jié)果都是布爾值
#值1 > 值2 : 值1是否大于值2
print(100 > 10) # True
print(10 > 100) # False
print(10 > 10) # False
# 值1 < 值2: 值1是否小于值2
print(100 < 10) # False
# 值1==值2: 值1是否等于值2
print(10 == 100) # False
print(10 == 10) # True
num = 10
print(num == 10) # True
# 值1!=值2: 值1是否不等于值2
print(10!=100) # True
print(10!=10) # False
3.邏輯運(yùn)算符: and, or, not
- 邏輯運(yùn)算符的運(yùn)算對(duì)象是布爾值,運(yùn)算符結(jié)果也是布爾值
a. and(邏輯與運(yùn)算):
值1 and 值2:如果值1和值2的都為T(mén)rue,結(jié)果才是True;只要有一個(gè)False結(jié)果就是False
True and True -> True
True and False -> False
False and True -> False
False and False -> False
邏輯與運(yùn)算相當(dāng)于生活中的'并且';當(dāng)需要多個(gè)條件同時(shí)滿足,就使用and將多個(gè)條件連接在一起
grade = 90 # 成績(jī)
score = 98 # 分?jǐn)?shù)
# 例子:要求成績(jī)大于90并且表現(xiàn)分大于95,才能獲得獎(jiǎng)學(xué)金
print('是否獲取獎(jiǎng)學(xué)金:', grade > 90 and score > 95)
b.or(邏輯或運(yùn)算)
值1 or 值2:如果值1和值2中有一個(gè)是True,就過(guò)就是True。兩個(gè)都是False,即如果才是False
True or True -> True
True or False -> True
False or True -> True
False or False -> False
邏輯或運(yùn)算,相當(dāng)于生活中的'或者';當(dāng)需要多個(gè)條件中至少有一個(gè)條件滿足,就是用or將多個(gè)條件連接在一起
grade = 90 # 成績(jī)
score = 98 # 分?jǐn)?shù)
# 例子:要求成績(jī)大于90或者表現(xiàn)分大于95,就能獲得獎(jiǎng)學(xué)金
print(grade > 90 or score > 95)
c.not(邏輯非運(yùn)算)
- not 值:如果值是True,結(jié)果就是False;如果值是False,結(jié)果就是True
not True -> False
not False -> True
not用來(lái)對(duì)某個(gè)條件進(jìn)行否定
age = 17
# 是否能夠進(jìn)入網(wǎng)吧的條件: 年齡不小于18
print('是否能進(jìn)入網(wǎng)吧:', not age < 18)
print('是否能進(jìn)入網(wǎng)吧:', age >= 18)
結(jié)果如下:
image.png
4.賦值運(yùn)算符
- 賦值運(yùn)算符:=,+=, -=, *=, /=, %=, //=, **=
- 所有賦值符的左邊必須是變量; 組合的賦值運(yùn)算符的左邊的變量必須已經(jīng)賦值;
- 所有賦值運(yùn)算符最終的會(huì)進(jìn)行賦值操作
#a. = - 直接將右邊的結(jié)果賦給左邊的變量
num = 100
# b. +=, -=, *=, /=, %=, //=, **=
"""
變量 += 值 --> 相當(dāng)于 變量 = 變量 + 值
變量 -= 值 --> 相當(dāng)于 變量 = 變量 - 值
變量 *= 值 --> 相當(dāng)于 變量 = 變量 * 值
...
"""
num1 = 1
num1 += 10 # num1 = num1+10 = 1+10
print(num1)
num1 *= 2 # num1 = num1*2 = 11*2
print(num1)
num1 %= 2
print(num1)
5.運(yùn)算符的優(yōu)先級(jí)
數(shù)學(xué)運(yùn)算符 > 比較運(yùn)算符 > 邏輯運(yùn)算符 > 賦值運(yùn)算符
優(yōu)先級(jí)高的先算。如果有括號(hào),先算括號(hào)里面的
數(shù)學(xué)運(yùn)算符中: ** > *, /, %, // > +, -
6.位運(yùn)算
- 位運(yùn)算:&(按位與),|(按位或),^(按位異或), ~(按位取反),<<(左移), >>(右移)
- 位運(yùn)算是針對(duì)二進(jìn)制中每一位進(jìn)行的相關(guān)操作
&(按位與)
數(shù)字1 & 數(shù)字2 -> 二進(jìn)制的每一位進(jìn)行與運(yùn)算,運(yùn)算的時(shí)候如果都為1結(jié)果就是1,否則就是0
1 & 1 - 1
1 & 0 - 0
0 & 1 - 0
0 & 0 - 0
與的特點(diǎn):一位上的數(shù)如果和1與,就會(huì)保留這一位上的數(shù)。如果和0與,就會(huì)將這一位置0
11010 & 00111 = 00010
與運(yùn)算的應(yīng)用:判斷一個(gè)數(shù)的奇偶性(最優(yōu)解答)
將數(shù)字和1與,如果結(jié)果是0,就說(shuō)明這個(gè)數(shù)是偶數(shù);如果結(jié)果是1,說(shuō)明這個(gè)數(shù)是奇數(shù)
例如:
print(3 & 2)
結(jié)果如下:
image.png解析:3(原/補(bǔ)) = 0011
2(原/補(bǔ)) = 0010
3 & 2 = 0011 & 0010 = 0010(補(bǔ)) = 2
|(按位或)
數(shù)字1 | 數(shù)字2 - 如果有一位是1結(jié)果就是1,兩個(gè)都為0結(jié)果才是0
1 | 1 - 1
1 | 0 - 1
0 | 1 - 1
0 | 0 - 0
^(按位異或)
數(shù)字1 ^ 數(shù)字2 - 每一位如果相同就為0,不同為1
1 ^ 1 - 0
1 ^ 0 - 1
0 ^ 1 - 1
0 ^ 0 - 0
例如:11 ^ 2
01011 ^ 00010 = 01001(補(bǔ)) = 9
~(按位取反)
~ 數(shù)字 - 將每一位取反(0變成1,1變成0)
~1 = 0
~0 = 1
例如:~2
010 -> 101(補(bǔ)) = 100(反) = 111
<<(左移)
數(shù)字1 << n(位數(shù)) - 左移指定的位數(shù)就是在二進(jìn)制的后面加指定個(gè)數(shù)個(gè)0
相當(dāng)于:數(shù)字1 * (2**n)
例如:10 << 1
01010 << 1 = 010100 = 20
01010 << 2 = 0101000 = 2^5 + 2^3 = 32 + 8 = 40
-10 << 1
11010 -> 10110(補(bǔ)碼) << 1 = 101100(補(bǔ))= 101011(反)=110100 = -20
>>(右移)
數(shù)字1 >> n(位數(shù)) 將數(shù)字的二進(jìn)制位向右移動(dòng)指定的位數(shù)(將低位刪除指定的位數(shù))
相當(dāng)于: 數(shù)字1 // (2**n)
例如:20>>2
010100 >> 2 = 0101 = 5
0101 >> 1 = 010 = 2
010 >> 1 = 01 = 1
01 >> 1 = 0 = 0
三、字符串
1.什么是字符串(str)
- 字符串是python中一種常用的有序但是不可變的容器類(lèi)的數(shù)據(jù)類(lèi)型,可以同時(shí)存儲(chǔ)多個(gè)字符。屬于序列
- 字面量:使用單引號(hào)或者雙引號(hào)將任意字符括起來(lái),就是字符串常量
- 字符:指的就是字符串中的每一個(gè)單元。注意,python中只有字符的概念沒(méi)有字符類(lèi)型
2.字符串中的內(nèi)容
a.普通字符:包含數(shù)字字符、字母、普通符號(hào):+,-(),%#@等、中文、韓文、日語(yǔ)等
如:'123', 'hsja', '*&sd23順'
b.轉(zhuǎn)義字符:通過(guò)反斜杠將一些字符轉(zhuǎn)換成有特殊功能或者特殊意義的字符
\n - 換行
\t - 制表符
' - 表示一個(gè)單引號(hào)
" - 表示一個(gè)雙引號(hào)
\ - 表示一個(gè)\
注意:一個(gè)轉(zhuǎn)義字符代表一個(gè)字符
例如:
print('\tabc\n123')
print('abc\'123')
print("ab\"c'123")
print('abc\\n123')
結(jié)果如下:
image.png
c.阻止轉(zhuǎn)義: 在字符串的最前面加r/R,可以阻止轉(zhuǎn)義字符轉(zhuǎn)義
例如:
print(r'abc\n12\\3')
print(r'\b')
結(jié)果如下:
image.png





