Python學習筆記——基礎語法(上)

寫在前面:本文適合有高級編程語言基礎的讀者閱讀。


一、Python設計目標

  • 簡單直觀
  • 開源(Python源碼不能加密)
  • 易理解
  • 適用於短期開發的日常任務

二、爲何選擇Python?

      代碼量少,同樣的問題,用不同的語言解決,代碼量差距很明顯。一般情況Python是Java的1/5。

三、Python特點

  • 面向對象,在Python中一切皆對象
  • 強大的標準庫,Python語言的核心只包含數字、字符串、列表、字典、文件等常見類型和函數,而由Python標準庫提供了系統管理、網絡通信、文本處理、數據庫接口、圖形系統、XML處理等額外功能。
  • Python社區提供了大量的第三方模塊,使用方式與標準庫類似。它們的功能覆蓋科學計算、人工智能、機器學習、Web開發、數據庫接口、圖形系統等多個領域。

四、Python的優缺點

1、優點

  • 簡單、易學
  • 免費、開源
  • 面向對象
  • 豐富的庫
  • 可擴展性——如果需要一段關鍵代碼運行的更快或者希望某些算法不公開,可以把這部分程序用C或C++編寫,然後在Python程序中使用它們
  • ……

2、缺點

  • 運行速度——解釋性語言,不像C/C++這些編譯性語言執行速度比較快,因爲是解釋性的,執行速度相對較慢,但跨平臺性較好
  • 國內市場較小
  • 中文資料匱乏

五、Python適合的領域

  • Web網站和各種網絡服務
  • 系統工具和腳本
  • 作爲“膠水”語言把其他語言開發的模塊包裝起來方便使用

六、Python不適合的領域

  • 貼近硬件的代碼(首選C)
  • 移動開發:IOS、Android有各自的語言
  • 遊戲:C、C++

七、Python和其他語言的對比


八、Python運行機制


      字節碼文件包含.pyc和.pyo文件(.pyc優化後的文件)

九、基礎語法

1、print語句

      .當我們在Python交互式環境下編寫代碼時,>>>是Python解釋器的提示符,不是代碼的一部分。

     print語句也可以跟上多個字符串,用逗號“,”隔開,就可以連成一串輸出:(print會依次打印每個字符串,遇到逗號“,”會輸出一個空格)

>>> print 'The quick brown fox', 'jumps over', 'the lazy dog'
The quick brown fox jumps over the lazy dog

2、Python中Unicode字符串

      爲了統一所有文字的編碼,Unicode應運而生。Unicode把所有語言都統一到一套編碼裏,這樣就不會再有亂碼問題了。Unicode通常用兩個字節表示一個字符,原有的英文編碼從單字節變成雙字節,只需要把高字節全部填爲0就可以。Python在後來添加了對Unicode的支持,以Unicode表示的字符串用u'...'表示,比如:

print u'中文'
中文

注意: 不加 u ,中文就不能正常顯示。如果中文字符串在Python環境下遇到 UnicodeDecodeError,這是因爲.py文件保存的格式有問題。可以在第一行添加註釋

# -*- coding: utf-8 -*-

目的是告訴Python解釋器,用UTF-8編碼讀取源代碼。但是以上兩者不能同時出現,比如代碼編輯第一行的註釋#-*-coding:utf-8 -*-,表明以下Python代碼使用utf-8編碼,但輸出語句若寫成print u'" ..."',這樣就又要讓解釋器使用Unicode編碼輸出,導致解碼出錯。我們應該記住以何種方式編碼就應以何種方式解碼,否則就很有可能出現編碼錯誤

3、List處理

      Python是動態語言,所以list中包含的元素並不要求都必須是同一種數據類型,我們完全可以在list中包含各種類型數據

      倒序訪問:可以用 -1 這個索引來表示最後一個元素,類似,-2表示倒數第二個……

      添加元素:有兩種方法,第一,使用append(),總是把新的元素添加到 list 的尾部。第二,使用insert(xx, xx)方法,它接受兩個參數,第一個參數是索引號,第二個參數是待添加的新元素。

      刪除元素:pop()方法總是刪掉list的最後一個元素,並且它還返回這個元素。pop(index)刪除指定位置的元素。注意:如果連續多次執行pop()方法,先執行的pop()會改變list大小,後面部分元素的index會發生改變。

      修改元素:直接使用賦值語句替換即可修改。

4、tuple處理

      tuple是另一種有序的列表,中文翻譯爲“ 元組 ”。tuple 和 list 非常類似,但是,tuple一旦創建完畢,就不能修改了。創建tuple和創建list唯一不同之處是用( )替代了[ ]。獲取 tuple 元素的方式和 list 是一模一樣的,我們可以正常使用 t[0],t[-1]等索引方式訪問元素,但是不能賦值成別的元素。

      也就是空tuple,直接用 ()表示。因爲用()定義單元素的tuple與運算符的()有歧義,所以 Python 規定,單元素 tuple 要多加一個逗號“,”,這樣就避免了歧義,而多元素 tuple 加不加這個額外的“,”效果是一樣的,結尾沒有,。

