1.對Python的理解
- 解釋型語言:
執行一句代碼生成一段字節碼(與平臺無關的中間碼)代碼在python解釋器裏執行,轉換成目標平臺(cpu)命令,再到cpu裏執行。 - 編譯型語言: 是一次性將代碼全部生成機器語言,再到指定cpu裏執行,編譯型語言是要到其他cpu中運行,代碼需要重新編譯。
- 兩者區別:
解釋型語言執行一句生成一段,編譯型語言是一次性生成的;解釋型語言有虛擬機,編譯型語言無虛擬機;解釋型語言可以在多平臺運行,編譯型在制定平臺運行。 - 定義理解:
(1)Python是解釋型語言,開發過程中沒有編譯環節。
(2)Python是交互式語言,可以在提示符>>>後直接執行代碼
(3)Python是面嚮對象語言,支持面向對象的風格或代碼封裝在對象的編程技術,通過組合(類裏寫類)和派生(繼承)來定義類。
(4)Python是動態語言,在創建新的變量時,不去指定變量的類型。 - Python的特點
(1)易於學習:關鍵字較少,結構簡單,明確定義的語法。
(2)易於閱讀:代碼定義更清晰。
(3)易於維護:代碼相當易於維護。
(4)庫豐富:庫豐富,跨平臺,在UNIX、Widows、MCAC的兼容性都很好。
(5)可移植、可擴展(加入C/C++程序)、可嵌入(將Python程序嵌入到C/C++)
(6)編碼快,但運行速度慢
(7)應用廣泛,適用於網絡應用、數據建模、大數據應用、自動化等。
(8)縮進很重要、很重要、很重要。
2.Python2和Python3的區別
暫時省略
可以同時下載兩個版本的python,配置兩個環境變量使用
編輯器pycharm備註多行代碼快捷鍵Ctrl+/。
3.變量組成規則
(1)變量由字母、數字下劃線組成。
(2)不能以數字開頭。
(3)不能使用關鍵字(保留字)作爲變量。
(4)儘量讓變量命名變的有意義。
4.頭部加入編碼:
#!/usr/bin/python
# -*- coding:utf-8 -*-.
前兩行固定,否則不生效,1字節=8位。
5.Python的註釋
(1)單行註釋:以#開頭
(2)多行註釋:用多個#,或者三個單引號 ‘’‘ “”“或者三個雙引號“”“ ”“”,無論用什麼都是成對出現的。
6.if條件語句舉例
if weather==30:
print("簡直熱死個人")
elif weather==20:
print(“溫度剛剛好”)
elif weather==-30:
print(“凍成冰棍了”)
else:
print(“今天沒看天氣預報”)
注意:
縮進的空格是可變的,但是同一個代碼塊的語句必須包含相同的縮進空格數,否則會報錯。
if語句支持嵌套。Python的if後面是冒號,不和Java一樣是括號。
7.將一行語句分爲多行顯示
(1)用 \ 將一行的語句分爲多行顯示,語句中如果有[] 、{}、()就不需要多行連接符。
totol = one + \
two + \
three
(2)還可以在一行顯示多條語句,用分號隔開i
import sys; x = a+b;a=1,b=1; print(x)
8.數字類型以及標準數據類型
有四種數字類型:
(1)int(整型):如1,python3中沒有long。
(2)bool(布爾類型):True、False。
bool爲false的幾種情況:None、“”、()、[]、{}、0
(3)float(浮點型):如1.23。
(4)complex(複數類型):如1+2j。
六種數據類型:
(1)Number(數字型)
(2)String(字符串)
(3)List(列表):列表是寫在方括號 [] 之間、用逗號分隔開的元素列表。
(4)Tuple(元組):寫法類似list。
(5)Set(集合):創建一個空集合用 set()。
(6)Dictionary(字典):字典用 { } 標識,它是一個無序的 鍵(key) : 值(value) 的集合。
不可變數據:Number、String、Tuple。
可變數據:List、Dictionary、Set。
9.字符串
(1)用+將字符串連接在一起,用*重複。
(2)\ 可以用來轉義,使用 r 可以讓 \ 不發生轉義。如 r"this is a line with \n" 則\n會顯示,並不是換行。
(3)Python中的字符串有兩種索引方式,從左往右以0開始,從右往左以-1開始。
(4)字符串一旦創建不可修改,一旦修改,會重新生成字符串
10.切片範圍
說明:逗號“,”分隔各個維度,“:”表示各個維度內的切片,只有:表示取這個維度的全部值,從0開始,第一位是x[0],-1爲倒數第一位。
1.一維數組
(1)x[n]:表示獲取第n+1個字符內容
(2)x[i:j] :表示獲取a[i]到a[j-1]
(3)x[:n]:輸出前n個字符
(4)x[:-n]:去掉最後n個字符
(5)x[n:]:輸出從第n+1位開始的所有字符
(6)x[-n:]:取最後n個字符
(7)x[i:j:k]這種格式呢,i,j與上面的一樣,但k表示步長(就是一組k個),默認爲1時,和x[i:j]相同。
(8)x[::-1]是從最後一個元素到第一個元素複製一遍(反向)
2.二維數組
(1)x[:,0]取所有行的第0個數據,第二維下標位0的所有數據,第0列(從0開始)
(2)x[:,1] 取所有行的第1個數據
(3)x[:,1:]第一維全部取,即所有行,列上從第一列開始取,不要第0列
(4)x[1,:]是取第1維中下標爲1的元素的所有數據,第1行(從0開始)
(5)x[:2,1:]第一維取下標2之前的,即第2行之前(0,1兩行),列上從第一列開始取,不要第0列
3.三維數組
(1)x[1,1,2]表示第一維取1,第二維取1,第三維取2
(2)x[:,1,2]表示第一維全取,第二維取1,第三維取2
(3)x[:,1:,2]表示第一維全取,第二維取1及1之後的所有值,第三維取2
(4)x[:,1:,:2]表示第一維全取,第二維取1及1之後的所有值,第三維取2之前的值(0,1)
切片例子:
11.導入文件
用import或者from...import
12.數值運算
運算 | 符號 |
---|---|
加 | + |
減 | - |
乘 | * |
除 | / |
取商 | // |
取餘 | % |
乘方 | ** |
或 | & |
與 | l |
異或(相同爲0,不同爲1) | ^ |
取反 | ~ |
13.循環語句
(1)break:在執行過程中終止循環,並且跳出整個循環。
(2)continue:在執行過程中終止當前循環,跳出該次循環,執行下一次循環。
(3)pass:pass爲空語句,是爲了保護程序結構的完整性。
(4)for循環
rang
for 變量名 in 字符串:
print(變量名) #可以把所有的字符串輸出來
for i in range(0,10,1):
print(i)
#輸出結果:1 2 3 4 5 6 7 8 9
for i in range(10,0,-1):
print(i)
#輸出結果:10 9 8 7 6 5 4 3 2 1
14.in與not in
in只能跑哪判斷單個字符或者連續的字符在不在其中,不能判斷間隔1、3位置上的字符。
15.魔法字符串
(1)7個必須要背會的方法
join
split
find
strip
upper
lower
replace
(2)4個必須會的灰魔法
len
for循環
索引
切片
(3)魔法的解釋加例子
1、capitalize () ——魔法:將字符串的首字母大寫
2、casefold()——魔法:可以將未知的字符串對應的關係也變小寫,即字符串中的所有字符變小寫,比lower()更厲害
3、lower()——魔法:將字符串中的大寫字母變小寫
4、upper()——魔法:將字符串全部變大寫
5、center(self,width,fillchar=None)——魔法:將字符串居中顯示。width後面必須要帶一個值,指字符串的長度,self可忽略,sub表示字符串的子序列,”None“的可填可不填,fillchar指的是可以用什麼填充
test="hhhhh"
test1=test.center(20,"*")
print(test1)
輸出結果:*******hhhhh********
6、ljust(width,fillchar=none)——魔法:在左側填充字符
7、rjust(width,fillchar=none)——魔法:在右側填充字符
8、count(self,sub,start=None,end=None)——魔法:計算一個指定的字符出現了幾次,可以是多個字符
9、endwith(self, suffix, start=None, end=None)——魔法:以什麼結尾,判斷結果爲true或者flase
10、startswith(self, prefix, start=None, end=None)——魔法:以什麼開始,判斷結果爲true或者flase
11、find(self, sub, start=None, end=None) ——魔法:從開始往後找,找到第一個字符後,獲取其位置,如果找不到,則返回-1。
12、index(self, sub, start=None, end=None)——魔法:和find作用相同,但區別是找不到,直接報錯
13、format()——魔法:格式化字符串,將字符串中的佔位符替換成指定的值
test = "i am {name},age {a}"
v = test.format(name='小明',a='10')
print (v)
#輸出結果:i am 小明,age 10
*format()如果用字典的方式傳進去,得加**纔可以*
test = "i am {name},age {a}"
v = test.format(**{"name":"小明","a":10})
print (v)
#輸出結果:i am 小明,age 10
如果中括號裏面什麼都不寫,寫{0} {1} {2},代表第一個佔位符,第二個佔位符,第三個佔位符。下面就不用再寫name=啥了,默認對應的,直接寫值就行了,寫3個值,就對應上面3個佔位符,依次從左向右。
test = "i am {0} age {1} weight {2}"
v = test.format('小明','10','40kg')
print (v)
#輸出結果:i am 小明 age 10 weight 40kg
14、format_map({})——魔法:format_map也是格式化,傳入的值必須是這樣的格式{ “name”: ‘小明’,“a”: 10 },這個格式就是一個字典格式
test = "i am {name} age {a}"
v = test.format_map({ "name": '小明',"a": 10 })
print (v)
#輸出結果:i am 小明 age 10
15、isalnum(self)——魔法:判斷字符串中只能由字母和數字,不能有特殊符號
16、isalpha(self)——魔法:判斷字符串中是否都是字母(漢字也可以)
17、isdecimal(self)——魔法:判斷字符串是否爲數字(工作中常用)
18、isdigit()——魔法:判斷字符串是否只包含數字,比isdecimal更厲害一些,特殊數字也可以,例如 ①
19、isnumeric()——魔法:判斷是否是數字,比上兩個更厲害,不僅可以識別特殊數字,還可以識別中文
20、isprintable()——魔法:判斷是否可打印(\t,\n肉眼不可見的,爲false)
21、isspace()——魔法:判斷字符串是否是空格,一個或多個都返回true,“”爲空或其他則返回false
22、istitle()——魔法:判斷字符串是否是標題(標題的首字母大寫,支持中文)
title()——魔法:將字符串轉換成標題
23、isupper()——魔法:判斷字符串是否都是大寫字母(支持中文和數字)
upper()——魔法:轉換成大寫字母
24、islower()——魔法:判斷是否都是小寫字母(支持中文和數字)
lower()——魔法:轉換成小寫字母
25、join(self, iterable)——魔法:連接字符串,一般形式爲“ ”join(字符串),“ ”裏面填充什麼都行
S = "今天是2019年11月7日"
v1 = " ".join(S)
v2 = "*****".join(S)
print (v1)
print(v2)
#輸出結果:
今 天 是 2 0 1 9 年 1 1 月 7 日
今*****天*****是*****2*****0*****1*****9*****年*****1*****1*****月*****7*****日
26、strip()——魔法:去除左右空白
27、lstrip()——魔法:去除字符左邊的空格(包括\t \n),還可以去除指定的字符串,還可以移除指定字符的,如下
S = "gdhhhgertet"
v = S.lstrip('g')
print (v)
去除左邊的g
#輸出結果:dhhhgertet
28、rstrip()——魔法:去除字符串右邊的空格 (包括\t \n)還可以去除指定的字符串,也可以去除右邊的指定字符
29、maketrans(“A”,“B”) ——魔法:A和B作置換,配合translate一起使用
a = "fshfskjgjgfsghh"
b = a.maketrans("fs","22")
c = a.translate(b)
print(c)
#輸出結果:22h22kjgjg22ghh
30、partition(self, sep)——魔法:找到指定的字符,保留分割字符串,以分隔符將原字符串分成三部分,以()形式輸出,如下
a = "hsdhgjghsgfsf"
print(a.partition("jg"))
#輸出結果:('hsdhg', 'jg', 'hsgfsf')
31、rpartition()——魔法:從字符串右邊開始以指定的字符分割符進行分割
32、split(“”,n)——魔法:以指定字符進行分割,進行分割n次操作,以數組形式輸出
a = "hsdhgjghsgfsf"
print(a.split("s",3))
#輸出結果:['h', 'dhgjgh', 'gf', 'f']
33、rsplit()——魔法:從字符串右邊開始,以指定字符進行輸出,但是還是從左往右輸出的
34、splitlines()——魔法:只能根據換行符\n進行分割,裏面可填寫true/false,true時\n保留
35、swapcase()——魔法:大小寫轉換
36、replace(“A”,“B”,n)——魔法:將A替換成B,替換n次
37、isidentifier()——魔法:是否符合標識符規則
38、expandtabs(tabsize)——魔法:字符串加空格,與\t結合使用,加\n會變成表格
a = "fsdjsg\tggdgdf\nfsdjsg\tggdgdf\n"
b = a.expandtabs(10)
print(b)
#輸出結果:
fsdjsg ggdgdf
fsdjsg ggdgdf