Python編程基礎(中國mooc)1

指令和程序:
每臺計算機都有自己的指令( Instruction Instruction Instruction Instruction )集合,每條指令可以讓計算機完成 一個最基本的操作。
程序( Program Program )則是由一系列指令根據特定規組合而成,在計算機上執行程序的過程實質上就是組成程序的各條指令按順序依次執行的過程。


使用Python 3.x環境創建Python腳本文件時,需要將文件編碼格式設置爲UTF-8,否則運行腳本時可能會報錯。例如,如果在使用ANSI編碼的Python腳本文件中輸入代碼並運行,則會出現如下錯誤信息提示:
SyntaxError: Non-UTF-8 code starting with '\xcd' in file
d:/pythonsamplecode/01/helloworld.py on line 4, but no encoding declared; see
http://python.org/dev/peps/pep-0263/ for details

 

Python語言對於行首縮進的方式沒有嚴格限制,既可以使用空格也可以使用製表符(Tab鍵),常用對代碼進行一個層次縮進的方式有:1個製表符,2個空格,或者4個空格。


在編寫Python程序時,主要會遇到兩類錯誤:
語法錯誤和邏輯錯誤
當執行到有語法錯誤的代碼時,Python解釋器會顯示出錯信息,開發者
可根據提示信息分析錯誤原因並解決
Ø然而,Python解釋器並無法發現邏輯錯誤,當執行有邏輯錯誤的代碼時,
解釋器不會報任何錯誤,但最後的執行結果會與預期不一致.

 

對於賦值運算,會先計算賦值運算符右邊的表達式的值,再將計算結果賦給左邊的變量。

 

a={10, 2.5, 'test', 3+4j, True, 5.3, 2.5}
則print(a)的輸出結果是:{True, 2.5, 5.3, 'test', 10, (3+4j)}

 

print(“姓名:%5s,年齡:%5d,成績:%6.2f”%(“tom”,19,86.5))的輸出結
果是:姓名:□□tom,年齡:□□□19,成績:□86.50

 

九九乘法表:
for i in range(1,10):
    for j in range(1,i+1):
        print( j,"*",i,"=",i*j,end=' ')
    print('\n')

 

整型數字包括正、 0和負整數,不帶小點無大限制
不加任何前綴爲十進制整數
整數可以使用不同的進制來表示
加前綴 0o 爲八進制整數
加前綴 0x 則爲十六進制整數

 

a,b,c =10,0o10,0x10 #a =10,0o10,0x10 #a 、b、c的值分別爲 10 、8、16

 

3.25e3 是科學記數法的表示方式,其中 e表示 10 , 因此3.25e3 實際上表示的浮點數是 3.25*10 3=3250.0


ls[0:2]=[] #將列表ls中前兩個元素替換爲空列表[],即將前兩個元素刪除

 


在對列表中的元素賦值時,既可以通過“ls[idx]=a”這種方式修改單
個元素的值,也可以通過“ls[beg:end]=b”這種方式修改一個元素或
同時修改連續多個元素的值。


在對列表中的元素賦值時,既可以通過“ls[idx]=a”這種方式修改單個元素的值,也可以通過“ls[beg:end]=b”這種方式修改一個元素或同時修改連續多個元素的值。但要注意,在通過'Is[beg:end]=b'這種方式賦值時,b是另一個列表,其功能是用b中各元素替換Is中beg至end-1這些位置上的元素,賦值前後列表元素數量允許發生變化。

 

字符串、列表和元組的元素都是按下標順序排列,可通過下標直接訪問,這樣的數據類型統稱爲序列。其中,字符串和元組中的元素不能修改,而列表中的元素可以修改。

 

與元組和列表類似 ,Set (集合 )中同樣可以包 含多個不同類型的元素,但集合中的各元素無序 、 不允許有相同元素且素必須是可哈希(hashable hashable )的對象 。
可哈希對象是指擁有__hash__(self)內置函數的對象 。列表 、集合和字典類型的數據不是可哈希對象,所以它們不能作爲集合中的元素。元組、字符串和數值都是可哈希對象。

 

