本文章內容的python版本默認爲python3.x
1、註釋
註釋包括單行註釋,多行註釋,中文聲明註釋
1.1、單行註釋
註釋內容從#號到換行爲止結束
語法格式:
# 註釋內容
註釋格式:
第一種
#請輸入你的年齡
age=int(input("請輸入你的年齡"))
第二種
age=int(input("請輸入你的年齡")) #請輸入你的年齡
1.2、多行註釋
在python中沒有一個單獨的多行註釋標記,而是將註釋內容包含在一對(’’’…’’’’)或者("""…""")
語法格式:
'''
註釋內容1
註釋內容2
......
'''
或者
"""
註釋內容1
註釋內容2
......
"""
當然可以利用單行註釋實現多行註釋,如
#註釋內容1
#註釋內容2
#....
1.3、中文編碼聲明註釋
在python編寫時,如果要指定字符編碼,那麼就需要在文件開頭加上中文編碼聲明註釋,來指定我們所需要的字符編碼類型的中文編碼,可以避免輸出亂碼
語法格式:
#-*- coding:編碼-*-
或者
# coding=編碼
如
# coding=utf-8
值得注意的是,上面代碼中的-*-是爲了美觀才加上的,沒有任務特殊作用,故也可寫爲 # coding:編碼
2、代碼縮進
python中使用代碼縮進來區分代碼的層次感,這點與c等一些語言不一樣。
縮進可以使用空格鍵或者tap鍵,通常一個縮進量默認爲爲4個空格(可以修改),一個tap鍵爲4個空格,不過,建議使用空格進行縮進。
注意:python中對代碼縮進的要求非常嚴格,同一個級別的代碼塊的縮進量必須是相同的,否則將出現語法錯誤(SyntaxError)
3、代碼規範
3.1、編寫規則
pthon採用的是PEP8的編碼規範,PEP是python Enhancement Proposal的縮寫,8爲版本
使用import進行導入模塊時,注意,一次只導入一個模塊。
推薦寫法:
import os
import request
不推薦寫法:
import os , request
不要在行尾添加“;”,也不用將2條命令放在同一行,然後用“;”隔開。python中換行代表中一個語句的結束。
建議每行不超過80個字,如果超過用()連接,不推薦""
如,推薦
print("是多少級看過的力合股份客戶廣泛空間看過空間看過很快就卡。"
"夫卡的風格看看吃飯大概開發地方")
不推薦
print("是多少級看過的力合股份客戶廣泛空間看過空間看過很快就卡。\
"夫卡的風格看看吃飯大概開發地方")
特殊情況除外
1.導入模塊語句過長
2.註釋裏的URL
可以使用空行增加代碼的可讀性,如·在定義方法之間空一行等等。
3.2.命名規範
1、模塊名儘量短小,且全部小寫,可以使用下劃線,如
game_age
2、包名儘量短小,且全部小寫,不推薦使用下劃線,如
com.book
3、類名採用單詞首寫字母大即是Pascal風格。如
BorrowBook
4、內部模塊採用下劃線加Pascal風格命名,如
_BorrowBook
5、函數、類的屬性和方法的命令規則和模塊類似
6、常量命名時全部大寫,使用可以使用下劃線
注意:
使用單下劃線開頭的模塊變量或函數是受保護的,在使用import*from語句從模塊中不能導入。
使用雙下劃線開頭的實例變量或方法是類私有的。
4、基本的輸入與輸出
4.1、print()函數
print()基礎語法:
print("輸出內容")
注意print()語句輸出後會自動換行,如果要一次輸出多個內容,且不換行,可以用英文的半角逗號進行分開。如
print("a","b")
輸出結果爲a b
輸出時間
如
import datetime # 調用時間模塊datetime
d=datetime.datetime.now()
print(d) # 輸出當前日期和時間
print(d.strftime('%Y-%m-%d %H:%M:%S')) # 按格式輸出當前時間
print(d.strftime('%I:%M %p'))
print()不僅僅可以輸出內容到屏幕還可以輸出到指定文件
如
fp = open(r'F:\my.txt','a+') # 打開文件,如果沒有該文件將自動創建文件
print("hello world",file=fp) # 輸出到文件中
fp.close() # 關閉文件
4.2、input()函數
作用:input()在python中可以用來接收用戶鍵盤輸入的內容
如:
b = input("輸入字符:")
print(b+"的ASCII碼爲",ord(b))
輸出結果爲:
輸入字符:b # b爲我們輸入的字符
b的ASCII碼爲 98
例子:根據輸入的年份計算年齡
import datetime # 調入時間模塊datetime
imyear = input("請輸入你的出生年份") # 輸入四位數的出生年份
nowyear = datetime.datetime.now().year # 獲取當前的年份
age = int(nowyear) - int(imyear) # 計算年齡
print("你的年齡爲"+str(age))
注意判斷一個變量的類型可以使用type()函數
例子:查單個字符的ACSII碼器
b = 12
while b>0:
a = input("請輸入字符:")
print(a + "的ASCII碼爲", +ord(a))
5、保留字與表示符
5.1、保留字
保留字就是被賦予特定意義的一些單詞,這些單詞不能被當作變量、函數、類、模塊和其他對象的名稱來使用(否則會報invalid syntax錯誤),python中保留字是區分大小寫的,
python中的保留字,這邊全部列出
and | as | assert | break | class |
---|---|---|---|---|
continue | def | del | elif | except |
finally | for | from | False | global |
if | import | in | is | lambda |
nonlocal | or | pass | raise | return |
try | True | while | with | yield |
當然如果我們忘記了也不用緊,可以通過2行代碼查看保留字
import keyword
print(keyword.kwlist)
5.2、標識符
簡單說標識符就是一個名字,用來識別變量、函數、類、模塊和其他對象的名稱。
命名規則
1、由字母、下劃線和數字組成,並且第一個字母不能是數字。目前python中只允許使用ISO-Latin字符集中的字符A-Z和a~z.
2、不能使用Python中的保留字
例如,合法標識符
USSSS
name
name123
name_age
不合法標識符
4name # 不能以數字開頭
if # 不能以保留字當作標識符
$name # 不能使用特殊字符 空格、$、@、%等
3、區分字母大小寫
4、以下劃線開頭的標識符具有特殊意義,要避免使用類似的標識符
以單下劃線開頭的標識符表示不能直接訪問的類的屬性,也不能太過from xxx import *導入
以雙下劃線開頭的標識符表示類的私有成員
以雙下劃線開頭和結尾的標識符是python中專用的標識,如__int__()表示構造函數
5、儘量避免使用漢字作爲標識符,儘管這是被允許的。
6、變量
6.1、變量的命名規則與語法格式
變量的命名規則
1、變量名必須是一個有效的標識符
2、變量名不能使用python中的保留字
3、慎用小寫字母 l 和大寫字母O
4、應該選擇有意義的單詞作爲變量名
語法格式
變量名 = value #變量賦值
如
name = 12 # 創建變量name並賦值爲12,類型爲int
name = "John" # 創建變量name並賦值爲John,類型爲str
注意,python中允許多個變量指向同一個值,但是他們對於的內存地址是否相同呢同,我們可以是內置函數id()來查看
例如
a = 2014
b = 2014
print("a的地址爲",+id(a))
print("b的地址爲",+id(b))
輸出
a的地址爲 2316677533424
b的地址爲 2316677533424
7、基本數據類型
7.1、數字類型
1、整數
整數包括,十進制、八進制、十六進制
十進制不能以0開頭
八進制在python3.x中必須以0o或0O開頭,python2.x可以以0開頭
十六進制必須以0x或0X開頭
2、浮點數
浮點數表現形式,如2.7e2(科學計數法),1.1414
值得注意的是在使用浮點數進行計算時,可能會出現小數位數不確定的情況,如
a = 0.2
b = 0.1
c= a + b
print(c)
我們覺得輸出0.3,但是實際輸出0.30000000000000004,
所有語言都有這個問題,可以忽略對於的小數位
3、複數
在python中複數與數學中的複數在形式上完全一樣
7.2、字符串類型
在python中字符串屬於不可變序列
通常用單引號,雙引號,三引號括起來。其中三引號內的字符序列可以分佈在連續的多行中,而單引號,雙引號內的字符序列必須在一行中。
注意如果需要表示複雜的字符串時可以進行引號的嵌套
如;
print(''''___' "_"***''')
輸出
'___' "_"***
python中的字符串還支持轉義字符
常見的轉義字符如下表
\ | 續行符 |
---|---|
\n | 換行符 |
\r | 回車符 |
\0 | 空 |
\t | 水平製表,用於橫向跳到下一製表位 |
\ " | 雙引號 |
\ ’ | 單引號 |
\ | 一個反斜槓 |
\f | 換頁 |
\0dd | 八進制數,dd表示字符,如\012代表換行 |
\xhh | 十六進制,hh表示字符,如\x0a代表換行 |
注意在字符串定界符引號的前面加上R或r,將無視轉義字符的存在。
如
print(r"hello\nworld")
print("hello\nworld")
輸出
hello\nworld
hello
world
7.3、布爾類型
標識符True和False爲布爾類型
True表示1,False表示0
注意布爾類型可以進行運算但是不建議進行運算
在python中所有對象都可以進行真假測試,只有以下幾種情況爲假其他都爲真。
1、False或None
2、數值中的零,包括0、0.0、序數0
3、空序列,包括字符串,空元組、空列表、空字典
4、自定義對象的實例,對象的__bool__方法返回False或者__len__方法返回0.
7.4、數據類型轉換
python是動態類型語言(也就是弱類型語言),不需要先聲明變量類型,但在對變量進行操作時可能用到類型轉換。
常用的類型轉換函數
函數 | 作用 |
---|---|
int(x) | 將x轉爲整型 |
float(x) | 將x轉爲浮點型 |
complex(real[,imag]) | 創建一個複數 |
str(x) | 將x轉爲字符串 |
repr(x) | 將x轉爲表達式字符型 |
eval(str) | 計算在字符串中的有效的python表達式,並返回一個對象 |
chr(x) | 將整數x轉爲字符 |
ord(x) | 將一個字符返回其所對應的整數值 |
hex(x) | 將一個整數轉化爲一個16進制字符串 |
oct(x) | 將一個整數轉化爲一個8進制字符串 |
8、運算符
8.1、算術運算符
加(+)、減(-)、乘(*)、除(/)、取餘數(%)、取整除(//)、冪(**)
注意
1、在%中如果除數(第二個操作數)是負數,那麼得到的結果也是負數
2、使用/或//時,除數不能爲0,不然會出現錯誤
3、在python2.x中/符號計算的結果爲整數,而在python3.x中爲浮點數,如
3/2,在python2.x中爲1,在在python3.x中爲1.5
8.2、賦值運算符
常見的賦值運算符有=、+=、-=、*=、/=、%=、**=、//=等
在使用時,就是把=號右邊的值賦值給左邊的變量,也可以進行某些運算後再賦值給左邊的變量。
如x-=y,就是等於x=x-y,
例子如下
x = 1
y = 2
x -= y
print(x)
輸出x=-1
8.3、比較(關係運算符)
對表達式或者變量的結果進行大小、真假等比較,如果比較結果爲真返回True,否則爲False
比較運算符有:
>、 < 、==、!=、>=、<=
如果要判斷一個變量是否在一個範圍內可以使用 “ 值1<變量a<值2 ”
8.4、邏輯運算符
主要包括 and(邏輯與) or(邏輯或) not(邏輯非)
and和or 的結合方向是從左到右
not的不一樣是從右到左
8.5、位運算符
位運算符是對二進制進行計算的,所以需要把要執行的數據轉化爲二進制數,然後再進行位操作。
python中位運算符有位與(&)、位或(|)、位異或(^)、位取反(~)、位左移(<<)、位右移(>>),
位運算符名稱 | 算法 |
---|---|
位與(&) | 2個二進制數的對位都爲1時才爲1,否則爲0 ,若2個操作數精度不同,則結果的精度與精度高的操作數相同 |
位或 | 2個二進制數的對位都爲0時才爲0,否則爲1,若2個操作數精度不同,則結果的精度與精度高的操作數相同 |
位異或(^) | 2個二進制數的對位相同時才爲0,否則爲1 ,若2個操作數精度不同,則結果的精度與精度高的操作數相同 |
位取反(~) | 操作數中的1改爲0,0改爲1 |
位左移(<<) | 將一個二進制操作數左移指定的位數,左邊(高位段)溢出的位丟低,右邊(低位段)的空位用0補充,位左移運算相當於乘以2的n次冪 |
右移(>>) | 將一個二進制操作數右移指定的位數,右邊(低位段)溢出的位用丟低,而在左邊(高位段)的空位補充時,如果最高位爲0,則在左側補0,否則補1。位右移運算相當於除以2的n次冪 |
注意:
由於移位運算符運算速度很快,所有在程序中遇到表達式乘以或除以2的n次冪時可以用移位運算符來代替
8.6、運算符的優先級
python中運算符的運算規則是,優先級高的先執行,低的後執行,同一級的按從左往右進行操作。當然如果有括號,括號內的運算最先執行。在編寫程序時儘量使用括號()來限定運算次序,以免運算次序出錯
運算符的優先級(從高到低)
類型 |
---|
** |
~、+、- |
*、/、%、// |
+、- |
<<、>> |
^ |
位或 |
<、<=、>>、=!、=、==(比較運算符) |
9、流程控制語句
9.1、選擇語句
1、最簡單的if語句
語法結構如下:
if 表達式:
語句塊
注意在python中,當表達式的值爲非零或者非空的字符串時。if語句也認爲是條件成立(爲真值)
2、if…else語句
語法結構如下:
if 表達式:
語句塊1
else:
語句塊2
技巧:
if…else語句可以使用條件語句進行簡化,如
a = 1
if a > 0:
b =a
else:
b = -a
print(b)
可以簡化爲(就是使用條件表達式)
a = 1
b = a if a > 0 else -a
print(b)
3、if…elif…else語句
語法結構
if 表達式1:
語句塊1
elif 表達式2:
語句塊2
elif 表達式3:
語句塊3
...
else:
語句塊n
注意:if與elif都需要進行判斷真假,而else不需要判斷;else和elif都需要與if一起使用,不能單獨使用
4、if語句的嵌套
if選擇語句可以有多種嵌套方式,根據需要靈活運用。
如
if 表達式1:
if 表達式2:
語句塊1
else:
語句塊2
9.2、循環語句
循環體就是一組被重複執行的語句。
1、whie循環
while循環結構
while 條件表達式:
循環體
值得注意的是Python不支持do〜while語法、while(無限循環)和break組合起來替換 do ~ while
如
n = 0
while True: #無限循環...
print n
n += 1
if n == 10:
break #結束循環
2、for循環
for循環結構
for 迭代變量 in 對象:
循環體
如:
print("技術1+2+3+...+100結果爲:")
result = 0
for i in range(101):
result += i
print(result)
對range()這個函數進行簡單的說明
range(start,end,step)
start爲計數的起始值,可以省略,省略就從0開始
end爲計數的結束值,但是不包括該值,如range(5),會輸出0,1,2,3,4,不可省略
step爲計數的步長,就是2個參數之間的間隔,可以省略,省略就默認爲1
小技巧
在python3.x中,如果讓print語句輸出的內容在一行上可以使用下面這個語句
print(result,end=' 分隔符 ')
for語句不僅可以循環數值,還可以逐個遍歷字符串。
當然可以進行循環嵌套
9.3、跳轉語句和pass空語句
1.break語句
break語句通常會結合if語句使用,在某種條件下跳出循環。如果是嵌套循環,那麼break語句將跳出最內層的循環
如while語句中使用break語句
while 條件表達式1:
執行代碼
if 條件表達式2:
break
for語句中使用break語句
for 迭代變量 in 變量
if 條件表達式:
break
2.continue語句
break語句通常會結合if語句使用,在某種條件下跳出當次循環,進行下一次循環。如果是嵌套循環,那麼break語句將跳出最內層的當次循環
如while語句中使用break語句
while 條件表達式1:
執行代碼
if 條件表達式2:
continue
for語句中使用break語句
for 迭代變量 in 變量
if 條件表達式:
continue
3、pass空語句
不做任何事,一般起到佔位作用,爲得是方便以後進行處理
for 迭代變量 in 變量
if 條件表達式:
語句塊
else:
pass
10、數字運算類內置函數
函數名 | 作用 |
---|---|
abs(x) | 求絕對值,參數可以是整數,也可以是複數,複數就輸出複數的模 |
oct(x) | 將一個數字轉爲8進制字符串 |
hex(x) | 將一個數字轉爲16進制字符串 |
chr(x) | 返回整數x對應的ASCII的字符 |
ord(x) | 返回x對應的ASCII的值 |
complex([real[,image]]) | 創建一個複數 |
divmod(a,b) | 分別取商和餘數,整數和浮點數都可以 |
float(x) | 將x轉化爲浮點數,如果沒有參數返回0.0 |
int([x[,base]]) | 將x轉化爲int型,base爲進制 |
long([x[,base]]) | 將x轉化爲long型,base爲進制 |
pow(x,y[,z]) | 返回x的y次冪 |
range(strat,stop[,step]) | 產生一個序列,默認從零開始 |
round(x[,n]) | 四舍五如=入 |
sum(iterable[,start]) | 對集合求和 |
bin(x) | 將整數x轉化爲二進制字符串 |
bool([x]) | 將x轉化爲布爾類型 |