變量指派
Python中的變量不需要聲明,變量的指派操作既是變量聲明和定義的過程。
每個變量在記憶體中建立,都包括變量的辨別,名稱和資料這些資訊。
每個變量在使用前都必須指派,變量指派以後該變量才會被建立。
等号(=)用來給變量指派。
等号(=)運算符左邊是一個變量名,等号(=)運算符右邊是存儲在變量中的值。例如:
#!/usr/bin/python
counter = 100 # An integer assignment
miles = 1000.0 # A floating point
name = "John" # A string
print counter
print miles
print name
以上執行個體中,100,1000.0和"John"分别指派給counter,miles,name變量。
執行以上程式會輸出如下結果:
100
1000.0
John
多個變量指派
Python允許你同時為多個變量指派。例如:
a = b = c = 1
以上執行個體,建立一個整型對象,值為1,三個變量被配置設定到相同的記憶體空間上。
您也可以為多個對象指定多個變量。例如:
a, b, c = 1, 2, "john"
以上執行個體,兩個整型對象1和2的配置設定給變量a和b,字元串對象"john"配置設定給變量c。
标準資料類型
在記憶體中存儲的資料可以有多種類型。
例如,person.s年齡作為一個數值存儲和他或她的位址是字母數字字元存儲。
Python有一些标準類型用于定義操作上,他們和為他們每個人的存儲方法可能。
Python有五個标準的資料類型:
- Numbers(數字)
- String(字元串)
- List(清單)
- Tuple(元組)
- Dictionary(字典)
Python數字
數字資料類型用于存儲數值。
他們是不可改變的資料類型,這意味着改變數字資料類型會配置設定一個新的對象。
當你指定一個值時,Number對象就會被建立:
var1 = 1
var2 = 10
您也可以使用del語句删除一些對象引用。
del語句的文法是:
del var1[,var2[,var3[....,varN]]]]
您可以通過使用del語句删除單個或多個對象。例如:
del var
del var_a, var_b
Python支援四種不同的數值類型:
- int(有符号整型)
- long(長整型[也可以代表八進制和十六進制])
- float(浮點型)
- complex(複數)
執行個體
一些數值類型的執行個體:
int | long | float | complex |
---|---|---|---|
10 | 51924361L | 0.0 | 3.14j |
100 | -0x19323L | 15.20 | 45.j |
-786 | 0122L | -21.9 | 9.322e-36j |
080 | 0xDEFABCECBDAECBFBAEl | 32.3+e18 | .876j |
-0490 | 535633629843L | -90. | -.6545+0J |
-0x260 | -052318172735L | -32.54e100 | 3e+26J |
0x69 | -4721885298529L | 70.2-E12 | 4.53e-7j |
- 長整型也可以使用小寫"L",但是還是建議您使用大寫"L",避免與數字"1"混淆。Python使用"L"來顯示長整型。
- Python還支援複數,複數由實數部分和虛數部分構成,可以用a + bj,或者complex(a,b)表示, 複數的實部a和虛部b都是浮點型
Python字元串
字元串或串(String)是由數字、字母、下劃線組成的一串字元。
一般記為 :
s="a1a2···an"(n>=0)
它是程式設計語言中表示文本的資料類型。
python的字串清單有2種取值順序:
- 從左到右索引預設0開始的,最大範圍是字元串長度少1
- 從右到左索引預設-1開始的,最大範圍是字元串開頭
如果你的實要取得一段子串的話,可以用到變量[頭下标:尾下标],就可以截取相應的字元串,其中下标是從0開始算起,可以是正數或負數,下标可以為空表示取到頭或尾。
比如:
s = 'ilovepython'
s[1:5]的結果是love。
當使用以冒号分隔的字元串,python傳回一個新的對象,結果包含了以這對偏移辨別的連續的内容,左邊的開始是包含了下邊界。
上面的結果包含了s[1]的值l,而取到的最大範圍不包括上邊界,就是s[5]的值p。
加号(+)是字元串連接配接運算符,星号(*)是重複操作。如下執行個體:
#!/usr/bin/python
str = 'Hello World!'
print str # 輸出完整字元串
print str[0] # 輸出字元串中的第一個字元
print str[2:5] # 輸出字元串中第三個至第五個之間的字元串
print str[2:] # 輸出從第三個字元開始的字元串
print str * 2 # 輸出字元串兩次
print str + "TEST" # 輸出連接配接的字元串
以上執行個體輸出結果:
Hello World!
H
llo
llo World!
Hello World!Hello World!
Hello World!TEST
Python清單
List(清單) 是 Python 中使用最頻繁的資料類型。
清單可以完成大多數集合類的資料結構實作。它支援字元,數字,字元串甚至可以包含清單(所謂嵌套)。
清單用[ ]辨別。是python最通用的複合資料類型。看這段代碼就明白。
清單中的值得分割也可以用到變量[頭下标:尾下标],就可以截取相應的清單,從左到右索引預設0開始的,從右到左索引預設-1開始,下标可以為空表示取到頭或尾。
加号(+)是清單連接配接運算符,星号(*)是重複操作。如下執行個體:
#!/usr/bin/python
list = [ 'abcd', 786 , 2.23, 'john', 70.2 ]
tinylist = [123, 'john']
print list # 輸出完整清單
print list[0] # 輸出清單的第一個元素
print list[1:3] # 輸出第二個至第三個的元素
print list[2:] # 輸出從第三個開始至清單末尾的所有元素
print tinylist * 2 # 輸出清單兩次
print list + tinylist # 列印組合的清單
以上執行個體輸出結果:
['abcd', 786, 2.23, 'john', 70.200000000000003]
abcd
[786, 2.23]
[2.23, 'john', 70.200000000000003]
[123, 'john', 123, 'john']
['abcd', 786, 2.23, 'john', 70.200000000000003, 123, 'john']
Python元組
元組是另一個資料類型,類似于List(清單)。
元組用"()"辨別。内部元素用逗号隔開。但是元素不能二次指派,相當于隻讀清單。
#!/usr/bin/python
tuple = ( 'abcd', 786 , 2.23, 'john', 70.2 )
tinytuple = (123, 'john')
print list # 輸出完整清單
print list[0] # 輸出清單的第一個元素
print list[1:3] # 輸出第二個至第三個的元素
print list[2:] # 輸出從第三個開始至清單末尾的所有元素
print tinylist * 2 # 輸出清單兩次
print list + tinylist # 列印組合的清單
以上執行個體輸出結果:
('abcd', 786, 2.23, 'john', 70.200000000000003)
abcd
(786, 2.23)
(2.23, 'john', 70.200000000000003)
(123, 'john', 123, 'john')
('abcd', 786, 2.23, 'john', 70.200000000000003, 123, 'john')
以下是元組無效的,因為元組是不允許更新的。而清單是允許更新的:
#!/usr/bin/python
tuple = ( 'abcd', 786 , 2.23, 'john', 70.2 )
list = [ 'abcd', 786 , 2.23, 'john', 70.2 ]
tuple[2] = 1000 # 元組中是非法應用
list[2] = 1000 # 清單中是合法應用
Python元字典
字典(dictionary)是除清單意外python之中最靈活的内置資料結構類型。清單是有序的對象結合,字典是無序的對象集合。
兩者之間的差別在于:字典當中的元素是通過鍵來存取的,而不是通過偏移存取。
字典用"{ }"辨別。字典由索引(key)和它對應的值value組成。
#!/usr/bin/python
dict = {}
dict['one'] = "This is one"
dict[2] = "This is two"
tinydict = {'name': 'john','code':6734, 'dept': 'sales'}
print dict['one'] # 輸出鍵為'one' 的值
print dict[2] # 輸出鍵為 2 的值
print tinydict # 輸出完整的字典
print tinydict.keys() # 輸出所有鍵
print tinydict.values() # 輸出所有值
輸出結果為:
This is one This is two {'dept': 'sales', 'code': 6734, 'name': 'john'} ['dept', 'code', 'name'] ['sales', 6734, 'john']
Python資料類型轉換
有時候,我們需要對資料内置的類型進行轉換,資料類型的轉換,你隻需要将資料類型作為函數名即可。
以下幾個内置的函數可以執行資料類型之間的轉換。這些函數傳回一個新的對象,表示轉換的值。
函數 | 描述 |
---|---|
int(x [,base]) | 将x轉換為一個整數 |
long(x [,base] ) | 将x轉換為一個長整數 |
float(x) | 将x轉換到一個浮點數 |
complex(real [,imag]) | 建立一個複數 |
str(x) | 将對象 x 轉換為字元串 |
repr(x) | 将對象 x 轉換為表達式字元串 |
eval(str) | 用來計算在字元串中的有效Python表達式,并傳回一個對象 |
tuple(s) | 将序列 s 轉換為一個元組 |
list(s) | 将序列 s 轉換為一個清單 |
set(s) | 轉換為可變集合 |
dict(d) | 建立一個字典。d 必須是一個序列 (key,value)元組。 |
frozenset(s) | 轉換為不可變集合 |
chr(x) | 将一個整數轉換為一個字元 |
unichr(x) | 将一個整數轉換為Unicode字元 |
ord(x) | 将一個字元轉換為它的整數值 |
hex(x) | 将一個整數轉換為一個十六進制字元串 |
oct(x) | 将一個整數轉換為一個八進制字元串 |
什麼是運算符?
本章節主要說明Python的運算符。舉個簡單的例子 4 +5 = 9 。 例子中,4和5被稱為操作數,"+"号為運算符。
Python算術運算符
以下假設變量a為10,變量b為20:
運算符 | 描述 | 執行個體 |
---|---|---|
+ | 加 - 兩個對象相加 | a + b 輸出結果 30 |
- | 減 - 得到負數或是一個數減去另一個數 | a - b 輸出結果 -10 |
* | 乘 - 兩個數相乘或是傳回一個被重複若幹次的字元串 | a * b 輸出結果 200 |
/ | 除 - x除以y | b / a 輸出結果 2 |
% | 取模 - 傳回除法的餘數 | b % a 輸出結果 0 |
** | 幂 - 傳回x的y次幂 | a**b 為10的20次方, 輸出結果 100000000000000000000 |
// | 取整除 - 傳回商的整數部分 | 9//2 輸出結果 4 , 9.0//2.0 輸出結果 4.0 |
Python比較運算符
以下假設變量a為10,變量b為20:
運算符 | 描述 | 執行個體 |
---|---|---|
== | 等于 - 比較對象是否相等 | (a == b) 傳回 False。 |
!= | 不等于 - 比較兩個對象是否不相等 | (a != b) 傳回 true. |
<> | 不等于 - 比較兩個對象是否不相等 | (a <> b) 傳回 true。這個運算符類似 != 。 |
> | 大于 - 傳回x是否大于y | (a > b) 傳回 False。 |
< | 小于 - 傳回x是否小于y。所有比較運算符傳回1表示真,傳回0表示假。這分别與特殊的變量True和False等價。注意,這些變量名的大寫。 | (a < b) 傳回 true。 |
>= | 大于等于 - 傳回x是否大于等于y。 | (a >= b) 傳回 False。 |
<= | 小于等于 - 傳回x是否小于等于y。 | (a <= b) 傳回 true。 |
Python指派運算符
以下假設變量a為10,變量b為20:
運算符 | 描述 | 執行個體 |
---|---|---|
= | 簡單的指派運算符 | c = a + b 将 a + b 的運算結果指派為 c |
+= | 加法指派運算符 | c += a 等效于 c = c + a |
-= | 減法指派運算符 | c -= a 等效于 c = c - a |
*= | 乘法指派運算符 | c *= a 等效于 c = c * a |
/= | 除法指派運算符 | c /= a 等效于 c = c / a |
%= | 取模指派運算符 | c %= a 等效于 c = c % a |
**= | 幂指派運算符 | c **= a 等效于 c = c ** a |
//= | 取整除指派運算符 | c //= a 等效于 c = c // a |
Python位運算符
按位運算符是把數字看作二進制來進行計算的。Python中的按位運算法則如下:
運算符 | 描述 | 執行個體 |
---|---|---|
& | 按位與運算符 | (a & b) 輸出結果 12 ,二進制解釋: 0000 1100 |
| | 按位或運算符 | (a | b) 輸出結果 61 ,二進制解釋: 0011 1101 |
^ | 按位異或運算符 | (a ^ b) 輸出結果 49 ,二進制解釋: 0011 0001 |
~ | 按位取反運算符 | (~a ) 輸出結果 -61 ,二進制解釋: 1100 0011, 在一個有符号二進制數的補碼形式。 |
<< | 左移動運算符 | a << 2 輸出結果 240 ,二進制解釋: 1111 0000 |
>> | 右移動運算符 | a >> 2 輸出結果 15 ,二進制解釋: 0000 1111 |
Python邏輯運算符
Python語言支援邏輯運算符,以下假設變量a為10,變量b為20:
運算符 | 描述 | 執行個體 |
---|---|---|
and | 布爾"與" - 如果x為False,x and y傳回False,否則它傳回y的計算值。 | (a and b) 傳回 true。 |
or | 布爾"或" - 如果x是True,它傳回True,否則它傳回y的計算值。 | (a or b) 傳回 true。 |
not | 布爾"非" - 如果x為True,傳回False。如果x為False,它傳回True。 | not(a and b) 傳回 false。 |
以下執行個體示範了Python所有邏輯運算符的操作:
if ( a and b ):
print "Line 1 - a and b are true"
else:
print "Line 1 - Either a is not true or b is not true"
Python成員運算符
除了以上的一些運算符之外,Python還支援成員運算符,測試執行個體中包含了一系列的成員,包括字元串,清單或元組。
運算符 | 描述 | 執行個體 |
---|---|---|
in | 如果在指定的序列中找到值傳回True,否則傳回False。 | x 在 y序列中 , 如果x在y序列中傳回True。 |
not in | 如果在指定的序列中沒有找到值傳回True,否則傳回False。 | x 不在 y序列中 , 如果x不在y序列中傳回True。 |
以下執行個體示範了Python所有成員運算符的操作:
a = 10
list = [1, 2, 3, 4, 5 ];
if ( a in list ):
print "Line 1 - a is available in the given list"
else:
print "Line 1 - a is not available in the given list"
Python身份運算符
身份運算符用于比較兩個對象的存儲單元
運算符 | 描述 | 執行個體 |
---|---|---|
is | is是判斷兩個辨別符是不是引用自一個對象 | x is y, 如果 id(x) 等于 id(y) , is 傳回結果 1 |
is not | is not是判斷兩個辨別符是不是引用自不同對象 | x is not y, 如果 id(x) 不等于 id(y). is not 傳回結果 1 |
以下執行個體示範了Python所有身份運算符的操作:
#!/usr/bin/python
a = 20
b = 20
if ( a is b ):
print "Line 1 - a and b have same identity"
else:
print "Line 1 - a and b do not have same identity"
if ( id(a) == id(b) ):
print "Line 2 - a and b have same identity"
else:
print "Line 2 - a and b do not have same identity"
b = 30
if ( a is b ):
print "Line 3 - a and b have same identity"
else:
print "Line 3 - a and b do not have same identity"
if ( a is not b ):
print "Line 4 - a and b do not have same identity"
else:
print "Line 4 - a and b have same identity"
以上執行個體輸出結果:
Line 1 - a and b have same identity
Line 2 - a and b have same identity
Line 3 - a and b do not have same identity
Line 4 - a and b do not have same identity
Python運算符優先級
以下表格列出了從最高到最低優先級的所有運算符:
運算符 | 描述 |
---|---|
** | 指數 (最高優先級) |
~ + - | 按位翻轉, 一進制加号和減号 (最後兩個的方法名為 +@ 和 -@) |
* / % // | 乘,除,取模和取整除 |
+ - | 加法減法 |
>> << | 右移,左移運算符 |
& | 位 'AND' |
^ | | 位運算符 |
<= < > >= | 比較運算符 |
<> == != | 等于運算符 |
= %= /= //= -= += *= **= | 指派運算符 |
is is not | 身份運算符 |
in not in | 成員運算符 |
not or and | 邏輯運算符 |
Python 條件語句
Python程式語言指定任何非0和非空(null)值為true,0 或者 null為false。
Python 程式設計中 if 語句用于控制程式的執行,基本形式為:
if 判斷條件1:
執行語句1……
elif 判斷條件2:
執行語句2……
elif 判斷條件3:
執行語句3……
else:
執行語句4……
# coding=utf8
# 例3:if語句多個條件
num = 9
if num >= 0 and num <= 10: # 判斷值是否在0~10之間
print 'hello'
>>> hello # 輸出結果
num = 10
if num < 0 or num > 10: # 判斷值是否在小于0或大于10
print 'hello'
else:
print 'undefine'
>>> undefine # 輸出結果
num = 8
# 判斷值是否在0~5或者10~15之間
if (num >= 0 and num <= 5) or (num >= 10 and num <= 15):
print 'hello'
else:
print 'undefine'
>>> undefine # 輸出結果
當if有多個條件時可使用括号來區分判斷的先後順序,括号中的判斷優先執行,此外 and 和 or 的優先級低于>(大于)、<(小于)等判斷符号,即大于和小于在沒有括号的情況下會比與或要優先判斷。
簡單的語句組
你也可以在同一行的位置上使用if條件判斷語句,如下執行個體:
if ( var == 100 ) : print "Value of expression is 100"
以上代碼執行輸出結果如下:
Value of expression is 100
Python 循環語句
Python提供了for循環和while循環(在Python中沒有do..while循環):
循環類型 | 描述 |
---|---|
while 循環 | 在給定的判斷條件為 true 時執行循環體,否則退出循環體。 |
for 循環 | 重複執行語句 |
嵌套循環 | 你可以在while循環體中嵌套for循環 |
循環控制語句
循環控制語句可以更改語句執行的順序。Python支援以下循環控制語句:
控制語句 | 描述 |
---|---|
break 語句 | 在語句塊執行過程中終止循環,并且跳出整個循環 |
continue 語句 | 在語句塊執行過程中終止目前循環,跳出該次循環,執行下一次循環。 |
pass 語句 | pass是空語句,是為了保持程式結構的完整性。 |
Python While循環語句
Python 程式設計中 while 語句用于循環執行程式,即在某條件下,循環執行某段程式,以處理需要重複處理的相同任務。其基本形式為:
while 判斷條件:
執行語句……
執行個體:
#!/usr/bin/python
count = 0
while (count < 9):
print 'The count is:', count
count = count + 1
print "Good bye!"
以上代碼執行輸出結果:
The count is: 0
The count is: 1
The count is: 2
The count is: 3
The count is: 4
The count is: 5
The count is: 6
The count is: 7
The count is: 8
Good bye!
while 語句時還有另外兩個重要的指令 continue,break 來跳過循環,continue 用于跳過該次循環,break 則是用于退出循環,此外"判斷條件"還可以是個常值。
#!/usr/bin/python
var = 1
while var == 1 : # 該條件永遠為true,循環将無限執行下去
num = raw_input("Enter a number :")
print "You entered: ", num
print "Good bye!"
注意:以上的無限循環你可以使用 CTRL+C 來中斷循環。
循環使用 else 語句
在 python 中,for … else 表示這樣的意思,for 中的語句和普通的沒有差別,else 中的語句會在循環正常執行完(即 for 不是通過 break 跳出而中斷的)的情況下執行,while … else 也是一樣。
#!/usr/bin/python
count = 0
while count < 5:
print count, " is less than 5"
count = count + 1
else:
print count, " is not less than 5"
以上執行個體輸出結果為:
0 is less than 5
1 is less than 5
2 is less than 5
3 is less than 5
4 is less than 5
5 is not less than 5
Python for 循環語句
Python for循環可以周遊任何序列的項目,如一個清單或者一個字元串。
文法:
for循環的文法格式如下:
for iterating_var in sequence:
statements(s)
流程圖:

