Python學習筆記—程式碼

眼淚成詩hocc發表於2019-02-16

1.Python基礎語法

轉自菜鳥教學:https://www.runoob.com/python

1.1 簡單執行命令
print("Hello,Python!)"

1.2 指令碼檔案新增可執行許可權

$chmod +x test.py    #指令碼檔案新增可執行許可權 
$ ./test.py

1.3 識別符號:
_foo代表不能直接訪問的類屬性,需通過類提供的介面進行訪問,不能用from xxx import *而匯入;
以雙下劃線開頭的__foo代表類的私有成員;以雙下劃線開頭結尾的__foo__代表Python裡特殊方法專用的標識,如__init__()代表類的建構函式。

1.4 同一行顯示多條語句,用分號;隔開,如:

>>> print (`hello`);print(`Python`);

1.5 多行語句顯示
Python語句中一般以新行作為語句的結束符。
但是我們可以使用斜槓( )將一行的語句分為多行顯示,如下所示:

total = item_one + 
        item_two + 
        item_three

語句中包含 [], {} 或 () 括號就不需要使用多行連線符。如下例項:

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.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有五個標準的資料型別:

  • Numbers(數字)
  • String(字串)
  • List(列表)
  • Tuple(元組)
  • Dictionary(字典)

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支援四種不同的數字型別:

  • int(有符號整型)
  • long(長整形[也可以代表八進位制和十六進位制])
  • float(浮點型)
  • complex(複數)

長整型也可以使用小寫 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響鈴
退格(Backspace)
e轉義
 00空

換行
v縱向製表符
	橫向製表符

回車
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`
` )
print( R`
` )
%    格式字串    請看下一節內容。

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])

按照行(`
`, `
`, 
`)分隔,返回一個包含各行作為元素的列表,如果引數 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. 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:中化能源科技新事業部-期待成長MakeTagBEBABOO`)
for temp in movie_name:
    new_name = `WL` + temp
    os.rename(`E:中化能源科技新事業部-期待成長MakeTagBEBABOO/`+temp,`E:中化能源科技新事業部-期待成長MakeTagBEBABOO/`+new_name)



相關文章