1. 程式人生 > >Day-3: Python基礎

Day-3: Python基礎

計數 平臺 pre 代碼 for alt 成了 ack sci

  • 數據類型和變量

  Python中直接處理的數據類型主要有以下幾種:

  1. 整數:Python可以直接處理任意大小的整數,無論正負,都可以直接輸入處理;
  2. 浮點數:浮點數也叫做小數。有普通寫法,如:1.1,也有描述很大或者很小的科學計數法,有e代替10,有1.3e6、1.2e-5等;
  3. 字符串:用‘’和“”表示的都是字符串,如‘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的值不變的。特點是

  1. 查找和插入的速度極快,不會隨著key的增加而增加;
  2. 需要占用大量的內存,內存浪費多。

  有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基礎