執行個體:
#!/usr/bin/python
for letter in 'Python': # First Example
print 'Current Letter :', letter
fruits = ['banana', 'apple', 'mango']
for fruit in fruits: # Second Example
print 'Current fruit :', fruit
print "Good bye!"
以上執行個體輸出結果:
Current Letter : P
Current Letter : y
Current Letter : t
Current Letter : h
Current Letter : o
Current Letter : n
Current fruit : banana
Current fruit : apple
Current fruit : mango
Good bye!
通過序列索引疊代
另外一種執行循環的周遊方式是通過索引,如下執行個體:
#!/usr/bin/python
fruits = ['banana', 'apple', 'mango']
for index in range(len(fruits)):
print 'Current fruit :', fruits[index]
print "Good bye!"
以上執行個體輸出結果:
Current fruit : banana
Current fruit : apple
Current fruit : mango
Good bye!
以上執行個體我們使用了内置函數 len() 和 range(),函數 len() 傳回清單的長度,即元素的個數。 range傳回一個序列的數。
循環使用 else 語句
在 python 中,for … else 表示這樣的意思,for 中的語句和普通的沒有差別,else 中的語句會在循環正常執行完(即 for 不是通過 break 跳出而中斷的)的情況下執行,while … else 也是一樣。
如下執行個體:
#!/usr/bin/python
for num in range(10,20): #to iterate between 10 to 20
for i in range(2,num): #to iterate on the factors of the number
if num%i == 0: #to determine the first factor
j=num/i #to calculate the second factor
print '%d equals %d * %d' % (num,i,j)
break #to move to the next number, the #first FOR
else: # else part of the loop
print num, 'is a prime number'
以上執行個體輸出結果:
10 equals 2 * 5
11 is a prime number
12 equals 2 * 6
13 is a prime number
14 equals 2 * 7
15 equals 3 * 5
16 equals 2 * 8
17 is a prime number
18 equals 2 * 9
19 is a prime number
Python pass 語句
Python pass是空語句,是為了保持程式結構的完整性。
Python 語言 pass 語句文法格式如下:
pass
執行個體:
#!/usr/bin/python
for letter in 'Python':
if letter == 'h':
pass
print 'This is pass block'
print 'Current Letter :', letter
print "Good bye!"
以上執行個體執行結果:
Current Letter : P
Current Letter : y
Current Letter : t
This is pass block
Current Letter : h
Current Letter : o
Current Letter : n
Good bye!