python學習筆記(一),python學習筆記(

來源:互聯網
上載者:User

python學習筆記(一),python學習筆記(

一. 第一個小程式:

python文法比較簡單,採用縮排的方式,如下所示:

a = 100if a >= 0:    print aelse:    print -a
使用#進行注釋,其他的每一行都是一個語句,當語句以冒號“:”結尾時,縮排的語句視為代碼塊。

按照約定俗成,一般使用Tab鍵縮排,或按四個空格。

注意:python程式是大小寫敏感的。


二. 資料類型和變數

(1) 資料類型:

a. 整數:

python可以處理任意大小的整數

可以使用十六進位表示整數:0x首碼和0-9,a-f。如0xff00,0xa5b4c3d2


b. 浮點數:

浮點數就是小數,按照科學計數法表示時,一個浮點數的小數點位置是可變的。比如:1.23x109和12.3x108是相等的

對於很大或很小的浮點數,就需要用科學計數法表示,把10用e替代,1.23x109就是1.23e9或者12.3e8


c. 字串:

python中字串用單引號 ‘ ’ 或雙引號“ ” 括起來。

如果單引號 ’ 本身也是一個字元,那就可以用雙引號“ ” 括起來,如:print “I'm ok”

如果字串內部既包含單引號 ‘ 又包含雙引號“ ,那就用逸出字元 \ 來標識,如:print "I\'m \"ok\""

右斜杠 \ 可以轉義很多字元,比如 \n 表示換行, \t 表示定位字元,\\ 表示 \ 

如果字串裡面有很多字元都需要轉義,那就需要加很多 \ ,為了簡化,python還允許用r' '表示‘ ’內部的字串預設不轉義。如:print r'\\\t\\'

>>> print '\\\t\\'\       \>>> print r'\\\t\\'\\\t\\
如果字串內部有很多換行,用\n寫在一行裡不好閱讀,為了簡化,python允許用'''  ''' 的格式表示多行內容,如:

print '''line1line2line3'''

d. 布爾值:

一個布爾值只有True、False兩種值,要麼是True,要麼是False,請注意大小寫

在Python中,可以直接用True、False表示布爾值

>>> 3 > 2True>>> 3 > 5False
布爾值可以用and、or、not運算

>>> True and TrueTrue>>> True and FalseFalse>>> False and FalseFalse>>> True or TrueTrue>>> True or FalseTrue>>> False or FalseFalse>>> not TrueFalse>>> not FalseTrue


e. 空值

空值是python裡一個特殊的值,用None表示。None不能理解為0,因為0時有意義的,而None是一個特殊的空值。


(2) 變數

變數名必須是字母、數字、和底線的組合,且不能以數字開頭。

可以把任意資料類型賦值給變數,同一個變數可以反覆賦值,而且可以是不同類型的變數,例如:

a = 123 # a是整數a = ‘ABC’ # a變為字串
這種變數本身類型不固定的語言成為動態語言,和JS很像,而Java是靜態語言,因為它在定義變數時必須指定變數類型,

如:int a = 123;


(3) 常量

所謂常量就是不能變得變數,在python中,通常常量全部大寫,這個和Java一樣
如 PI = 3.1415926,但事實上PI仍然是一個變數,Python根本沒有任何機制保證PI不會被改變。


三. 字串和編碼

1. 編碼

ASCII編碼:只有127個字母被編碼到電腦中,即大小寫英文字母、數字和一些符號,只使用一個位元組儲存。

Unicode編碼:把所有語言都統一到一套編碼裡,這樣就不會再有亂碼問題了,一般用兩個位元組儲存一個字元。但是如果所有的語言都統一成Unicode

編碼,亂碼問題就此消失了,但是,如果我們寫的文本基本上都是英文的話,用Unicode編碼會比ASCII編碼多出一倍的儲存空間,在儲存和傳輸上就

不划算了。本著節約的精神,又出現了把Unicode編碼轉為可變長編碼的UTF-8編碼


由於python原始碼是一個文字檔,所以,當源碼中包含中文的時候,在儲存源碼時,需要指定儲存為utf-8編碼。當python解析器讀取原始碼時,

為了讓它按utf-8讀取,我們通常在檔案開頭寫上這兩行:

#!/usr/bin/env python# -*- coding: utf-8 -*-
第一行注釋是為了告訴linux系統,這是一個python可執行程式。

第二行注釋是為了告訴python解譯器,按照utf-8編碼讀取原始碼,否則,你在源碼中寫的中文輸出可能會有亂碼。

2. 格式化字串:

在python中,使用%來格式化字串,%s表示用字串替換,%d表示用整數替換,%f表示浮點數。有幾個%?預留位置,後面就跟幾個變數或者值,

順序要對應好。如果只有一個%?,括弧可以省略。

>>> 'Hello, %s' % 'world''Hello, world' >>> 'Hi, %s, you have $%d.' % ('Michael', 1000000)'Hi, Michael, you have $1000000.'
有些時候,字串裡面的%是一個一般字元怎麼辦?這個時候就需要轉義,用%%來表示一個%

>>> 'growth rate: %d %%' % 7'growth rate: 7 %'

四. 使用list和tuple

(1) list

list是python中內建的一種有序集合,可以隨時添加和刪除其中的元素。

比如,列出班裡所有同學的名字,可以用一個list表示。變數classmates就是一個list

>>> classmates = ['Michael', 'Bob', 'Tracy']>>> classmates['Michael', 'Bob', 'Tracy']

a. 擷取list元素個數:len(classmates)

b. 通過索引訪問list中每個位置的元素(從0開始): classmates[0] 

如果要取最後一個元素,也可以用-1:classmates[-1],倒數第二個就是classmates[-2]

c. 往list中追加元素到末尾:classmates.append('jim')

d. 插入元素到指定位置:classmates.insert(1, 'tom')

e. 刪除list末尾的元素:classmates.pop()

f. 刪除指定位置的元素:classmates.pop(2)

g. 把某個元素替換成別的元素,可以直接賦值給對應索引位置:classmates[2] = 'jack'


list裡面可以嵌套另一個list,比如:

>>> s = ['python', 'java', ['asp', 'php'], 'scheme']>>> len(s)4
我們可以把s看成一個二維數組,如果要拿到‘php’,可以寫s[2][1]

(2) tuple

tuple和list很相似,但是tuple一旦初始化就不能修改。所以tuple中沒有添加元素或刪除元素的方法。

>>> classmates = ('Michael', 'Bob', 'Tracy')

不可變的tuple有什麼用?

因為tuple不可變,所以代碼更安全,如果可能,能用tuple代替list就盡量用tuple吧。


使用tuple需要小心一點,以防掉入它的陷阱:

** 陷阱1:只有1個元素的tuple定義時必須加一個逗號,以消除歧義,因為括弧會讓解析器以為它是數學公式中的小括弧

>>> t = (1,)>>> t(1,)
** 陷阱2:tuple不可變,但是如果tuple裡面存了一個list的話,那這個list卻是可變的。

>>> t = ('a', 'b', ['A', 'B'])>>> t[2][0] = 'X'>>> t[2][1] = 'Y'>>> t('a', 'b', ['X', 'Y'])

五. 條件判斷和迴圈

(1) 條件判斷:

根據使用者年齡列印不同的內容:

age = 3if age >= 18:    print 'adult'elif age >= 6:    print 'teenager'else:    print 'kid'
if 判斷條件可以簡寫,比如:

if x:    print 'True'
只要x是非零數值、非Null 字元串、非空list就判斷為True,否則為False


(2) 迴圈

a. for迴圈

sum = 0for x in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]:    sum = sum + xprint sum
如果求1-100的整數之和,可以使用range()函數,它可以產生一個整數序列

b. while迴圈

求100以內奇數之和:

sum = 0n = 99while n > 0:    sum = sum + n    n = n - 2print sum

六. 使用dict和set

(1) dict

和java中的map一樣,使用key - value儲存

>>> d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}>>> d['Michael']95
a. 存入一個值:d['Adam'] = 67

b. 一個key對應一個value,如果key不存在會報錯, 為了避免錯誤,有兩種方法判斷key是否存在

一是通過in判斷key是否存在:‘Tracy’ in d     # 返回True

二是通過dict提供的get方法:d.get('jim')    # 返回None

c. 刪除一個key: d.pop('Bob')


(2) set

set和java中的set也一樣,key不能重複,不儲存value

>>> s = set([1, 2, 3])>>> sset([1, 2, 3])
1. 添加元素到set中: s.add(4)

2. 從set中刪除元素:s.remove(4)

3. set可以做數學意義上的交集、並集操作

>>> s1 = set([1, 2, 3])>>> s2 = set([2, 3, 4])>>> s1 & s2set([2, 3])>>> s1 | s2set([1, 2, 3, 4])

原文請參考:廖雪峰

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.