1. 數據類型和變量
- 整數:0,-3, 333 ,0xff00(十六進制)
- 浮點數:0.4 ,1.23e9(1.23x109) , 0.000012可以寫成
1.2e-5
- 字符串:‘a’或“a”,用單引號和雙引號括起來,如果字符串中包括單、雙引號,用轉義字符 \'(\")表示,在命令行模式下換行用'''...''',str類型
- 布爾值:and,or,not ; and 與運算 都true爲true,or 或運算 都False爲false 其餘爲真, not 非運算 not false = true
- 空值:none,注意這裏none不是0
- 變量:字母、數字、下劃線組成的(且數字不能爲首字母)
- 常量:用大寫表示 例如PI=3.14159265359
- 除法:/(正常的除),//(取整除),%(取餘除)
2.字符編碼
- 編碼類型:
類型 | 特點 | 大小 |
ASCII編碼 | 支持大小寫英文字母、數字和一些符號 | 1字節 |
UTF-8編碼 | 可變長編碼,節約存儲空間,ASCII編碼可以看做是UTF-8編碼的一部分,python中最常用 | 1-6字節,英文1字節,漢字3字節,生僻字4-6字節 |
Unicode編碼 | 所有語言統一編碼(大小寫英文字母、數字和一些符號用ASCII編碼,並在前補1字節的0) | 2字節,生僻字4字節 |
- 編碼轉換:在計算機內存中,統一用Unicode編碼,需要保存或者傳輸時,先轉換成UTF-8編碼再保存;瀏覽網頁時,服務器會將動態生成的Unicode編碼轉換成UTF-8編碼再傳輸到瀏覽器。
- python字符串編碼:
- 採用Unicode編碼,支持多語言;
- 單字符:獲取編碼 ord('A') ,結果爲65 ;轉換成編碼chr(65),結果爲A;
>>> ord('A')
65
>>> ord('中')
20013
>>> chr(66)
'B'
>>> chr(25991)
'文'
3.python字符串轉變如果知道字符的整數編碼,可以用16進制直接表示,例如
>>> '\u4e2d\u6587' '中文'
由於python字符串是str類型,所以在存儲和傳輸時,要轉換成計算機識別的byte類型(一個字符對應着若干個字節);python中的字節用b+'字符串'表示,如b'asc',表示byte類型的字符串'asc','asc'表示str類型的字符串'asc',二者佔用字節數不同。
- byte變成str:b'字符串'.decode()函數
- str變成byte:'字符串'.encode()函數
- 只能計算str中字符大小:len('字符串')函數
#!/usr/bin/env python3 # 告訴Linux/OS X系統,這是一個python可執行程序,Windows系統會忽略這個註釋 # -*- coding: utf-8 -*- # 告訴python解釋器,採用UTF-8編碼讀取原文件,否則,在源代碼中寫的中文輸出可能會亂碼
>>> b'ABC'.decode('ascii') 'ABC' >>> 'ABC'.encode('utf-8', errors='ignore') #可忽略很少的錯誤 b'ABC'
>>> len('ABC')
3
>>> len(b'ABC'.encode('utf-8'))
申明瞭UTF-8編碼並不意味着你的
.py
文件就是UTF-8編碼的,必須並且要確保文本編輯器正在使用UTF-8 without BOM編碼:
- 格式化
1. 在python中格式化和c語言一樣,採用%?佔位來表示,%%表示一個%字符,其中%d,替換整數,%f-浮點數,%s-字符串,%x-16進制數
>>> 'Hello, %s' % 'world' #一個佔位符可省略括號 'Hello, world' >>> 'Hi, %s, you have $%d.' % ('Michael', 1000000) 'Hi, Michael, you have $1000000.'
>>> '%02d-%07.2f' % (3, 3.1415926) #格式化整數和浮點數還可以指定是否補0和整數與小數的位數:
03-0003.14
2. 使用'{0:07.2f},{1}'.format(字符1,字符2)方法
>>> 'Hello, {0}, 成績提升了 {1:.1f}%'.format('小明', 17.125)
'Hello, 小明, 成績提升了 17.1%'
3. 使用list和tuple
- list:類似於數組和棧的結合,元素類型可以不同,用[]初始化
>>> list_1 = ['Michael', 1, True]
>>> list_1[-1] #取最後一個 倒數第二個爲[-2]
True >>> list_1[0] #從0開始
'Michael' >>> list_2 = ['Michael', ['Bob','Marry'], 'Tracy'] #第二個位置代表list裏面包含另一個list,list的嵌套,
>>> list_2[1][1] #可以看作數組
'Marry'
>>> list_2.append['May'] #在list尾部追加'May'
>>> list_2
['Michael', ['Bob','Marry'], 'Tracy','May']
>>> list_2.insert(1,'Jack') #在list第2個位置插入'Jack'
>>> list_2
['Michael', 'Jack', ['Bob','Marry'], 'Tracy','May']
>>> list_2.pop() #刪除末尾元素
>>> list_2.pop(1) #刪除第2個元素
>>> list_2
['Michael', ['Bob','Marry'], 'Tracy']
>>> len(list_2)
3
>>> list_1.sort() #排序
- tuple:和list使用方式一樣,不同的是tuple用()定義,並且它類似於靜態變量,一旦定義後不可更改,因此具有安全性,在python中能定義成tuple不定義成list。tuple可以嵌套list,list裏面的內容是可以增刪的。
>>> tuple_1 = (1, 2) >>> tuple_1 (1, 2)
#定義空tuple
>>> t = () >>> t ()
#定義1個元素,且元素是1 如果不加,則可以看做是(1),會產生歧義,因此加,消除歧義
>>> t = (1,) >>> t (1,)
#tuple中的list可以改變,並且可以使用list的pop,append和insert函數,但是tuple中只允許使用tuple[][]來查看元素
>>> t = ('a', 'b', ['A', 'B']) >>> t[2][0] = 'X' >>> t[2].insert['c'] >>> t ('a', 'b', ['X', 'Y', 'c'])
4.條件判斷
- if-else 只要遇到滿足條件就跳出條件語句
if <條件判斷1>: <執行1> elif <條件判斷2>: <執行2> elif <條件判斷3>: <執行3> else: <執行4>
5.循環
- for...in...循環:把list和Tuple中的元素迭代出來
names = ['Michael', 'Bob', 'Tracy']
for name in names:
print(name)
#結果
Michael Bob Tracy
sum = 0 for x in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]: sum = sum + x print(sum)
#結果
55
sum = 0 for x in range(101): #range(101) 生成從0到100的整數 sum = sum + x print(sum) #結果 5050
- while循環:只要滿足條件,就循環,不滿足則退出
#打印100以內的奇數
sum = 0
n = 99
while n > 0:
sum = sum + n
n = n - 2
print(sum)
- 退出循環:break:提前結束循環;continue:提前結束本次循環,繼續下一次循環;
- 當遇到死循環時,Ctrl+c可退出
4. 使用dict和set
1). dict(字典,dictionary):和map類似,定義了(鍵-值)對,使用(key-value)存儲,用{key1:value1,key2:value2}初始化;- 和list比較,dict有以下幾個特點:
- 查找和插入的速度極快,不會隨着key的增加而變慢;
- 需要佔用大量的內存,內存浪費多。
而list相反:
- 查找和插入的時間隨着元素的增加而增加;
- 佔用空間小,浪費內存很少。
>>> d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}
>>> d['Michael']
95
>>> d['Tracy'] = 67 #可以重新根據key賦值 並且key永遠是最後賦值的值
>>> d['Tracy']
67
#判斷key是否存在
>>> 'Thomas' in d False
>>> d.get('Thomas') #返回none 但是在交互界面不顯示 >>> d.get('Thomas', -1) #返回自己定義的值,說明不存在該KEY -1
2. 可以使用pop函數 d.pop(key),刪除鍵值對;
2). set:set可以看成數學意義上的無序和無重複元素的集合,定義爲 ([1,2,3]),兩個set可以做數學意義上的交集、並集等操作:
- set.add(key):添加元素,也可添加重複項,但是會自動過濾
>>> s.add(4) >>> s {1, 2, 3, 4} >>> s.add(4) >>> s {1, 2, 3, 4}
- set.remove(key):刪除元素
>>> s.remove(4) >>> s {1, 2, 3}
- set1&set2 取交集
- set1|set2 取並集
>>> s1 = set([1, 2, 3]) >>> s2 = set([2, 3, 4]) >>> s1 & s2 {2, 3} >>> s1 | s2 {1, 2, 3, 4}