日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

中国大学moocpython笔记_中国大学MOOC_高级语言程序设计(Python)笔记

發布時間:2024/7/23 python 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 中国大学moocpython笔记_中国大学MOOC_高级语言程序设计(Python)笔记 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、程序設計基礎

1、Python歷史

2、Python特點

Python的偽代碼(形式語言)更接近于自然語言(自然語言)

膠水語言

3、Python的應用:Google、Youtube等

4、IDE

1)Python是解釋性語言(“同聲傳譯”),支持有兩種方法使用解釋器:交互式模式(interactive

mode)和腳本模式(script mode)。

(1)交互模式:退出exit()

(2)腳本模式:

三種代碼格式:源代碼py 字節代碼pyc 優化代碼pyo

代碼注釋行用#符號開始(用法同C++的//)

注釋塊:兩個三雙引號(""")內的代碼

2)Spyder集成編程環境

5、基本輸入輸出語句

①屏幕行輸出函數:

print

(,,...),Python2不需要括號。輸出占一行。

print后面參數以逗號結尾,則輸出變量值后不換行

print后面無參數,則輸出一空行。

②鍵盤輸入函數:

Python2和3中input(['']),接收鍵盤輸入,并返回表達式;

Python2中raw_input

(['']),返回值是鍵盤輸入的字符串(若用為數字則需強制類型轉換);

input()等價于eval_r(raw_input())。

Python可以一邊輸入一邊賦值。如

num1=int(raw_input())

二、常量變量

1、和C語言相似的轉義字符

\n換行newline?\'單引號

2、變量名是大小寫敏感的,變量名的命名原則也符合一般的標示符規則;變量在使用前必須已經定義(先定義再使用)

Python的變量賦值(變量綁定對象),實際上是將值指向址,同一個值指向同一個址,而址可以映射不同的變量名。這是與其他語言區別的地方

三、數據類型

1、數據類型函數:type()

整數(integer):十進制21 八進制025

十六進制0x15

浮點數(float):1.65?2.?.21?2.1E2

布爾數(boolean):布爾值(True False),注意大小寫

復數(complex):1+2i

字符串(string):使用單引號、雙引號或三引號括起來。三引號(''')括起來時,保留了字符串中的全部信息,包括回車。

2、Python并不需要使用變量前先要類型聲明,但在使用前還是需要先初始化賦值

3、類型轉換

和C一樣,計算中也有自動類型轉換:bool→int→float→complex

Python也支持強制類型轉換: (),如int

('32'),int(3.9)等(類型轉化的類型名不用加小括號,這與C不同)

四、運算符(按運算符優先級排列;除特別聲明多為左結合性)

1、算術運算符:

**(乘方,即指數運算,右結合性,如2**2**3==256,而不是64)

*

/(除,除不盡結果用double型輸出)

%取余?#(3.0以上版本,除,結果向下取整floor division)

+ -

加減乘除甚至可以用于字符串運算(級聯),例如:'very'+'good'、'repeap'*3等

2、關系運算符

①>大于 =大于等于 <=小于等于

==等于 !=(或<>)不等于

②Python與C不一樣的是,它可以這樣寫一個關系表達式1 < a

< 2

3、邏輯運算符

①not邏輯否 and邏輯與 or邏輯或

②邏輯運算的結果是邏輯常量True、False,但在表達式中所有非0數都被運算為True。有些與C不同的:

123 and 456 --> 456

123 or 456 -->123

4、賦值運算符(右結合性)

①=?*=?/=?+= -=?%=?//=

注意Python不支持C語言的自增自減

②Python支持這樣的賦值寫法:

a,b=1,2

a,b,c=eval_r(raw_input("輸入三個數"))?#eval用于轉換字符為表達式

五、表達式

Python表達式和語句不同,表達式具有一個值,語句沒有。

a+1是表達式

a=1是語句

六、控制結構流程圖

一)順序

二)分支

1、if :

elif :

else:

(和C語言不同的是)if、elif、else后面的表達式不用小括號括起來,表達式后面的語句組也不需要用大括號{}括起來(用強制縮進表示程序塊),這意味著Python是以一行表示一個語句的(一行上語句過長,可用_續行);若if體中暫沒有語句,可用pass占位;語句體只有一句,則可以喝if、elif或else合并為一行

if、elif、else按序檢查,若滿足其中一個條件,就執行,之后的就跳出if體。

2、條件賦值

=a,if else b

條件成立時,變量值為a,否則為b

三)循環

循環,一般由循環初始值、循環條件、循環動作、更新循環條件等組成

1、while循環和for循環(和C不同)

①while :

else:

②for in

range([,][,]):

else:

for用于已知次數的循環

2、for和while的轉換

for和while還是有一些區別的,for是遍歷數組值,while則是邏輯值

錯在哪里?

右邊的while循環,i的終值被多加了1個步長

3、循環控制(和C相同)

break跳出當前循環

continue跳出當次循環

七、函數

一)內置函數——模塊

import

math這樣的語句用于導入模塊(類似C中的頭文件、庫文件)

●模塊中有哪些對象方法屬性,可用dir函數,dir

()

●模塊的使用,類似于對象的屬性、方法的調用(即“點記法”),如math.pi、math.sin()、math.log10()

●此外,還可以用from import

*,來導入模塊中所有的對象,在使用時就可以直接使用,不需加和點

import math.tan [as

tg]則引入math中的tan,[并重命名為tg]

二)自定義函數

def ( )

返回值return 。

函數可以有1個或更多個形參,也可以無形參(但括號不能省);形參的作用域為local,可以用global來聲明全局變量。

與C不同的一些地方:

①函數在使用前必須已經定義,但在使用前無需像有些高級語言那樣聲明

②參數指定

關鍵字賦值:在調用時指出,這樣引用時就不受形參位置的影響

函數體內定義另一個函數,并調用。例如定義了一個函數f(big,small),調用時可以這樣引用f(small=1,big=3)

缺省參數:

三)遞歸

一個函數使用時可以調用另一個函數,同樣一個函數也可以調用它自己,這就是“遞歸”。

生活中的遞歸如老和尚講故事、德羅斯特效應、兩面相對的鏡子等;數學上可以用遞歸編程的有階乘、斐波那契數列、漢諾塔等。

一個遞歸函數一般由遞歸條件(“遞”)和遞歸出口(“歸”)構成;遞歸編程的口訣“掐頭去尾留中間”

八、算法

九、數據結構

I、字符串String

一)字符串函數

長度:len()

拼接: +

重復: *n

成員運算符(是否包含,返回True、False): in

遍歷: for c in :

二)字符數組的概念和使用

1、

[]

方括號[ ]就是索引運算符

索引號從0開始(整數第一個字符),負索引號從-1開始,即從字符串倒數第一個

2、切片:使用冒號可以引用索引號前后之間的字符串

[start:finish],start:子序列開始位置的索引值?finish:子序列結束位置的下一個字符的索引值

[start:finish:countBy]?間隔切片,countBy缺省為1

my_str='hello world'

my_str[0:11:2]

-->'hlowrd'

countBy為-1時可獲得逆字符串

my_str='world'

my_str[::-1]

-->'dlrow'?#my_str==my_str[::-1]用于判斷單詞是否回文

3、不能用字符串索引來改變字符串的值

my_str='hello world'

my_str[1]='l'?#錯誤

但可以使用切片、拼接等方式,如

my_str=my_str[:1]+'a'+str[2:]

三)字符串方法

替換:replace(old,new)

my_str='hello'

my_str.replace('e','a')

-->'hallo'

注意replace方法并沒有改變字符串的值,只是輸出一個替換的字符串,原字符串還是'hello'

可以用dir(str)查看字符串的更多屬性方法

四)字符串比較

可以對兩個字符串關系運算,比較ASCII順序

五)字符串格式化與正則表達式

II、文件File

一)文件打開和關閉

f=open('')

f.close

二)遍歷文件行

f=open('names.txt')

for line in f:

f.close

III、列表List

一)=[,,...]?,列表有點像數組,但列表中的元素可以是不同類型的。

和字符串一樣,可以通過下標、索引、切片等來引用列表元素,用法也相似,同樣支持長度、拼接、重復、成員運算等。但和字符串不同的,列表及其元素是可以改變的。

二)列表內建方法

.append?#在列表末尾追加一個元素,相當于列表做加法(+)

.expend([])?#在列表末尾追加一個列表

.insert(,)

.pop()?#從后刪除一個元素

.remove()?#刪除指定元素值

.sort()?#元素排序

.reverse(()?#元素逆序

.swap(,,)?#交換元素

三)遍歷算平均

for num in :

s+=num

avg=s/len()

四)列表內建函數

sum()?#求數值列表的和

max

min

五)查找和排序

1、線性查找

.index()?#線性查找元素第一次在列表中出現的位置,若找到返回該值的索引號,反之返回出錯信息

線性查找的時間復雜度為O(n)

.find()?#類似index,但不同的是找不到子字串時返回-1

2、二分查找

二分查找要先排序

二分查找的時間復雜度為O(log2n)

3、選擇排序

即每次遍歷將最小值剪切到前面(或將最小值與初始最前面元素交換)

選擇排序時間復雜度為O(n2)

4、冒泡排序

每一次遍歷都將小值排前,大值排后,循環一次以后,最大的元素被“沉底”;

這樣的循環遍歷直到遍歷時找不到小值在后的元素(即lst(i)>lst(i+1)始終不成立。

冒泡排序的時間復雜度也是O(n2)?,但實際運行時冒泡法往往比選擇排序時間少,因為冒泡排序法通常執行的比較操作更少

5、使用內建的排序函數和方法

sorted()?和?.sort()?#返回一個拍好序(默認升序)的列表(源列表不變)。它使用了快速排序算法(quicksort),其時間復雜度O(nlogn)

內建排序后面省略了兩個參數(key=,reverse=),reverse的缺省值即False

六)嵌套列表(二維列表)

列表 lst = [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]

這是一個三行四列的嵌套列表

若訪問第三行、第二列lst [2][1]

len(lst)的結果是3(“行數”),不是12(總元素個數)

那么如何知道列表的列數呢?len(lst[0])、len(lst[1])、len(lst[2])均可

七)列表推導

lst=[x**2 for x in range(1,10)]

IV、元組Tuple

相當于不可變的列表,用小括號來建立元祖

可以使用索引、切片、len、print、index等方法;不可以使用append、extend、del等

V、字典Dict

1、用大括號來建立字典,字典元素由不可重復的鍵和值構成;鍵必須是不可變的且不重復(如整型、浮點型、元祖等不可變類型),值可以是任意類型(如列表等也可以)

my_dict{'Tom':78,'Jim':89,'Mary':80}

2、字典元素存儲時并不按輸入先后順序排列,也不按字母順序排列,所以字典不支持排序。因此,引用字典時應使用鍵名引用:?my_dict['Jerry']=99

3、字典也支持長度函數len、成員運算符in(判斷一個“鍵”是否在字典中,它的時間復雜度為O(1),相比較字符串和列表的O(n),速度更快)等,此外字典還支持以下方法

.items()?#獲取全部的鍵-值對

.keys()?#獲取全部的鍵

.values() #獲取全部的值

.clear()?#清空字典

VI、集合Set

1、無序不重復元素(鍵)值。相當于沒有值只有鍵的字典(所以也可以用{

}建立集合,集合的元素類似于字典的鍵,其類型應是不可變不重復的,如整型、浮點型、元祖等);和字典一樣,集合也沒有順序,不支持排序。

2、集合的創建,使用set函數

x=set()

集合的添加add方法和刪除remove方法

x.add('body')

x.remove('body')

3、集合的運算符

&?交集

|?并集

-?差集

== 等于

!= 不等于

in 成員

for key

in set 枚舉

VII、類和對象

十、GUI簡介

GUI的第三方API庫:TKinter、wxPython、PyQt、PyGtk等

from Tkinter import

*?#導入GUI庫

def changeRelief( )

root=Tk( )?#建立控件

label1=Label(root,text="Hello")

button1=Button(root,text="OK",command=changeRelief)?#command=changeRelief事件處理綁定

label.pack( )

button1.pack( )

root.mainloop( )

十二、數據庫

數據庫管理系統(DataBase Management System,DBMS)

商業系統:Oracle、Microsoft SQL Server、IBM DB2等

開源(Open Source)系統:MySQL、PostgreSQL、SQLite等

其中,SQLite3版本的基本用法:

1、安裝:將zip解壓即可

2、創建或打開數據庫

sqlite3

test.db

3、創建一個表creat

sqlite > creat table

(name,num,phone)

4、插入一行(記錄)

sqlite > insert into

values('Zhang',1,'13150201234');

5、查詢

select from

select from where

id=

select from where id

like

6、刪除delete

delete from

7、修改update

update set Attribue=NEW

8、在Python中使用SQLite3

import sqlite3

con=sqlite3.connect('test.db')

cur=con.cursor() #創建一個游標

cur.execute('select * from student')

rows=cur.fetchall()

for row in rows:

print row

十三、Web編程基礎

Django

1、安裝

python setup.py install

>djang-admin.py startproject mysite

2、運行

>python manage.py runserver

3、創建應用

python manage.py startapp addr_book

編輯addr_book

4、模板

HTML語言

模板不是必須的,可以將HTML代碼寫在視圖中,但是這樣不便于改動和分工(可以由專門的美工負責設計網頁)。

5、模型

數據庫

HTML表單

模型不是必須的,可以將數據庫操作代碼寫在視圖中,但是這樣不便于切換到新的數據庫,需要針對新的數據庫修改代碼。有了模型,切換數據庫僅需要修改

settings.py 即可。

【相關網站】

總結

以上是生活随笔為你收集整理的中国大学moocpython笔记_中国大学MOOC_高级语言程序设计(Python)笔记的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。