Day-3: Python基礎
-
數據類型和變量
Python中直接處理的數據類型主要有以下幾種:
- 整數:Python可以直接處理任意大小的整數,無論正負,都可以直接輸入處理;
- 浮點數:浮點數也叫做小數。有普通寫法,如:1.1,也有描述很大或者很小的科學計數法,有e代替10,有1.3e6、1.2e-5等;
- 字符串:用‘’和“”表示的都是字符串,如‘abc’,“ABC”。但是如果字符串中包含’或者”,則註意只包含’,外面用“”括起來;只包含”的,外面用‘’括起來。和c中一樣,\是轉義字符,但是使用比較麻煩。如果‘和”都包含的話,可以在字符串前面加上r表示原意,內部的轉義字符就都沒用了。如果想表示多行內容,可以用
‘‘‘line1 line2 line3‘‘‘
4. 布爾值:兩個值,分別是True和False。布爾值可以進行的運算以下幾種:
- and運算。只有左右兩值均為True時,結果才為True。註意:1 and 2時,如果1為False,則2沒有進行計算,因為結果已經確定為False,稱為短路現象;
- or運算。左右兩值任一為True時,結果就為True。註意:同上,由於短路現象,只要 1 or 2中1為True,2就不會計算,結果直接為True;
- not運算。為單目運算,True變為False,False變成True。
5. None:空值,它不能理解為0,0是有意義的,而None是特殊的空值。
變量:
Python中變量沒有類型的限制,定義時不用聲明是什麽類型,直接使用即可。
-
Python字符串和編碼
Python 2.7中所有字符默認是ASCII編碼,要表示Unicode編碼(多國語言)時,使用:
u‘...‘
特別的由於ASCII編碼中沒有中文,所以字符串中有中文時,務必再前面加上u。(Python3.0改為‘....’和u‘....’都是Unicode編碼了)
但是,ASCII編碼使用1個字節,Unicode編碼一般使用兩個字節,特別的甚至4個字節。為了節省空間,Unicode編碼又變成了可變的Unicode編碼,即utf-8編碼。下面兩個圖是記事本編輯和瀏覽網頁時編碼形式的轉換:
可以看出,在存儲和傳輸時,以utf-8編碼節省時間,但是使用時選擇Unicode編碼,保證正確地顯示和編輯。
再說Python 2.7中ASCII編碼加上u的前綴變成Unicode編碼後用encode(‘utf-8’)方法,變成utf-8編碼,反過來,utf-8編碼經過decode(‘utf-8’)解碼成Unicode編碼。過程如下:
>>> u‘中文‘.encode(‘utf-8‘) ‘\xe4\xb8\xad\xe6\x96\x87‘ #註意變成了一個字節的編碼格式,utf-8 >>> ‘\xe4\xb8\xad\xe6\x96\x87‘.decode(‘utf-8‘) u‘\u4e2d\u6587‘ #變成2個字節編碼,Unicode >>> print ‘\xe4\xb8\xad\xe6\x96\x87‘.decode(‘utf-8‘) 中文 #先由utf-8變成Unicode再打印
考慮到Python的跨平臺運行,通常文件開頭要加上這兩行:
#!/usr/bin/env python # -*- coding: utf-8 -*-
第一行註釋是為了告訴Linux/OS X系統,這是一個Python可執行程序,Windows系統會忽略這個註釋;
第二行註釋是為了告訴Python解釋器,按照UTF-8編碼讀取源代碼,否則,你在源代碼中寫的中文輸出可能會有亂碼。
Python中格式化輸出:
‘....‘ % (....)
字符串中有幾個占位符,後面的括號就有幾個變量或者常量。
常用的占位符有:
%d 整數
%f 浮點數
%s 字符數
%x 十六進制整數
-
三種特殊的數據類型
- list
list是一種有序的集合,可以隨時增減元素。用[]表示,索引是從0開始的,最後一個是個數-1.他有如下方法:
- len():獲取list元素的個數
>>> len(classmates)
3
- append():list末尾增加一個元素
>>>list1 = [1, 2, 3] >>>list1.append(4) # 將元素添加在最後 >>>list1 >>>[1, 2, 3, 4]
- insert():list插入一個元素
>>>list1 = [1, 2, 3] >>>list1.insert(2,6) # 第一個參數是插入的位置,第二個是元素 >>>print list1 >>>[1, 2, 6, 3]
>>>print list1.insert(7) # 只有一個參數時,作為元素插入在最後
>>>[1, 2, 6, 3, 7]
- pop():刪除一個元素
>>> classmates.pop() # 無參數時刪除最後一個元素 ‘Adam‘ >>> classmates [‘Michael‘, ‘Jack‘, ‘Bob‘, ‘Tracy‘] >>> classmates.pop(1) # 刪除索引位置為該參數的元素 ‘Jack‘ >>> classmates [‘Michael‘, ‘Bob‘, ‘Tracy‘]
- tuple
tuple,名元祖。與list相似,但是tuple一旦建立,其中的元素無法更改,也沒有append()等方法。它的意義在於確保元素無法改變,保證安全性。索引時,使用(),也是從0開始。
- dict
全稱dictionary,使用鍵-值(key-value)存儲,具有極快的查找速度。
>>> d = {‘Michael‘: 95, ‘Bob‘: 75, ‘Tracy‘: 85} >>> d[‘Michael‘] 95
dict是由Hash算法通過key計算出value的存儲位置,所以key的值不變的。特點是
- 查找和插入的速度極快,不會隨著key的增加而增加;
- 需要占用大量的內存,內存浪費多。
有get()和pop()兩種方法:
>>> d.get(‘Thomas‘) # 返回None的時候Python的交互式命令行不顯示結果。 >>> d.get(‘Thomas‘, -1) -1
>>> d.pop(‘Bob‘) 75 >>> d {‘Michael‘: 95, ‘Tracy‘: 85}
- set
set和dict相似,唯一區別僅在於沒有存儲對應的value。
set需要提供一個list作為輸入集合,顯示的set([1, 2, 3])
只是告訴你這個set內部有1,2,3這3個元素,顯示的[]不表示這是一個list。
set中用add(key)方法添加元素到set中;
set中用remove(key)方法刪除元素。
-
條件判斷和循環
python中對於縮進特別嚴格,它是以同樣的縮進來作為塊執行的。
其中,python在判斷和循環語句中,均是以:來作為縮進標識。
判斷語句的完整形式:
if <條件判斷1>: <執行1> elif <條件判斷2>: <執行2> elif <條件判斷3>: <執行3> else: <執行4>
循環語句有兩種,一種是for...in循環,一種是while循環。
for...in循環如下:
names = [‘Michael‘, ‘Bob‘, ‘Tracy‘] for name in names: print name
把names中的每個元素帶入name依次做循環。
while循環則是:只要條件滿足,就不斷循環,條件不滿足時退出循環。
sum = 0 n = 99 while n > 0: sum = sum + n n = n - 2 print sum
最後raw_input()需要註意下,
birth = raw_input(‘birth:‘)
裏面的字符串‘birth’是在運行時在終端上顯示birth: ,但是實際輸入年齡的數字,傳遞給birth的是一個字符串,如果要傳輸integer,應改為:
birth = int(raw_input(‘birth:‘))
Day-3: Python基礎