1. 程式人生 > >python入門語法

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 print
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 = ‘0123456789print 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 不做任何事情,一般用做佔位語句。