與字符串、列表元組等序類型不同,集合中的元素不能使用下標方式訪問。
集合主要用於做並、交、差等集合運算,以及基於集合進行元素的快速檢索。
{} 用於創建空字典,如果要創建一個空集合,則需要使用set()。

 


1.a={'one':1,'two':2,'three':3}
2.b=dict(one=1,two=2,three=3)
3.c=dict(zip(['one','two','three'],[1,2,3]))
4.d=dict([('one',1),('two',2),('three',3)])
5.e=dict({'one':1,'two':2,'three':3})
這5條語句創建的5個字典對象的元素完全相同,使用print函數查看每一個變量,都能得到如下輸出結果:{'one':1,'two':2,'three':3}

 

zip函數的參數是多個可迭代的對象(列表等),其功能是將不同對象中對應的元素分別打包成元組,然後返回由這些元組組成的列表。
在Python 3.x中爲了減少內存,zip函數返回的是一個對象,可以通過list函數轉換爲列表,如通過"list(zip(['a','b','c'],[1,2,3]))"可得到列表“[('one',1),('two',2),('three',3)]”。


與列表等序對象不同,在訪問字典中的元素時不能通過下標方式訪問,而是通過鍵訪問。

 

佔位運算符:
運算符類似於C語言中sprintf或printf函數中使用的佔位符,在字符串中可以一些佔位符用來表示不同類型的數據,而實際的數據值在字符串之外給出。
%d----有符號整型十進制數;
%s----字符串;
%f或%F----有符號浮點型十進制數。

 

比較運算返回的結果是布爾值True或False。在執行程序時,程序中的每條語句並不一定是按順序依次執行。比較運算的主要作用是設置條件,某些語句在滿足條件時纔會執行一次(即條件語句),而某些語句在滿足條件時會重複執行多次(即循環語句)。


 

十進制轉二進制:

 

 

二進制轉十進制:

 

身份運算符:

 

成員運算符:

成員運算符用於判斷一個可迭代對象(序列、集合或字典)中是否包含某個元素。
x in y: 如果x是可迭代對象y的一個元素,則返回True;否則,返回False.
x not in y:如果x不是可迭代對象y的一個元素,則返回True;否則,返回False.

使用成員運算符判斷一個數據是否是字典中的元素,實際上就是判斷該數據是否是字典中某個元素的鍵。

x,y='one',{'one':1,'two':2,'three':3}
print(x in y) #輸出"True';
print(1 in y) #輸出"False";

 

 

運算符的結合性:

對於具有相同優先級的運算符,其運算順序由結合性來決定。結合性包括左結合和右結合兩種,左結合是按照從左向右的順序完成計算,而右結合是按照從右向左的順序完成計算。例如,表達式5-3+6中,“-”和“+”優先級相同,它們是左結合的運算符,因此會先計算5-3,再計算2+6;表達式a=b=1中,“=”是右結合的運算符,因此會先計算b=1,再計算a=b。

 


pass表示一個空操作,只起到一個佔位作用,執行時什麼都不做。
在某些必要的語句(如條件語句中的各語句序列)還沒有編寫的情況下,如果要運行程序,則可以先在這些必要語句處寫上“pass”,使得程序不存在語法錯誤、能夠正常運行。
實際上,pass與條件語句並沒有直接關係,在程序中所有需要的地方都可以使用pass作爲佔位符。比如,在後面將要學習的循環語句中,也可以使用pass作爲佔位符。
if score>=60:
    pass #什麼都不做
else:
    print('不及格')

 


遍歷:

“遍歷”這個詞在計算機程序設計中經常會用到,其表示對某一個數據中的數據元素按照某種順序進行訪問,使用每個數據元素訪問且僅訪問一次。
如對於列表alst=['a','b','c']中的3個元素,如果依次訪問了這3個元素,且每個元素僅訪問了一次,則可以說對列表完成了一次遍歷。


