周總結(jié)
day1
1.注釋
注釋是代碼中對代碼進(jìn)行解釋說明的文本內(nèi)容
注釋分為單行注釋和多行注釋
2.語句
python中一般是一條語句占一行壳澳,多條語句占一行要用分號隔開岂贩,語句過
長需要換行可以加"/"換行,但不能破壞數(shù)據(jù)本身
3.縮進(jìn)
python有嚴(yán)格的縮進(jìn)規(guī)則巷波,代碼具有高度的規(guī)范性萎津,在開頭的時候不能隨便加縮進(jìn)
但需要縮進(jìn)的時候必須縮進(jìn)
4.標(biāo)識符
標(biāo)識符就是由字母、數(shù)字抹镊、下劃線組成锉屈,主要用來給變量命名,在2.x后面的版本中垮耳,可以用文字命名颈渊,但一般不使用
5.關(guān)鍵字
關(guān)鍵是是在python中具體特殊意義和功能的標(biāo)識符,
注意:自定義變量命名是不能用關(guān)鍵字作為變量的名字
6.數(shù)據(jù)類型
int(整型)终佛,float(浮點型)俊嗽,str(字符串),bool(布爾)
7.類型轉(zhuǎn)換
類型名(數(shù)據(jù))
8.輸入輸出函數(shù)
print() - 輸出函數(shù)
input() - 輸入函數(shù)
9.進(jìn)制轉(zhuǎn)換
9.1.二進(jìn)制
a.基數(shù):0,1
b.進(jìn)位:逢二進(jìn)一 10(二進(jìn)制) == 2(十進(jìn)制)
c.位權(quán):abc = a2^2 + b2^1 + c*2^0
d.表示方式:在二進(jìn)制數(shù)前加前綴0b/0B
e.轉(zhuǎn)換:bin(數(shù)字)
num1 = 0b1011
print(num1)
a = bin(12)
print("a = ",a)
9.2.八進(jìn)制
a.基數(shù):0 - 7
b.進(jìn)位:逢八進(jìn)一 10(8進(jìn)制) == 8(十進(jìn)制)
c.位權(quán):abc = a8^2 + b8^1 + c*8^0
d.表示方式:在八進(jìn)制數(shù)前加前綴 0o/0O
e.轉(zhuǎn)換:oct(數(shù)字)
num2 = 0o67
print(num2)
b = oct(200)
print("b = ", b)
9.3.十六進(jìn)制
a.基數(shù):0,1,2,3,4,5,6,7,8,9,a/A,b/B,c/C,d/D,e/E,f/F (字母大小寫都可以)
b.進(jìn)位:逢十六進(jìn)一 2d(十六進(jìn)制) == 45(十進(jìn)制)10(十六進(jìn)制) == 16(十進(jìn)制)
c.位權(quán):111 = 16^2 + 16^1 + 16^0 = 273
d.表示方式:在十六進(jìn)制數(shù)前加前綴 0x/0X
e.轉(zhuǎn)換:hex(數(shù)字)
num3 = 0x89
print(num3)
c = hex(200)
print("c = ", c)
10.原碼铃彰、反碼和補(bǔ)碼
計算機(jī)存數(shù)據(jù)的時候绍豁,只能存數(shù)字,而且存的是數(shù)字的二進(jìn)制補(bǔ)碼
位(bit)
字節(jié)(byte)
1字節(jié) = 8bit
1kb = 1024byte
1M = 1024kb
1G = 1024M
1T = 1024G
注意:正數(shù)的原碼牙捉、反碼和補(bǔ)碼一樣
10.1.原碼 = 符號位(0表示正竹揍,1表示負(fù)) + 真值(數(shù)字轉(zhuǎn)換成二進(jìn)制的值)
10 -> 1010(真值)
10的原碼: 00000000 00000000 00000000 00001010
-10的原碼: 10000000 00000000 00000000 00001010
10.2.負(fù)數(shù)反碼 = 符號位不變敬飒,其他位取反(0變1,1變0)
10的反碼: 00000000 00000000 00000000 00001010
-10的反碼: 11111111 11111111 11111111 11110101
10.3.負(fù)數(shù)補(bǔ)碼:反碼加1
10的補(bǔ)碼: 00000000 00000000 00000000 00001010
-10的補(bǔ)碼: 11111111 11111111 11111111 11110110
10.4.計算機(jī)負(fù)數(shù)采用補(bǔ)碼的原因:計算機(jī)沒有減法器,負(fù)數(shù)采用原碼進(jìn)行加法運算
的時候結(jié)果不對,采用補(bǔ)碼結(jié)果才對
11 運算符
python支持的運算符:數(shù)學(xué)運算符芬位、比較運算符无拗、邏輯運算符、位運算昧碉,賦值運算符
1.數(shù)學(xué)運算符: +,-,,/,%(取余),//(整除),(冪運算)
1.1.+,-,,/,和數(shù)學(xué)中加減乘除的功能一模一樣
2.1.% - 求余數(shù)
a.判斷一個數(shù)是否能被另外一個數(shù)整除
b.判斷一個數(shù)的奇偶性:讓數(shù)字對2取余蓝纲,看結(jié)果是0還是1
c.獲取一個數(shù)的最后幾位數(shù)
num = 123
print(num % 10)
2.2.// - 求商,取商的整數(shù)部分(整除)
print(10 // 3)
num = 123
print(num // 100)
2.3.** - 冪運算(求次方值)
print(2**3)
print(16**0.5) #開平方
print(8**(1/3)) #開立方
3.比較運算符:>,<,>=,<=,==,!=
注意:所有的比較運算符的結(jié)果都是布爾值(不是True就是False)
,<,>=,<=和數(shù)學(xué)張總相應(yīng)的比較運算符是一樣的
== -判斷是否相等
!= -判斷是否不相等
python中比較大小的時候可以像數(shù)學(xué)一樣連寫表示范圍
x = 20
print(1 <= x <= 100)
day2
變量
1.什么是變量
變量是在程序中開辟空間存儲數(shù)據(jù)用的
2.怎么聲明變量
2.1.語法
變量名 = 值
2.2.說明:
變量名 - 程序員自己命名
要求:是標(biāo)識符,不能是關(guān)鍵字
規(guī)范:遵守PEP8命名規(guī)范 - 變量名中所有的字母都小寫晌纫,如果變量名
由多個單詞組成,單詞之間用下劃線隔開
見名知義 - 看見變量名大概知道變量中存儲的是什么數(shù)據(jù)
= -> 賦值符號永丝,將右邊的值賦給左邊的變量
值 - 任何有結(jié)果的表達(dá)式锹漱,可以是具體的數(shù)據(jù),也可以是賦值過的變量慕嚷,或者是
任何的運算表達(dá)式
3.1.聲明變量
num = 10 # 將數(shù)字100存儲到num中哥牍,使用num的時候就會使用num中存儲的數(shù)據(jù)
num_1 = 20
num_2 = num_1
num_3 = num_1 + num
print(num_3)
num = 20
print(num)
同一個變量可以存儲不同類型的值,但是變量必須先聲明/賦值在使用
3.2.同時聲明多個變量,賦相同的值
語法: 變量名1 = 變量名2 = ... = 變量名n = 值
a = b = c = 100
print(a, b, c)
3.3.同時聲明多個變量喝检,賦不同的值
變量的個數(shù)要和值的個數(shù)保持一致
語法:變量名1嗅辣,變量名2,...挠说,變量名n = 值1澡谭,值2,...损俭,值n
name, age, sex = "小林", 18, "女"
print(name, age, sex)
3.4.聲明變量和給變量賦值的原理(重要)
先在內(nèi)存中開辟空間存儲數(shù)據(jù)(內(nèi)存空間的大小由數(shù)據(jù)的大小動態(tài)的分配)蛙奖,
然后再將保存數(shù)據(jù)的內(nèi)存空間的地址賦給變量
用一個變量給另一個變量復(fù)制的時候,實質(zhì)是將變量的地址賦給新的變量
num_4 = 300
print(type(num_4))
print(id(num_4)) # 獲取變量中數(shù)據(jù)在內(nèi)存中的地址
運算符
運算符:數(shù)學(xué)運算符杆兵、比較運算符雁仲、邏輯運算符、位運算琐脏、賦值運算符
3.邏輯運算符:and(邏輯與運算),or(邏輯或),not(邏輯非運算)
所有的邏輯運算符的運算對象是布爾攒砖,結(jié)果也是布爾
3.1 and:
a. 運算規(guī)則: 全真才真,有假則假
True and True - True
True and False - False
False and True - False
False and False - False
b.什么時候用:當(dāng)希望多個條件同時滿足的時候日裙,就用and將多個條件連接吹艇。
and相當(dāng)于生活中的并且
3.2 or
a.運算規(guī)則:全假才假,有真則真
True or True - True
True or False - True
False or True - True
False or False - False
b.什么時候用:當(dāng)希望多個條件只要有一個條件滿足的時候阅签,
就用or將多個條件連接掐暮,or相當(dāng)于生活中的或者
3.3 not
a.運算規(guī)則:True 變 False ,F(xiàn)alse 變 True
not True - False
not False - True
b.什么時候用;對某個條件進(jìn)行否定
3.4 短路操作
邏輯與運算的短路操作:當(dāng)and前面的表達(dá)式的值是False的時候政钟,
程序不會在去執(zhí)行and后面的表達(dá)式
邏輯或運算的短路操作:當(dāng)or前面的表達(dá)式的值是True的時候路克,
程序不會在執(zhí)行or后面的表達(dá)式
4.賦值運算符: =, +=, -=, *=, /=, %=, //=, **=
不管是什么樣的賦值運算符樟结,最終的操作都是給變量賦值;
所以賦值運算符的左邊必須是變量
4.1 =: 將右邊的值賦給左邊的變量
4.2 復(fù)合的賦值運算符:現(xiàn)將賦值符號左邊變量中的值取出來,
然后進(jìn)行指定的運算精算,最后將運算結(jié)果重新賦值給左邊的變量
注意:復(fù)合的賦值運算符的左邊必須是已經(jīng)賦值過的變量
位運算
位運算操作的是數(shù)字的補(bǔ)碼的每一位瓢宦;位運算因為是直接操作存儲空間的每一位,
所以執(zhí)行效率要比一般的運算要高很多
5.位運算: &(按位與運算),|(按位或運算),~(按位取反),^(按位異或),<<(左移),>>(右移)
5.1 按位與:數(shù)字1 & 數(shù)字2 -> 兩個數(shù)字補(bǔ)碼上相同位置上的數(shù)灰羽,如果都是1結(jié)果就是1驮履,
如果有一個是0結(jié)果就是0
5.2 按位或:數(shù)字1 | 數(shù)字2 -> 兩個數(shù)字補(bǔ)碼上相同位置上的數(shù),如果都是0結(jié)果就是0廉嚼,
如果有一個是1結(jié)果就是1
5.3 按位取反:~數(shù)字 -> 將數(shù)字補(bǔ)碼上的每一位的值由0變成1玫镐,由1變成0
5.4 ^異或:數(shù)字1 ^ 數(shù)字2 -> 兩個數(shù)補(bǔ)碼上相同位置上的值,
如果相同結(jié)果是0怠噪,不同結(jié)果是1
特點:一個數(shù)異或同一個數(shù)兩次恐似,結(jié)果就是這個數(shù)本身
5.5 << 左移 和 >> 右移
數(shù)字 << 位數(shù)(n) -> 讓數(shù)字的補(bǔ)碼整體左移n位,低位用0補(bǔ)充 -> 數(shù)字 * (2**n)
數(shù)字 >> 位數(shù)(n) -> 讓數(shù)字的補(bǔ)碼整體右移n位傍念,正數(shù)高位補(bǔ)0矫夷,負(fù)數(shù)高位補(bǔ)1 -> 數(shù)字 // (2**n)
應(yīng)用:
1.乘2的次方或者整除2的次方的操作 (<< >>)
2.數(shù)字 & 1 == 0 -> 偶數(shù); 數(shù)字 & 1 == 1 -> 奇數(shù)
運算符的優(yōu)先級:
數(shù)學(xué) > 比較 > 邏輯 > 賦值
** > *,/,//,% > +,- > 位運算
如果有(),先算()里面的
day3
for循環(huán)
python中的循環(huán)有兩種:for - in 循環(huán)和 while 循環(huán)
如果某段代碼需要重復(fù)執(zhí)行,就使用循環(huán)結(jié)構(gòu)
1.for循環(huán)
1.1 語法:
for 變量名 in 序列:
循環(huán)體
1.2 說明:
for - 關(guān)鍵字
變量名 - 要求和聲明變量的時候的變量名一樣
in - 關(guān)鍵字
序列 - 容器型數(shù)據(jù)類型的數(shù)據(jù)憋槐,例如:字符串双藕、列表、元組阳仔、字典忧陪、集合、
迭代器近范、生成器赤嚼、range
循環(huán)體 - 和for保持一個縮進(jìn)的一條或者多條語句:循環(huán)體中的代碼就是
需要重復(fù)執(zhí)行的代碼
1.3 執(zhí)行過程
讓變量去序列中取值,一個一個的取顺又,取完為止更卒。每取一個值,執(zhí)行一次循環(huán)體稚照。
(python中控制for循環(huán)的循環(huán)次數(shù)蹂空,是通過控制in后面序列元素的個數(shù)來控制的)
for x in "hello":
print(x, end=" ")
for i in "hellohello":
print("=======")
for i in range(0, 10):
print("-----")
2.range函數(shù):產(chǎn)生指定范圍類的數(shù)字序列
a.range(n) - 產(chǎn)生0到n-1的整數(shù)數(shù)列
b.range(m,n) - 產(chǎn)生m到n-1的整數(shù)數(shù)列
c.range(m,n,step) - 從m開始每次加step產(chǎn)生下一個數(shù),直到n-1為止
注意:如果for后面的變量不用果录,變量名用_表示
for _ in 序列:
sum1 = 0
for i in range(1, 101):
sum1 += i
print(sum1)
統(tǒng)計個數(shù)
n = 0
for i in range(1, 101):
if i % 2 == 0 and i % 3 != 0:
n += 1
print(n)
while循環(huán)
1.while循環(huán)
1.1 語法
while 條件語句:
循環(huán)體
1.2 說明
while - 關(guān)鍵字
條件語句 - 只要有結(jié)果的表達(dá)式都可以(賦值語句不行)
循環(huán)體 - 和while保持一個縮進(jìn)的一條或者多條語句;需要
重復(fù)執(zhí)行的代碼就放在循環(huán)體中)
1.3 執(zhí)行過程
先判斷條件語句是否為True上枕,如果為True,就執(zhí)行循環(huán)體弱恒;執(zhí)行完循環(huán)體
在判斷條件語句是否為True辨萍,為True又執(zhí)行循環(huán)體
...
以此類推
當(dāng)判斷條件語句的結(jié)果為False的時候,整個循環(huán)結(jié)束,執(zhí)行后面的其他語句
1.4 for和while循環(huán)怎么選锈玉?
循環(huán)次數(shù)確定的時候使用for循環(huán)
循環(huán)次數(shù)不確定和死循環(huán)要使用while循環(huán)
while True:
num = int(input("請輸入數(shù)字:"))
if num == 0:
break
while True:
pass_word = 123456
dense = int(input("請輸入密碼:"))
if dense != pass_word:
print("密碼錯誤爪飘!請重新輸入")
else:
break
count = 0
while True:
num = int(input("請輸入數(shù)字:"))
if num == 0:
break
else:
if num & 1 == 0:
count += 1
print(count)
1.continue
continue是只能出現(xiàn)在循環(huán)體中的關(guān)鍵字;
當(dāng)執(zhí)行循環(huán)體的時候遇到了continue拉背,當(dāng)次循環(huán)直接結(jié)束师崎,直接進(jìn)入下次循環(huán)的判斷
2.break
只能用在循環(huán)體中的關(guān)鍵字;
執(zhí)行循環(huán)體的時候,如果遇到break椅棺,整個循環(huán)直接結(jié)束
sum1 = 0
num = 1
while True:
sum1 += num
if sum1 > 100000:
print(num - 1)
break
num += 1
3.else
for 變量 in 序列:
循環(huán)體
else:
代碼段
while 條件語句:
循環(huán)體
else:
代碼段
執(zhí)行過程:如果循環(huán)自然死亡(自然結(jié)束)else后面的代碼段會執(zhí)行;
如果循環(huán)是因為遇到break而結(jié)束犁罩,else后面的代碼段不會執(zhí)行
day4
數(shù)據(jù)列表
1.什么是列表(list)
列表是容器型數(shù)據(jù)類型(序列),將中括號作為容器的標(biāo)志两疚,多個元素用逗號隔開床估,->[元素1,...,元素n]
特點:可變的(指的是列表中元素可變 - 元素支持增刪改),有序的(支持下標(biāo)操作)
2.聲明列表
變量名 = [元素1,..,元素n]
[] -> 空列表
3.列表中的元素:任何類型的數(shù)據(jù)都可以作為列表元素诱渤;同一個列表中數(shù)據(jù)的類型可以不一樣
4.獲取列表中的元素(查)
4.1 獲取單個元素
a.語法:
列表[下標(biāo)] - 獲取列表中指定下標(biāo)對應(yīng)的元素
b.說明:
列表 - 結(jié)果是列表的表達(dá)式(列表數(shù)據(jù)顷窒、列表變量等)
[] - 固定寫法
下標(biāo) - 下標(biāo)又叫索引;列表中每個元素都有固定的下標(biāo)值來表示元素在列表中的位置。
范圍1:0 - 長度-1 (從前往后的第一個元素源哩、第二個元素...)
范圍2:-1...-長度 (從后往前數(shù),倒數(shù)第一個元素,倒數(shù)第二個圓....)
注意:下標(biāo)不能越界(超過范圍)
4.2 獲取部分元素
列表切片的結(jié)果是小列表
a.語法:
列表[開始下標(biāo):結(jié)束下標(biāo):步長] - 從開始下標(biāo)開始鸦做,每次增加步長的值去取下一個元素励烦,
直到取到結(jié)束下標(biāo)前為止
(在列表中獲取range(開始下標(biāo),結(jié)束下標(biāo)泼诱,步長))
產(chǎn)生的數(shù)字序列作為下標(biāo)的元素
注意:
步長為正表示開始下標(biāo)到結(jié)束下標(biāo)是從前往后取坛掠,所以開始下標(biāo)對應(yīng)的元素必須在結(jié)束下標(biāo)對應(yīng)
元素的前面,否則結(jié)果是[]
步車為負(fù)表示開始下標(biāo)到結(jié)束下標(biāo)是從后往前取治筒,所以開始下標(biāo)對應(yīng)的元素必須在結(jié)束下標(biāo)對應(yīng)
元素的后面屉栓,否則結(jié)果是[]
省略步長;列表[開始下標(biāo):結(jié)束下標(biāo)] -- 相當(dāng)于步長是1
省略下標(biāo):
省略開始下標(biāo):[:結(jié)束下標(biāo)]/ [:結(jié)束下標(biāo):步長]
省略開始下標(biāo):步長為正,從第一個元素開始往后取,步長為負(fù),從最后一個元素開始往前取
省略結(jié)束下標(biāo):[開始下標(biāo)::步長]/[開始下標(biāo):]
省略結(jié)束下標(biāo):步長為正,取到最后一個位置;步長為負(fù)耸袜,取到第一個為止
兩個下標(biāo)都省略:列表[::步長]/[:]
4.3 遍歷 - 將列表中的元素一個一個的取出來
a.直接遍歷元素
for 變量 in 列表:
循環(huán)體
b.通過遍歷下標(biāo)來遍歷列表元素
len(列表) - 獲取列表中元素的個數(shù)
for index in range(len(列表)):
循環(huán)體
增刪改
- 增(增加列表中的元素)
1.1 列表.append(元素) - 在列表的最后添加一個元素
1.2.列表.insert(下標(biāo),元素) - 在列表指定下標(biāo)前插入一個元素
- 刪(刪除列表中的元素)
2.1.del 列表[下標(biāo)] - 刪除列表中指定下標(biāo)對應(yīng)的元素(下標(biāo)不能越界)
2.2.remove(元素) - 刪除列表中第一個指定元素 (元素必須存在)
2.3.列表.pop(下標(biāo)) - 取出列表中指定下標(biāo)對應(yīng)的元素,返回被取出的元素
列表.pop() - 取出列表中最后一個元素,返回被取出的元素
- 改(修改列表中元素的值)
列表[下標(biāo)] = 新值 - 下標(biāo)不能越界