python入門語法
python入門學習筆記
基礎學習
helloword
# !/usr/bin/python3
print "Helloword"
輸出helloword
# coding=utf-8
# !/usr/bin/python3
print "你好世界"
輸出你好世界,此處注意編碼,預設ascii碼,輸出漢字是有問題的,需要在首行加入
# -*- coding: UTF-8 -*-
#或
#coding=utf-8
保留字元
下面的列表顯示了在Python中的保留字。這些保留字不能用作常數或變數,或任何其他識別符號名稱。
所有 Python 的關鍵字只包含小寫字母。
and | exec | not |
---|---|---|
assert | finally | or |
break | for | pass |
class | from | |
continue | global | raise |
def | if | return |
del | import | try |
elif | in | while |
else | is | with |
except | lambda | yield |
縮排
學習 Python 與其他語言最大的區別就是,Python 的程式碼塊不使用大括號 {} 來控制類,函式以及其他邏輯判斷。python 最具特色的就是用縮排來寫模組。
縮排的空白數量是可變的,但是所有程式碼塊語句必須包含相同的縮排空白數量,這個必須嚴格執行。
建議在每個縮排層次使用 單個製表符 或 兩個空格 或 四個空格 , 切記不能混用
多行、單行語句
Python語句中一般以新行作為語句的結束符。
但是我們可以使用斜槓( \)將一行的語句分為多行顯示,如下所示:
total = item_one + \
item_two + \
item_three
語句中包含 [], {} 或 () 括號就不需要使用多行連線符。如下例項:
days = ['Monday', 'Tuesday', 'Wednesday',
'Thursday', 'Friday']
多個語句可以構成一行,如下語句:
import sys; x = 'runoob'; sys.stdout.write(x + '\n')
變數型別
Python 中的變數賦值不需要型別宣告。
每個變數在記憶體中建立,都包括變數的標識,名稱和資料這些資訊。
每個變數在使用前都必須賦值,變數賦值以後該變數才會被建立。
等號(=)用來給變數賦值。
等號(=)運算子左邊是一個變數名,等號(=)運算子右邊是儲存在變數中的值。例如:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
counter = 100 # 賦值整型變數
miles = 1000.0 # 浮點型
name = "John" # 字串
a = b = c = 1
d,e,f=1, 2, "abc"
print a,b,c,
print d,e,f
print counter
print miles
print name
Python 定義了一些標準型別,用於儲存各種型別的資料。
Python有五個標準的資料型別:
- Numbers(數字)
- String(字串)
- List(列表)
- Tuple(元組)
- Dictionary(字典)
數字
Python支援四種不同的數字型別:
- int(有符號整型)
- long(長整型[也可以代表八進位制和十六進位制])
- float(浮點型)
- complex(複數)
字串
字串或串(String)是由數字、字母、下劃線組成的一串字元。
一般記為 :
s=”a1a2···an”(n>=0)
它是程式語言中表示文字的資料型別。
python的字串列表有2種取值順序:
- 從左到右索引預設0開始的,最大範圍是字串長度少1
- 從右到左索引預設-1開始的,最大範圍是字串開頭
如果你要實現從字串中獲取一段子字串的話,可以使用變數 [頭下標:尾下標],就可以擷取相應的字串,其中下標是從 0 開始算起,可以是正數或負數,下標可以為空表示取到頭或尾。
比如:
str = ‘0123456789’
print str[0:3] #擷取第一位到第三位的字元
print str[:] #擷取字串的全部字元
print str[6:] #擷取第七個字元到結尾
print str[:-3] #擷取從頭開始到倒數第三個字元之前
print str[2] #擷取第三個字元
print str[-1] #擷取倒數第一個字元
print str[::-1] #創造一個與原字串順序相反的字串
print str[-3:-1] #擷取倒數第三位與倒數第一位之前的字元
print str[-3:] #擷取倒數第三位到結尾
print str[:-5:-3] #逆序擷取,具體啥意思沒搞明白?
print str * 2 # 輸出字串兩次
print str + "TEST" # 輸出連線的字串
擷取結果
012
0123456789
6789
0123456
2
9
9876543210
78
789
96
01234567890123456789
0123456789TEST
當使用以冒號分隔的字串,python返回一個新的物件,結果包含了以這對偏移標識的連續的內容,左邊的開始是包含了下邊界。
加號(+)是字串連線運算子,星號(*)是重複操作。
列表
List(列表) 是 Python 中使用最頻繁的資料型別。
列表可以完成大多數集合類的資料結構實現。它支援字元,數字,字串甚至可以包含列表(即巢狀)。
列表用 [ ] 標識,是 python 最通用的複合資料型別。
列表中值的切割也可以用到變數 [頭下標:尾下標] ,就可以擷取相應的列表,從左到右索引預設 0 開始,從右到左索引預設 -1 開始,下標可以為空表示取到頭或尾。
加號 + 是列表連線運算子,星號 * 是重複操作。
list = [ 'runoob', 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 # 列印組合的列表
輸出結果
['runoob', 786, 2.23, 'john', 70.2]
runoob
[786, 2.23]
[2.23, 'john', 70.2]
[123, 'john', 123, 'john']
['runoob', 786, 2.23, 'john', 70.2, 123, 'john']
元組
元組是另一個數據型別,類似於List(列表)。
元組用”()”標識。內部元素用逗號隔開。但是元組不能二次賦值,相當於只讀列表。
tuple = ( 'runoob', 786 , 2.23, 'john', 70.2 )
list = [ 'runoob', 786 , 2.23, 'john', 70.2 ]
tuple[2] = 1000 # 元組中是非法應用
list[2] = 1000 # 列表中是合法應用
字典
字典(dictionary)是除列表以外python之中最靈活的內建資料結構型別。列表是有序的物件集合,字典是無序的物件集合。
兩者之間的區別在於:字典當中的元素是通過鍵來存取的,而不是通過偏移存取。
字典用”{ }”標識。字典由索引(key)和它對應的值value組成。
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']
資料型別轉換
有時候,我們需要對資料內建的型別進行轉換,資料型別的轉換,你只需要將資料型別作為函式名即可。
以下幾個內建的函式可以執行資料型別之間的轉換。這些函式返回一個新的物件,表示轉換的值。
函式 | 描述 |
---|---|
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) | 將一個整數轉換為一個八進位制字串 |
運算子
算數運算子(+,-,,/,%,*,//)
以下以x=2,y=10舉例
** 冪 - 返回x的y次冪 2**10 輸出結果1024
//取整除 - 返回商的整數部分 9//2 輸出結果 4 , 9.0//2.0 輸出結果 4.0
注意:Python2.x 裡,整數除整數,只能得出整數。如果要得到小數部分,把其中一個數改成浮點數即可。
比較運算子
以下假設變數a為1,變數b為2:
運算子 | 描述 | 例項 |
---|---|---|
== | 等於-比較物件是否相等 | (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。 |
賦值運算子
賦值運算子可以和算數運算子結合使用
位運算子
a = 0011 1100
b = 0000 1101
運算子 | 描述 | 例項 |
---|---|---|
& | 按位與運算子:參與運算的兩個值,如果兩個相應位都為1,則該位的結果為1,否則為0 | (a & b) 輸出結果 12 ,二進位制解釋: 0000 1100 |
| | 按位或運算子:只要對應的二個二進位有一個為1時,結果位就為1。 | (a | b) 輸出結果 61 ,二進位制解釋: 0011 1101 |
^ | 按位異或運算子:當兩對應的二進位相異時,結果為1 ( | a ^ b) 輸出結果 49 ,二進位制解釋: 0011 0001 |
~ | 按位取反運算子:對資料的每個二進位制位取反,即把1變為0,把0變為1 。~x 類似於 -x-1 | (~a ) 輸出結果 -61 ,二進位制解釋: 1100 0011,在一個有符號二進位制數的補碼形式。 |
<< | 左移動運算子:運算數的各二進位全部左移若干位,由 << 右邊的數字指定了移動的位數,高位丟棄,低位補0。 | a << 2 輸出結果 240 ,二進位制解釋: 1111 0000 |
>> | 右移動運算子:把”>>”左邊的運算數的各二進位全部右移若干位,>> 右邊的數字指定了移動的位數 | a >> 2 輸出結果 15 ,二進位制解釋: 0000 1111 |
邏輯運算子
Python語言支援邏輯運算子,以下假設變數 a 為 1, b為 2:
運算子 | 邏輯表示式 | 描述 | 例項 |
---|---|---|---|
and | x and y | 布林”與” - 如果 x 為 False,x and y 返回 False,否則它返回 y 的計算值。 | (a and b) 返回 2。 |
or | x or y | 布林”或” - 如果 x 是非 0,它返回 x 的值,否則它返回 y 的計算值。 | (a or b) 返回 1。 |
not | not x | 布林”非” - 如果 x 為 True,返回 False 。如果 x 為 False,它返回 True。 | not(a and b) 返回 False |
成員運算子
運算子 | 描述 | 例項 |
---|---|---|
in | 如果在指定的序列中找到值返回 True,否則返回 False。 | x 在 y 序列中 , 如果 x 在 y 序列中返回 True。 |
not in | 如果在指定的序列中沒有找到值返回 True,否則返回 False。 | x 不在 y 序列中 , 如果 x 不在 y 序列中返回 True。 |
身份運算子
身份運算子用於比較兩個物件的儲存單元
運算子 | 描述 | 例項 |
---|---|---|
is | is 是判斷兩個識別符號是不是引用自一個物件 | x is y, 類似 id(x) == id(y) , 如果引用的是同一個物件則返回 True,否則返回 False |
is not | is not 是判斷兩個識別符號是不是引用自不同物件 | x is not y , 類似 id(a) != id(b)。如果引用的不是同一個物件則返回結果 True,否則返回 False。 |
運算子優先順序
運算子 | 描述 |
---|---|
** | 指數 (最高優先順序) |
~ + - | 按位翻轉, 一元加號和減號 (最後兩個的方法名為 [email protected] 和 [email protected]) |
*/ % // | 乘,除,取模和取整除 |
‘-’ ‘+’ | 加法減法 |
>><< | 右移,左移運算子 |
& | 位 ‘AND’ |
^ | | 位運算子 |
<= < > >= | 比較運算子 |
<> == != | 等於運算子 |
= %= /= //= -= += ∗= ∗∗= | 賦值運算子 |
is is not | 身份運算子 |
in not in | 成員運算子 |
not or and | 邏輯運算子 |
條件運算子
if 判斷條件:
執行語句……
else:
執行語句……
或
if ( var == 100 ) : print "變數 var 的值為100"
多條件
if 判斷條件1:
執行語句1……
elif 判斷條件2:
執行語句2……
elif 判斷條件3:
執行語句3……
else:
執行語句4……
迴圈語句
while 迴圈
執行語句可以是單個語句或語句塊。判斷條件可以是任何表示式,任何非零、或非空(null)的值均為true。
當判斷條件假false時,迴圈結束。
while 判斷條件:
執行語句……
在 python 中,while … else 在迴圈條件為 false 時執行 else 語句塊:
while count < 5:
print count, " is less than 5"
count = count + 1
else:
print count, " is not less than 5"
for迴圈
Python for迴圈可以遍歷任何序列的專案,如一個列表或者一個字串。
for iterating_var in sequence:
statements(s)
另外一種執行迴圈的遍歷方式是通過索引
fruits = ['banana', 'apple', 'mango']
for index in range(len(fruits)):
print '當前水果 :', fruits[index]
print "Good bye!"
以上例項我們使用了內建函式 len() 和 range(),函式 len() 返回列表的長度,即元素的個數。 range返回一個序列的數。
for … else 表示這樣的意思,for 中的語句和普通的沒有區別,else 中的語句會在迴圈正常執行完(即 for 不是通過 break 跳出而中斷的)的情況下執行,while … else 也是一樣。
跳出迴圈
- break…
- continue…
- pass pass是空語句,是為了保持程式結構的完整性。pass 不做任何事情,一般用做佔位語句。