使用for遍歷字典中的元素時,每次獲取到的是元素的鍵,通過鍵可以再獲取到元素的值。
adict={'a':1,'b':2,'c':4}
for k in adict:
    print('%s:%d' %(k,adict[k]))


range函數返回的是一個可迭代對象,通過list函數可將該對象轉換爲列表。
list(range(4))
Out[78]: [0, 1, 2, 3]

 

 

 

#使用while循環實現1到n之間所有奇數的和
n=eval(input('請輸入n的值(整數):'))

i=1
sum=0
while i<n:
    sum+=i
    i=i+2
    print(sum)
print(sum)

 

同時訪問可迭代對象的索引和元素值:

法1:
如果希望不僅獲取到每一個元素的值,而且能獲取到每一個元素的索引,則可以通過len函數獲取可迭代對象中的元素數量,再通過range函數生成由所有元素索引組成的可迭代對象。
lst=['a','b','c']
for i in range(len(lst)):
    print(i,lst[i])
法2:
也可以利用enumerate函數返回的索引序列對象同時獲得每個元素的索引和值。
lst=['a','b','c']
for k,v in enumerate(lst,1): #設置索引從1開始(默認爲0)
    print(k,v)

 


形參是定義函數時函數名後面的一對小括號中給出的參數列表。
實參是在調用函數時函數名後面的一對小括號中給出的參數列表。
能夠將一個函數的運算結果返回到調用函數的位置,以使得可以繼續用該運算結果再去參與其它運算,此時則應使用return語句。
定義一個包,就是創建一個文件夾並在該文件夾下創建一個__init__.py文件,文件夾的名字就是包名。
猴子補丁是指在運行時動態替換已有的代碼,而不需要修改原始代碼。
按照作用域的不同,Python 中的變量可以分爲局部變量和全局變量。
在一個函數中使用 global 關鍵字,可以聲明在該函數中使用的是全局變量、而非
局部變量。
通過 nonlocal 關鍵字,可以使內層的函數直接使用外層函數中定義的變量。
遞歸 函數是指在一個函數內部通過調用自己來完成一個問題的求解。
lambda 函數也稱爲匿名函數,是一種不使用def 定義函數的形式,其作用是能
快速定義一個簡短的函數。
lambda 函數的函數體只是一個表達式,所以lambda 函數通常只能實現比較簡單
的功能。
如果內層函數使用了外層函數中定義的局部變量,並且外層函數的返回值是內層
函數的引用,就構成了閉包 。
利用裝飾器,可以在不修改已有函數的情況下向已有函數中注入代碼,使其具
備新的功能。
一個裝飾器可以爲多個函數注入代碼,一個函數也可以注入多個裝飾器的代碼。
裝飾器實際上就是一種閉包。

 


斐波那契數列(Fibonacci sequence),又稱黃金分割數列,因數學家列昂納多·斐波那契(Leonardoda Fibonacci)以兔子繁殖爲例子而引入,故又稱爲“兔子數列”。斐波那契數列前兩項的值都爲1,後面每一項的值等於其前兩項的和,即:F(1)=F(2)=1,F(n)=F(n-1)+F(n-2)(n>2)。求斐波那契數列第n 項的值。
def fib(n):
    if n==1 or n==2:
        return 1
    return fib(n-1)+fib(n-2)

 


爲什麼要使用“模塊”:

Python提供了交互式和腳本式兩種運行方式。當要執行的代碼比較長、且需要重複使用時,我們通常將代碼放在擴展名爲.py的Python腳本文件中。
當我們要編寫一個規模比較大的程序時,如果將所有代碼都放在一個腳本文件中,則不方便維護和多人協同開發。
對於可以在多個程序中重用的功能,我們也最好將其放在單獨的腳本文件中,以方便多個程序通過引用該腳本文件、共享這些功能。
此時,我們需要按照代碼功能的不同,將代碼分門別類地放在不同的腳本文件中,這些腳本文件就稱爲是模塊(Module)。

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章