- Python代碼大小寫敏感
- 當語句以
:
結尾時,縮進的語句視爲代碼塊,縮進應堅持以4個空格- 以"#"開頭的是註釋
1. Python編譯器:
Python的解釋器很多,但使用最廣泛的還是CPython。如果要和java或.net平臺交互,最好的辦法不是用JPython或ironPython,而是通過網絡調用來交互,確保各程序之間的獨立性。
2. 輸入輸出
input();print();
3. 數據類型和變量
整數,浮點數,字符串
字符串轉義
print(r’\\t’);#表示’‘內部的字符串默認不轉義
允許用’’’…’’’ 的格式表示多行內容
布爾值,空值
and or not運算
在Python中,可以直接用True、False表示布爾值(請注意大小寫)
None表示空值
變量:變量名必須是大小寫英文、數字和_的組合,且不能用數字開頭
常量:就是不能變的變量。在Python中,通常用全部大寫的變量名錶示常量
/除法計算結果是浮點數
10/3 #3.3333
10//3 #3 地板除
10%3 #1
小結:
- 對變量賦值x = y是把變量x指向真正的對象,該對象是變量y所指向的。隨後對變量y的賦值不影響變量x的指向。
- 注意:Python的整數沒有大小限制,而某些語言的整數根據其存儲長度是有大小限制的,例如Java對32位整數的範圍限制在-2147483648-2147483647。
- Python的浮點數也沒有大小限制,但是超出一定範圍就直接表示爲inf(無限大)
4. 字符串和編碼
編碼
- ascll編碼:1個字節
- unicode編碼:2個字節
- utf-8編碼:可變長編碼,1-6個字節
Python的字符串
Python3中字符串以unicode編碼,類型是str
ord():獲取字符的整數表示
chr():把編碼轉換爲對應的字符
對bytes類型的數據用帶b前綴的單引號或雙引號表示。
x=b'ABC'
以unicode表示的str通過encode()方法可以編碼爲指定的bytes
‘ABC’.encode(‘ascii’)
‘’.encode(‘utf-8’)
把bytes轉爲str,用decode方法
b’abc’.decode(‘ascii’)
len()計算str的字符數,如果換成bytes,len()函數就計算字節數。
len(‘abc’)#3
len(‘中’.encode(‘utf-8’))
在操作字符串時,我們經常遇到str和bytes的互相轉換。爲了避免亂碼問題,應當始終堅持使用UTF-8編碼對str和bytes進行轉換。
由於Python源代碼也是一個文本文件,所以,當你的源代碼中包含中文的時候,在保存源代碼時,就需要務必指定保存爲UTF-8編碼。當Python解釋器讀取源代碼時,爲了讓它按UTF-8編碼讀取,我們通常在文件開頭寫上這兩行:
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
第一行註釋是爲了告訴Linux/OS X系統,這是一個Python可執行程序,Windows系統會忽略這個註釋;
第二行註釋是爲了告訴Python解釋器,按照UTF-8編碼讀取源代碼,否則,你在源代碼中寫的中文輸出可能會有亂碼。
格式化
佔位符 | 替換內容 |
---|---|
%d | 整數 |
%f | 浮點數 |
%s | 字符串 |
%x | 十六進制整數 |
其中,格式化整數和浮點數還可以指定是否補0和整數與小數的位數
print(’%4d-%04d’ % (300, 1))
print(’%.2f’ % 3.1415926)
format():它會用傳入的參數依次替換字符串內的佔位符{0}、{1}……
‘Hello, {0}, 成績提升了 {1:.1f}%’.format(‘小明’, 17.125)#‘Hello, 小明, 成績提升了 17.1%’
5. 使用list和tuple
list:有序集合,可以隨時添加和刪除其中的元素
classmates=[‘adam’,‘bob’]
len()
訪問元素直接使用索引classmate[0],classmate[-1]
classmates.insert(1,‘jack’)
classmates.append(‘adam’)
classmates.pop(2)
classmates[1]=‘sarah’
裏面的元素也可以是list,嵌套成多維數組。
tuple:有序列表,一旦初始化就不能修改
classmates=(‘michael’,‘bob’)
只有1個元素的tuple定義時必須加一個逗號,,來消除歧義:
t = (1,)
tuple的指向不變
6. 條件判斷
># coding=UTF-8
#!/usr/bin/python
age = 3
if age > 18:
print('your age is ',age)
print('adult')
elif age > 6:
print('your age is ',age)
print('teenager')
else:
print('kid')
int():str轉換爲整數
7. 循環
###for…in循環
>sum = 0
for x in range(101):
sum = sum + x
print(sum)
range():可以生成一個整數序列,再通過list()轉爲list
> list(range(5))
[0, 1, 2, 3, 4]
###while循環
>sum = 0
n = 99
while n > 0:
sum = sum + n
n = n - 2
print(sum)
break語句可以在循環過程中直接退出循環,而continue語句可以提前結束本輪循環,並直接開始下一輪循環。這兩個語句通常都必須配合if語句使用。
要特別注意,不要濫用break和continue語句。break和continue會造成代碼執行邏輯分叉過多,容易出錯。大多數循環並不需要用到break和continue語句,上面的兩個例子,都可以通過改寫循環條件或者修改循環邏輯,去掉break和continue語句
8. 使用dict和set
dict:dict全稱dictionary,在其他語言中也稱爲map,使用鍵-值(key-value)存儲,具有極快的查找速度。
>d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}
判斷key是否存在:
d.get('Thomas')#none
d.get('Thomas',-1)#-1
'Thomas' in d #False
d.pop('Bob')
和list比較,dict有以下幾個特點:
- 查找和插入的速度極快,不會隨着key的增加而變慢;
- 需要佔用大量的內存,內存浪費多。
而list相反: - 查找和插入的時間隨着元素的增加而增加;
- 佔用空間小,浪費內存很少。
key必須是不可變對象
set:set和dict類似,也是一組key的集合,但不存儲value。由於key不能重複,所以,在set中,沒有重複的key。
要創建一個set,需要提供一個list作爲輸入集合:
>s = set([1, 2, 3])#{1, 2, 3}
注意,傳入的參數[1, 2, 3]是一個list,而顯示的{1, 2, 3}只是告訴你這個set內部有1,2,3這3個元素,顯示的順序也不表示set是有序的。。
重複元素在set中自動被過濾:
>s = set([1, 1, 2, 2, 3, 3])#{1, 2, 3}
s.add(4)
s.remove(2)
set可以看成數學意義上的無序和無重複元素的集合,因此,兩個set可以做數學意義上的交集、並集等操作:
>>> s1 = set([1, 2, 3])
>>> s2 = set([2, 3, 4])
>>> s1 & s2
{2, 3}
>>> s1 | s2
{1, 2, 3, 4}