轉自菜鳥教學:https://www.runoob.com/pythonhtml
1.1 簡單執行命令print("Hello,Python!)"
python
1.2 腳本文件添加可執行權限git
$chmod +x test.py #腳本文件添加可執行權限 $ ./test.py
1.3 標識符:
_foo表明不能直接訪問的類屬性,需經過類提供的接口進行訪問,不能用from xxx import *而導入;
以雙下劃線開頭的__foo表明類的私有成員;以雙下劃線開頭結尾的__foo__表明Python裏特殊方法專用的標識,如__init__()表明類的構造函數。編程
1.4 同一行顯示多條語句,用分號;隔開,如:api
>>> print ('hello');print('Python');
1.5 多行語句顯示
Python語句中通常以新行做爲語句的結束符。
可是咱們可使用斜槓( )將一行的語句分爲多行顯示,以下所示:數據結構
total = item_one + \ item_two + \ item_three
語句中包含 [], {} 或 () 括號就不須要使用多行鏈接符。以下實例:dom
days = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
1.6 Python引號
Python 可使用引號( ' )、雙引號( " )、三引號( ''' 或 """ ) 來表示字符串,引號的開始與結束必須的相同類型的。
其中三引號能夠由多行組成,編寫多行文本的快捷語法,經常使用於文檔字符串,在文件的特定地點,被當作註釋。編程語言
word = 'word' sentence = "這是一個句子。" paragraph = """這是一個段落。 包含了多個語句"""
1.7 Python空行
函數之間或類的方法之間用空行分隔,標識一段新的代碼開始。
類和函數入口之間也用一行空行分隔,以突出函數入口的開始。
空行不會報錯,可是程序代碼的一部分。函數
1.8縮進報錯提示:測試
IndentationError: unindent does not match any outer indentation level
錯誤代表,你使用的縮進方式不一致,有的是 tab 鍵縮進,有的是空格縮進,改成一致便可。
若是是 IndentationError: unexpected indent
錯誤, 則 python 編譯器是在告訴你"Hi,老兄,你的文件裏格式不對了,多是tab和空格沒對齊的問題",全部 python 對格式要求很是嚴格。
所以,在 Python 的代碼塊中必須使用相同數目的行首縮進空格數
。
建議你在每一個縮進層次使用 單個製表符
或 兩個空格
或 四個空格
, 切記不能混用
變量存儲在內存中的值。這就意味着在建立變量時會在內存中開闢一個空間。
基於變量的數據類型,解釋器會分配指定內存,並決定什麼數據能夠被存儲在內存中。
所以,變量能夠指定不一樣的數據類型,這些變量能夠存儲整數,小數或字符。
2.1變量賦值
Python 中的變量賦值不須要類型聲明
。每一個變量在內存中建立,都包括變量的標識,名稱和數據這些信息
。每一個變量在使用前都必須賦值,變量賦值之後該變量纔會被建立
。
等號(=)用來給變量賦值。
等號(=)運算符左邊是一個變量名,等號(=)運算符右邊是存儲在變量中的值。例如:
counter = 100 # 賦值整型變量 miles = 1000.0 # 浮點型 name = "John" # 字符串 print(counter) print(miles) print(name)
2.2 多個變量賦值
Python容許你同時爲多個變量賦值。例如:
a = b = c = 1
以上實例,建立一個整型對象,值爲1,三個變量被分配到相同的內存空間上。
您也能夠爲多個對象指定多個變量。例如:
a,b,c=1,2,"john"
以上實例,兩個整型對象 1 和 2 分別分配給變量 a 和 b,字符串對象 "john" 分配給變量 c。
2.3 標準數據類型
在內存中存儲的數據能夠有多種類型。
例如,一我的的年齡能夠用數字來存儲,他的名字能夠用字符來存儲。
Python 定義了一些標準類型,用於存儲各類類型的數據。
Python有五個標準的數據類型:
2.3.1 Python數字
數字數據類型用於存儲數值。
他們是不可改變的數據類型
,這意味着改變數字數據類型會分配一個新的對象
。
當你指定一個值時,Number對象就會被建立:
var1 = 1
var2 = 10
您也可使用del語句刪除一些對象的引用。
del語句的語法是:
del var1[,var2[,var3[....,varN]]]]
您能夠經過使用del語句刪除單個或多個對象的引用。例如:
del var del var_a, var_b
數學函數
1)隨機數函數
choice(seq)
從序列的元素中隨機挑選一個元素,好比random.choice(range(10)),從0到9中隨機挑選一個整數。seq -- 能夠是一個列表,元組或字符串
。
print("",random.choice(range(10,20))) print("",random.choice([1,2,3,4,5,6,7,8,9])) print("",random.choice('GOOD!')) print("",random.choice(['WL','YL','LY','QD','MY','LV','JX','SY','Teacher'])) randrange ([start,] stop [,step])
從指定範圍內,按指定基數遞增的集合中獲取一個隨機數,基數缺省值爲1
random()
隨機生成下一個實數,它在[0,1)範圍內。
import random print ("", random.randrange(1, 100, 2)) # 從 1-100 中選取一個奇數 print (" ", random.randrange(100))# 從 0-99 選取一個隨機數
▲▲▲不會seed([x])
改變隨機數生成器的種子seed。若是你不瞭解其原理,你沒必要特別去設定seed,Python會幫你選擇seed。
import random random.seed() print ("使用默認種子生成隨機數:", random.random()) random.seed(10) print ("使用整數種子生成隨機數:", random.random()) random.seed("hello",2) print ("使用字符串種子生成隨機數:", random.random())
結果:
使用默認種子生成隨機數: 0.9186252047469824 使用整數種子生成隨機數: 0.5714025946899135 使用字符串種子生成隨機數: 0.3537754404730722
shuffle(lst)
將序列的全部元素隨機排序。
import random list = [20, 16, 10, 5]; random.shuffle(list) print ("隨機排序列表 : ", list) random.shuffle(list) print ("隨機排序列表 : ", list)
uniform(x, y)
隨機生成下一個實數,它在[x,y]範圍內。
import random print ("uniform(5, 10) 的隨機浮點數 : ", random.uniform(0, 27)) print ("uniform(7, 14) 的隨機浮點數 : ", random.uniform(27, 28))
2)三角函數
acos(x)
返回x的反餘弦弧度值。
asin(x)
返回x的反正弦弧度值。
atan(x)
返回x的反正切弧度值。
atan2(y, x)
返回給定的 X 及 Y 座標值的反正切值。
cos(x)
返回x的弧度的餘弦值。
hypot(x, y)
返回歐幾里德範數 sqrt(xx + yy)。
sin(x)
返回的x弧度的正弦值。
tan(x)
返回x弧度的正切值。
degrees(x)
將弧度轉換爲角度,如degrees(math.pi/2) , 返回90.0
radians(x)
將角度轉換爲弧度
數學常量:pi,e
2.3.1.1 Python支持四種不一樣的數字類型:
長整型也可使用小寫 l,可是仍是建議您使用大寫 L,避免與數字 1 混淆。Python使用 L 來顯示長整型。
Python 還支持複數,複數由實數部分和虛數部分構成,能夠用 a + bj,或者 complex(a,b) 表示, 複數的實部 a 和虛部 b 都是浮點型。
2.3.2 Python字符串
字符串或串(String)是由數字、字母、下劃線組成的一串字符。
通常記爲 :
s="a1a2···an"(n>=0)
它是編程語言中表示文本的數據類型。
python的字串列表有2種取值順序:
從左到右索引默認0開始的,最大範圍是字符串長度少1
從右到左索引默認-1開始的,最大範圍是字符串開頭
若是你要實現從字符串中獲取一段子字符串的話,可使用 [頭下標:尾下標] 來截取相應的字符串,其中下標是從 0 開始算起,能夠是正數或負數,下標能夠爲空表示取到頭或尾。
[頭下標:尾下標] 獲取的子字符串包含頭下標的字符,但不包含尾下標的字符。
好比:
>>> s = 'abcdef' >>> s[1:5] 'bcde'
加號(+)是字符串鏈接運算符,星號(*)是重複操做。以下實例:
實例(Python 2.0+)
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 中最經常使用的數據類型。咱們可使用引號('或")來建立字符串。
建立字符串很簡單,只要爲變量分配一個值便可。例如:
var1 = 'Hello World!' var2 = "Runoob" print ("var1[0]: ", var1[0]) print ("var2[1:5]: ", var2[1:5])
字符串更新
var1 = 'Hello yelin' print('',var1[:6]+'hongsheng')
Python轉義字符
\(在行尾時) 續行符 \\反斜槓符號 \'單引號 \"雙引號 \a響鈴 \b退格(Backspace) \e轉義 \000空 \n換行 \v縱向製表符 \t橫向製表符 \r回車 \f換頁 \oyy八進制數,yy表明的字符,例如:\o12表明換行 \xyy十六進制數,yy表明的字符,例如:\x0a表明換行 \other其它的字符以普通格式輸出
Python字符串運算符
下表實例變量a值爲字符串 "Hello",b變量值爲 "Python":
+字符串鏈接 a + b 輸出結果: HelloPython *重複輸出字符串 a*2 輸出結果:HelloHello []經過索引獲取字符串中字符 a[1] 輸出結果 e [ : ]截取字符串中的一部分 a[1:4] 輸出結果 ell in 成員運算符 - 若是字符串中包含給定的字符返回 True 'H' in a 輸出結果 1 not in 成員運算符 - 若是字符串中不包含給定的字符返回 True 'M' not in a 輸出結果 1 r/R 原始字符串 - 原始字符串:全部的字符串都是直接按照字面的意思來使用,沒有轉義特殊或不能打印的字符。 原始字符串除在字符串的第一個引號前加上字母 r(能夠大小寫)之外,與普通字符串有着幾乎徹底相同的語法。 print( r'\n' ) print( R'\n' ) % 格式字符串 請看下一節內容。
Python字符串格式化
Python 支持格式化字符串的輸出 。儘管這樣可能會用到很是複雜的表達式,但最基本的用法是將一個值插入到一個有字符串格式符 %s 的字符串中。
print ("我叫 %s 今年 %d 歲!" % ('小烏蘭', 10))
Python2.6開始,新增了一種格式化字符串的函數 str.format(),它加強了字符串格式化的功能。
基本語法是經過 {} 和 : 來代替之前的 % 。
format 函數能夠接受不限個參數,位置能夠不按順序。
* 定義寬度或者小數點精度 - 用作左對齊 + 在正數前面顯示加號( + ) <sp> 在正數前面顯示空格 # 在八進制數前面顯示零('0'),在十六進制前面顯示'0x'或者'0X'(取決於用的是'x'仍是'X') 0 顯示的數字前面填充'0'而不是默認的空格 % '%%'輸出一個單一的'%' (var) 映射變量(字典參數) m.n. m是顯示的最小總寬度,n 是小數點後的位數(若是可用的話)
Unicode 字符串
在Python2中,普通字符串是以8位ASCII碼進行存儲的,而Unicode字符串則存儲爲16位unicode字符串,這樣可以表示更多的字符集。使用的語法是在字符串前面加上前綴 u。
在Python3中,全部的字符串都是Unicode字符串。
Python的字符串內建函數
1 capitalize() 將字符串的第一個字符轉換爲大寫 2 center(width, fillchar) 返回一個指定的寬度 width 居中的字符串,fillchar 爲填充的字符,默認爲空格。 3 count(str, beg= 0,end=len(string)) 返回 str 在 string 裏面出現的次數,若是 beg 或者 end 指定則返回指定範圍內 str 出現的次數 4 bytes.decode(encoding="utf-8", errors="strict") Python3 中沒有 decode 方法,但咱們可使用 bytes 對象的 decode() 方法來解碼給定的 bytes 對象,這個 bytes 對象能夠由 str.encode() 來編碼返回。 5 encode(encoding='UTF-8',errors='strict') 以 encoding 指定的編碼格式編碼字符串,若是出錯默認報一個ValueError 的異常,除非 errors 指定的是'ignore'或者'replace' 6 endswith(suffix, beg=0, end=len(string)) 檢查字符串是否以 obj 結束,若是beg 或者 end 指定則檢查指定的範圍內是否以 obj 結束,若是是,返回 True,不然返回 False. 7 expandtabs(tabsize=8) 把字符串 string 中的 tab 符號轉爲空格,tab 符號默認的空格數是 8 。 8 find(str, beg=0 end=len(string)) 檢測 str 是否包含在字符串中,若是指定範圍 beg 和 end ,則檢查是否包含在指定範圍內,若是包含返回開始的索引值,不然返回-1 9 index(str, beg=0, end=len(string)) 跟find()方法同樣,只不過若是str不在字符串中會報一個異常. 10 isalnum() 若是字符串至少有一個字符而且全部字符都是字母或數字則返 回 True,不然返回 False 11 isalpha() 若是字符串至少有一個字符而且全部字符都是字母則返回 True, 不然返回 False 12 isdigit() 若是字符串只包含數字則返回 True 不然返回 False.. 13 islower() 若是字符串中包含至少一個區分大小寫的字符,而且全部這些(區分大小寫的)字符都是小寫,則返回 True,不然返回 False 14 isnumeric() 若是字符串中只包含數字字符,則返回 True,不然返回 False 15 isspace() 若是字符串中只包含空白,則返回 True,不然返回 False. 16 istitle() 若是字符串是標題化的(見 title())則返回 True,不然返回 False 17 isupper() 若是字符串中包含至少一個區分大小寫的字符,而且全部這些(區分大小寫的)字符都是大寫,則返回 True,不然返回 False 18 join(seq) 以指定字符串做爲分隔符,將 seq 中全部的元素(的字符串表示)合併爲一個新的字符串 19 len(string) 返回字符串長度 20 ljust(width[, fillchar]) 返回一個原字符串左對齊,並使用 fillchar 填充至長度 width 的新字符串,fillchar 默認爲空格。 21 lower() 轉換字符串中全部大寫字符爲小寫. 22 lstrip() 截掉字符串左邊的空格或指定字符。 23 maketrans() 建立字符映射的轉換表,對於接受兩個參數的最簡單的調用方式,第一個參數是字符串,表示須要轉換的字符,第二個參數也是字符串表示轉換的目標。 24 max(str) 返回字符串 str 中最大的字母。 25 min(str) 返回字符串 str 中最小的字母。 26 replace(old, new [, max]) 把 將字符串中的 str1 替換成 str2,若是 max 指定,則替換不超過 max 次。 27 rfind(str, beg=0,end=len(string)) 相似於 find()函數,不過是從右邊開始查找. 28 rindex( str, beg=0, end=len(string)) 相似於 index(),不過是從右邊開始. 29 rjust(width,[, fillchar]) 返回一個原字符串右對齊,並使用fillchar(默認空格)填充至長度 width 的新字符串 30 rstrip() 刪除字符串字符串末尾的空格. 31 split(str="", num=string.count(str)) num=string.count(str)) 以 str 爲分隔符截取字符串,若是 num 有指定值,則僅截取 num 個子字符串 32 splitlines([keepends]) 按照行('\r', '\r\n', \n')分隔,返回一個包含各行做爲元素的列表,若是參數 keepends 爲 False,不包含換行符,若是爲 True,則保留換行符。 33 startswith(str, beg=0,end=len(string)) 檢查字符串是不是以 obj 開頭,是則返回 True,不然返回 False。若是beg 和 end 指定值,則在指定範圍內檢查。 34 strip([chars]) 在字符串上執行 lstrip()和 rstrip() 35 swapcase() 將字符串中大寫轉換爲小寫,小寫轉換爲大寫 36 title() 返回"標題化"的字符串,就是說全部單詞都是以大寫開始,其他字母均爲小寫(見 istitle()) 37 translate(table, deletechars="") 根據 str 給出的表(包含 256 個字符)轉換 string 的字符, 要過濾掉的字符放到 deletechars 參數中 38 upper() 轉換字符串中的小寫字母爲大寫 39 zfill (width) 返回長度爲 width 的字符串,原字符串右對齊,前面填充0 40 isdecimal() 檢查字符串是否只包含十進制字符,若是是返回 true,不然返回 false。
2.3.3 Python列表
List(列表) 是 Python 中使用最頻繁的數據類型。
列表能夠完成大多數集合類的數據結構實現。它支持字符,數字,字符串甚至能夠包含列表(即嵌套)。
列表用 [ ] 標識,是 python 最通用的複合數據類型。
**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]
2.3.4 Python 字典
字典(dictionary)是除列表之外python之中最靈活的內置數據結構類型。列表是有序的對象集合,字典是無序的對象集合。
二者之間的區別在於:字典當中的元素是經過鍵來存取的,而不是經過偏移存取。
字典用"{ }"標識。字典由索引(key)和它對應的值value組成。
dict = {} dict['one'] = "This is one" dict[2] = "This is two" tinydict = {'name':'john','code':6743,'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']
2.3.5 Python 元組
2.1內置函數set( )
set() 函數建立一個無序不重複元素集,可進行關係測試,刪除重複數據,還能夠計算交集、差集、並集等。
set 語法:
class set([iterable])
參數說明:
iterable -- 可迭代對象對象;
返回值
返回新的集合對象。
>>>x = set('runoob') >>> y = set('google') >>> x, y (set(['b', 'r', 'u', 'o', 'n']), set(['e', 'o', 'g', 'l'])) # 重複的被刪除 >>> x & y # 交集 set(['o']) >>> x | y # 並集 set(['b', 'e', 'g', 'l', 'o', 'n', 'r', 'u']) >>> x - y # 差集 set(['r', 'b', 'u', 'n'])
2.1內置函數sorted( )
sorted() 函數對全部可迭代的對象進行排序操做
。
sort 與 sorted 區別:sort 是應用在 list 上的方法
,sorted 能夠對全部可迭代的對象進行排序操做。list 的 sort 方法返回的是對已經存在的列表進行操做
,而內建函數 sorted 方法返回的是一個新的 list
,而不是在原來的基礎上進行的操做。
sorted 語法:
sorted(iterable[, cmp[, key[, reverse]]])
參數說明:
iterable -- 可迭代對象。
cmp -- 比較的函數,這個具備兩個參數,參數的值都是從可迭代對象中取出,此函數必須遵照的規則爲,大於則返回1,小於則返回-1,等於則返回0。
key -- 主要是用來進行比較的元素,只有一個參數,具體的函數的參數就是取自於可迭代對象中,指定可迭代對象中的一個元素來進行排序。
reverse -- 排序規則,reverse = True 降序 , reverse = False 升序(默認)。
返回值
返回從新排序的列表。
>>>a = [5,7,6,3,4,1,2] >>> b = sorted(a) # 保留原列表 >>> a [5, 7, 6, 3, 4, 1, 2] >>> b [1, 2, 3, 4, 5, 6, 7]
難點:
https://www.runoob.com/python...
>>> L=[('b',2),('a',1),('c',3),('d',4)] >>> sorted(L, cmp=lambda x,y:cmp(x[1],y[1])) # 利用cmp函數 [('a', 1), ('b', 2), ('c', 3), ('d', 4)] >>> sorted(L, key=lambda x:x[1]) # 利用key [('a', 1), ('b', 2), ('c', 3), ('d', 4)]
例二:
students = [('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)] print(sorted(students, key=lambda s: s[2])) print(type(students)) [('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)] <class 'list'>
5.給文件夾的名字加前綴:
import os movie_name = os.listdir('E:\中化能源科技新事業部-期待成長\MakeTag\BEBABOO') for temp in movie_name: new_name = 'WL' + temp os.rename('E:\中化能源科技新事業部-期待成長\MakeTag\BEBABOO/'+temp,'E:\中化能源科技新事業部-期待成長\MakeTag\BEBABOO/'+new_name)