Python學習筆記----基礎

  1. Python代碼大小寫敏感
  2. 當語句以:結尾時,縮進的語句視爲代碼塊,縮進應堅持以4個空格
  3. 以"#"開頭的是註釋

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

小結:

  1. 對變量賦值x = y是把變量x指向真正的對象,該對象是變量y所指向的。隨後對變量y的賦值不影響變量x的指向。
  2. 注意:Python的整數沒有大小限制,而某些語言的整數根據其存儲長度是有大小限制的,例如Java對32位整數的範圍限制在-2147483648-2147483647。
  3. 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有以下幾個特點:

  1. 查找和插入的速度極快,不會隨着key的增加而變慢;
  2. 需要佔用大量的內存,內存浪費多。
    而list相反:
  3. 查找和插入的時間隨着元素的增加而增加;
  4. 佔用空間小,浪費內存很少。

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}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章