>>> t = (1,)
>>> print t
(1,)

Python在打印單元素tuple時,也自動添加了一個“,”,爲了更明確地告訴你這是一個tuple。

      “可變的tuple”:tuple所謂的“不變”是說,tuple的每個元素,指向永遠不變。即指向'a',就不能改成指向'b',指向一個list,就不能改成指向其他對象,但指向的這個list本身是可變的!理解了“指向不變”後,要創建一個內容也不變的tuple怎麼做?那就必須保證tuple的每一個元素本身也不能變,可以將[]改爲()即可保證()內部每個元素不可變。比如,我們來看一個“可變”的tuple:

>>> t = ('a', 'b', ['A', 'B'])

注意到 t 有 3 個元素:'a','b'和一個list:['A', 'B']。list作爲一個整體是tuple的第3個元素。list對象可以通過 t[2] 拿到:

>>> L = t[2]

然後,我們把list的兩個元素改一改:

>>> L[0] = 'X'
>>> L[1] = 'Y'

再看看tuple的內容:

>>> print t
('a', 'b', ['X', 'Y'])
爲何可變?我們先看看定義的時候tuple包含的3個元素:

當我們把list的元素'A'和'B'修改爲'X'和'Y'後,tuple變爲:

表面上看,tuple的元素確實變了,但其實變的不是 tuple 的元素,而是list的元素。

5、if語句

      注意: Python代碼的縮進規則。具有相同縮進的代碼被視爲代碼塊,下面的3,4行 print 語句就構成一個代碼塊(但不包括第5行的print)。如果 if 語句判斷爲 True,就會執行這個代碼塊。縮進請嚴格按照Python的習慣寫法:4個空格,不要使用Tab,更不要混合Tab和空格,否則很容易造成因爲縮進引起的語法錯誤。

age = 20
if age >= 18:
    print 'your age is', age
    print 'adult'
print 'END'

如果你在Python交互環境下敲代碼,還要特別留意縮進,並且退出縮進需要多敲一行回車

>>> age = 20
>>> if age >= 18:
...     print 'your age is', age
...     print 'adult'
...
your age is 20
adult

若用 if else,則else後邊有: 。若有多個嵌套,則可以使用 if ... 多個elif ... else ... 的結構,一次寫完所有的規則:

if age >= 18:
    print 'adult'
elif age >= 6:
    print 'teenager'
elif age >= 3:
    print 'kid'
else:
    print 'baby'

elif 意思就是 else if注意: 這一系列條件判斷會從上到下依次判斷,如果某個判斷爲 True,執行完對應的代碼塊,後面的條件判斷就直接忽略,不再執行了

6、for循環

      如計算List中的平均值

L = [75, 92, 59, 68]
sum = 0.0
for score in L:
    sum += score
print sum / 4

注意:  name 這個變量是在 for 循環中定義的,意思是,依次取出list中的每一個元素,並把元素賦值給 score,然後執行for循環體(就是縮進的代碼塊)。這樣一來,遍歷一個list或tuple就非常容易了。

7、while循環

      比如要從 0 開始打印不大於 N 的整數:

N = 10
x = 0
while x < N:
    print x
    x = x + 1

while循環每次先判斷 x < N,如果爲True,則執行循環體的代碼塊,否則,退出循環。

在循環體內,x = x + 1 會讓 x 不斷增加,最終因爲 x < N 不成立而退出循環。

8、使用break退出循環

      比如利用 while True 無限循環配合 break 語句,計算 1 + 2 + 4 + 8 + 16 + ... 的前20項的和。

sum = 0
x = 1
n = 1
while True:
    sum += x
    x = 2*x
    n = n+1
    if n > 20:
        break
print sum

9、使用continue繼續循環

      比如計算0-100之間奇數的和

sum = 0
x = 0
while True:
    x = x + 1
    if x > 100:
        break
    if x % 2 == 0:
        continue
    sum += x
print sum

10、多重循環

      比如對100以內的兩位數,使用兩重循環打印出所有十位數數字比個位數數字小的數,例如,23(2 < 3)。

法一:

for x in [ 1,2,3,4,5,6,7,8,9 ]:
    for y in [ 0,1,2,3,4,5,6,7,8,9 ]:
        if x<y:
            print x*10 + y

法二:

for x in range(1,9):
    for y in range(x+1,10):
       print str(x)+str(y)

續下文《Python學習筆記——基礎語法(下)

轉載請註明出處:

http://blog.csdn.net/daijin888888/article/details/79331360




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