Python科學(xué)計算及應(yīng)用PPT完整全套教學(xué)課件_第1頁
Python科學(xué)計算及應(yīng)用PPT完整全套教學(xué)課件_第2頁
Python科學(xué)計算及應(yīng)用PPT完整全套教學(xué)課件_第3頁
Python科學(xué)計算及應(yīng)用PPT完整全套教學(xué)課件_第4頁
Python科學(xué)計算及應(yīng)用PPT完整全套教學(xué)課件_第5頁
已閱讀5頁,還剩145頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

Python科學(xué)計算及應(yīng)用第1章Python概述第2章Python科學(xué)計算基礎(chǔ)第3章Python計算結(jié)構(gòu)第4章Python序列計算第5章Python函數(shù)計算科學(xué)計算語言前言科學(xué)計算是指利用計算機再現(xiàn)、預(yù)測和發(fā)現(xiàn)客觀世界運動規(guī)律和演化特征的全過程??茖W(xué)計算為解決科學(xué)和工程中的數(shù)學(xué)問題利用計算機進行的數(shù)值計算。科學(xué)計算的含義三大數(shù)學(xué)軟件Matlab,Mathematica,Maple

Python計算生態(tài)涵蓋了常用的數(shù)學(xué)計算、符號計算、數(shù)據(jù)分析、數(shù)據(jù)可視化、辦公自動化和人工智能等內(nèi)容。第1章Python概述第1章Python概述Python應(yīng)用場景1.2Python科學(xué)計算環(huán)境1.3Python簡介1.1Python模塊與包1.41.1.1起源1.1Python簡介時間:1989年圣誕節(jié)期間地點:阿姆斯特丹人物:Guido原因:打發(fā)圣誕節(jié)的無趣結(jié)果:開發(fā)一個新的腳本解釋程序命名:MontyPython'sFlyingCircus編程語言流行排行榜(/tiobe-index)1.1Python簡介1.1.2Python的特點Python語法簡潔免費開源高級語言可移植解釋性(和編譯性相對)面向?qū)ο螅∣OP)可擴展豐富的庫1.2Python應(yīng)用場景Web應(yīng)用開發(fā)操作系統(tǒng)管理科學(xué)計算桌面軟件開發(fā)服務(wù)器軟件開發(fā)游戲開發(fā)人工智能1.3Python科學(xué)計算環(huán)境1.3.1Python軟件安裝官網(wǎng)地址:1.3Python科學(xué)計算環(huán)境1.3Python科學(xué)計算環(huán)境1.3.2PythonIDLE用法:1.3Python科學(xué)計算環(huán)境1.3Python科學(xué)計算環(huán)境1.3.3Anaconda工具介紹官網(wǎng)地址:/Anaconda是一個包含大量科學(xué)計算庫及其依賴項的發(fā)行版本。其包含的科學(xué)計算庫包括:conda、numpy、

scipy、

ipython

、notebook等。Anaconda具有如下特點:開源、安裝過程簡單、高性能使用Python和R語言及免費的社區(qū)支持。Anaconda提供了Spyder、IPython和一個命令行,使用condalist命令可以看到所安裝的軟件包1.3Python科學(xué)計算環(huán)境1.3.4Python的運行機制Python在運行機制上卻很特殊,可以直接執(zhí)行源程序文件。Python并不是不需要編譯,而是通過虛擬機直接執(zhí)行源程序。以py為擴展名的文件是源代碼文件以pyc為擴展名的是Python的編譯文件1.3Python科學(xué)計算環(huán)境1.3.5程序注釋1.單行注釋2.多行注釋1.3Python科學(xué)計算環(huán)境1.4Python模塊與包1.4.1模塊模塊的定義方法#定義一個模塊,文件名為mod.py,模塊名mod(無后綴的文件名)defsum(a,b,c):returna+2*b+3*c模塊的導(dǎo)入方法import模塊名[as別名]這種方式簡單粗暴,導(dǎo)入模塊中所有內(nèi)容,而且使用時還要帶上模塊名稱,例如:importrandom,timerandom.shuffle()time.time()。模塊的__name__屬性#hello.pydefsayHello():print("hello")if__name__=="__main__":print('Thisprogramisrundirectly!"')if__name__=="hello":print('Thisprogramisrunasamodule!')sayHello()1.4Python模塊與包from模塊import對象名[as別名]從模塊中導(dǎo)入一個指定的方法到當前命名空間中,這種導(dǎo)入方法值得推薦,但需要記住方法的名稱,如frommathimportsin,cos,使用時不用帶模塊名稱。from模塊import*該導(dǎo)入方法把一個模塊的所有內(nèi)容全都導(dǎo)入到當前的命名空間中,不建議過多使用。1.4Python模塊與包1.4.2包Python中的包(Package)就是一個目錄,里面存放了.py文件,外加一個__init__.py文件。Python中的庫(Library)借用其他編程語言的概念,沒有特別具體的定義,強調(diào)其功能性,具有某些功能的模塊和包都可以稱作庫。1.4Python模塊與包>>>importMod.mod>>>Mod.mod.sum(1,2,3)#14

如把上節(jié)中mod模塊放在Mod目錄中,并添加空的__init__.py文件,則模塊導(dǎo)入方法與調(diào)用模塊中的函數(shù)變?yōu)椋篜ython科學(xué)計算及應(yīng)用主講:第2章Python科學(xué)計算基礎(chǔ)Python數(shù)字類型2.2運算符2.3Python標識符與編碼2.1常用標準庫2.4第2章Python科學(xué)計算基礎(chǔ)2.1.1標識符標識符由字母、下劃線和數(shù)字組成,且不能以數(shù)字開頭的符號串。2.1Python標識符與編碼合法的標識符:UserID

name

mode12

user_age思考:下面哪些是標識符?為什么?fromNo12from#12my_Booleanmy-BooleanObj22ndObjmyIntMike2jackMy_tExt_testtest!32haha(da)ttintjack_rosejack&roseG.U.I2.1.2命名規(guī)范

見名知意表示名字就用標識符name,表示學(xué)生用標識符student等駝峰命名法小駝峰命名法:myName、aDog大駝峰命名法:FirstName、LastName下劃線表示法

用下劃線“_”分隔開,例如my_name,your_Family2.1Python標識符與編碼2.1.3關(guān)鍵字通過命令keyword.kwlist查看當前系統(tǒng)中的關(guān)鍵字2.1Python標識符與編碼2.1.4編碼2.1Python標識符與編碼ASCII編碼

AmericanStandardCodeforInformationInterchange一個字節(jié)表示一個ASCII碼,共有256種符號GB2312與GBK

GB2312-1980,收錄6千多個漢字,使用非常普遍。

GBK(K表示擴展),可表示2萬多個漢字和圖形符號。Unicode標準碼

統(tǒng)一碼(UniversalMultiple-OctetCodedCharacterSet)常用2字節(jié)表示1個字符(偏僻的字符,就需要4個字節(jié)))UTF-8編碼

UTF(UnicodeTransformationFormat)

UTF-8編碼是一種可“變長”的編碼格式,即把英文變長為1個字節(jié),而漢字用3個字節(jié)表示。a='中國'#a是unicode類型b=a.encode('utf-8')#b是utf-8類型c=a.encode('gbk')#c是gbk類型print(a,b,c)#中國b'\xe4\xb8\xad\xe5\x9b\xbd'b'\xd6\xd0\xb9\xfa'print(type(a),type(b),type(c))#<class'str'><class'bytes'><class'bytes'>d=b.decode('utf-8')e=c.decode('gbk')print(d,e)#中國

中國2.1Python標識符與編碼2.2Python數(shù)字類型2.2.1數(shù)字變量

整型(int)二進制:以0b開頭,如0b11011表示10進制的27。八進制:以0o開頭,如0o33表示10進制的27。十進制:通常數(shù)學(xué)上的寫法,如100,99等。十六進制:以0x開頭,如:0x1b表示10進制的27。浮點型(float)浮點型由整數(shù)部分與小數(shù)部分組成,浮點型也可以使用科學(xué)計數(shù)法表示(如2.7e2=2.7x102=270),又如:0.0、25.2、-2.9、-33.5e-10、12e+15等都是浮點型。2.2.1數(shù)字變量布爾型(bool)布爾型其值或為真True,或為假False。(注意True,F(xiàn)alse首字母大寫),在Python3中,True用1表示,F(xiàn)alse用0表示,可以和數(shù)字型進行運算,如True+2值是3,F(xiàn)alse-2的值就是-2。字節(jié)型(bytes)bytes是Python3新增類型,以字節(jié)序列存儲數(shù)據(jù)。bytes類型常用來存儲圖片、音頻、視頻等二進制格式的文件網(wǎng)絡(luò)通信中也常用bytes類型數(shù)據(jù)。

表示字節(jié)類型對象,如b"HelloWorld",b'\xe6‘b"\x01\x02\x03"復(fù)數(shù)類型(complex)

用a+bj,或者complex(a,b)表示,如8+3.15j、4.23e-3+5j

complex(3,4)

表示復(fù)數(shù)2.2Python數(shù)字類型print(type(123))#結(jié)果為:<class'int'>print(type(1.12))#結(jié)果為:<class'float'>print(type(3j+1))#結(jié)果為:<class'complex'>print(type(b'123'))#結(jié)果為:<class'bytes'>print(type(True))#結(jié)果為:<class'bool'>數(shù)字變量如5,9,9.0,math.pi(圓周率),math.e(自然常數(shù))注意:(1)2是整型對象,2.0是浮點型對象。(2)=稱為賦值運算符,左邊只能是變量,右邊可以是常量,變量及其表達式等。2.2Python數(shù)字類型算術(shù)運算2.3運算符運算符描述示例(a=1,b=2)+相加運算a+b輸出結(jié)果3-取負或相減運算a-b輸出結(jié)果-1*相乘或重復(fù)運算a*b輸出結(jié)果2/相除運算b/a輸出結(jié)果2//整除運算9//2輸出結(jié)果4,9.0//2.0輸出結(jié)果4.0%取余運算b%a輸出結(jié)果0**冪運算a**b為1的2次方,輸出結(jié)果1賦值運算運算符描述示例=賦值num=1+2*3結(jié)果num的值為7+=加法賦值c+=a等效于c=c+a-=減法賦值c-=a等效于c=c-a*=乘法賦值c*=a等效于c=c*a/=除法賦值c/=a等效于c=c/a%=取模賦值c%=a等效于c=c%a**=冪賦值c**=a等效于c=c**a//=取整除賦值c//=a等效于c=c//a

2.3運算符關(guān)系運算運算符描述示例結(jié)果==檢查兩個操作數(shù)的值是否相等,如果是則條件變?yōu)檎妗H鏰=3,b=3則(a==b)True!=檢查兩個操作數(shù)的值是否相等,如果值不相等,則條件變?yōu)檎?。如a=1,b=3則(a!=b)True>

檢查左操作數(shù)的值是否大于右操作數(shù)的值,如果是,則條件成立。如a=7,b=3則(a>b)True<

檢查左操作數(shù)的值是否小于右操作數(shù)的值,如果是,則條件成立。如a=7,b=3則(a<b)False>=檢查左操作數(shù)的值是否大于或等于右操作數(shù)的值,如果是,則條件成立。如a=3,b=3則(a>=b)True<=檢查左操作數(shù)的值是否小于或等于右操作數(shù)的值,如果是,則條件成立。如a=3,b=3則(a<=b)True2.3運算符邏輯運算運算符表達式求值特點andxandy如果x為False,xandy返回False,否則它返回y的計算值。orxory如果x是True,它返回True,否則它返回y的計算值。notnotx如果x為True,返回False。如果x為False,它返回True。print(3or2)#結(jié)果是3print(0or100)#結(jié)果是100print(1and2)#結(jié)果是2print(3and0)#結(jié)果是0print(0and2)#結(jié)果是0print(3and2)#結(jié)果是2print(1>2and3or4and3<2ornot4>5)#結(jié)果是True2.3運算符成員與身份運算運算符描述示例in如果在指定的序列中找到值返回True,否則返回False。xiny,x在y序列中,返回True。notin如果在指定的序列中沒有找到值返回True,否則返回False。xnoty,x不在y序列中,返回True。運算符描述示例isis是判斷兩個標識符是不是引用同一個對象。xisy,如果id(x)等于id(y),返回True。isnotisnot是判斷兩個標識符是不是引用不同對象。xisnoty,如果id(x)不等于id(y),返回True。2.3運算符str1="Chinaisagreatcountry!"print("China"instr1)#Trueset1={'小米','華為','oppo','vivo'}print("apple"notinstr1)#Truelist1=['聶海勝','劉伯明','湯洪波']print('湯洪波'inlist1)#True

list2=[1,2,3]list3=[1,2,3]print("list1和list2是否同一個對象:",list2islist3)#Falseprint("list1和list2的值是否相等:",list2==list3)#True2.3運算符2.4.1math庫2.4常用標準庫

數(shù)學(xué)常數(shù)math.e#自然常數(shù)e

math.pi#圓周率pimath.inf#無窮大,負無窮大為-math.infmath.nan#非浮點數(shù),nan(notanumber)

三角函數(shù)math.sin(x),math.cos(x),math.tan(x)math.asin(x),math.acos(x),math.atan(x)

角度和弧度互換math.degrees(x):將角度

x

從弧度轉(zhuǎn)換為度數(shù),math.radians(x):將角度

x

從度數(shù)轉(zhuǎn)換為弧度。

雙曲函數(shù)

math.sinh(x),math.cosh(x),math.tanh(x)

math.asinh(x),math.acosh(x),math.atanh(x)2.4.1math庫2.4常用標準庫其他常用函數(shù)函數(shù)作用示例fabs(a)取絕對值abs(-2.123)#2.123ceil(x)對x向上取整ceil(1.2)#2floor(x)對x向下取整floor(1.2)#1log(x[,base])對數(shù),默認基底為e。可以修改baselog(100,10)#2sqrt(x)平方根sqrt(9)#3.0divmod(a,b)取商和余數(shù)divmod(5,2)#(2,1)pow(a,b)取乘方數(shù)pow(2,3)#8round(a,b)取指定位數(shù)的小數(shù),a代表浮點數(shù),b代表要保留的位數(shù)round(3.1415926,2)#3.142.4.1math庫2.4常用標準庫例2.4

編寫程序,已知x=1.8,使用math庫計算y=sinxcosx+4lnxfrommathimportsin,cos,logx=1.8y=sin(x)*cos(x)+4*log(x)#log是以e為底的對數(shù)print(y)例2.3根據(jù)圓的半徑為3,根據(jù)面積公式計算面積importmathr=3S=math.pi*r*rprint(S)2.4.2random庫2.4常用標準庫

數(shù)學(xué)常數(shù)math.e#自然常數(shù)e

math.pi#圓周率pimath.inf#無窮大,負無窮大為-math.infmath.nan#非浮點數(shù),nan(notanumber)

三角函數(shù)math.sin(x),math.cos(x),math.tan(x)math.asin(x),math.acos(x),math.atan(x)

角度和弧度互換math.degrees(x):將角度

x

從弧度轉(zhuǎn)換為度數(shù),math.radians(x):將角度

x

從度數(shù)轉(zhuǎn)換為弧度。

雙曲函數(shù)

math.sinh(x),math.cosh(x),math.tanh(x)

math.asinh(x),math.acosh(x),math.atanh(x)2.4常用標準庫

random.seed(a)

作用是設(shè)置初始化隨機數(shù)種子,a是隨機數(shù)種子,可以是整數(shù)或浮點數(shù),

random.random()

作用是生成一個[0.0,1.0)之間的隨機小數(shù)。

random.randint(a,b)

作用是生成一個[a,b]之間的隨機整數(shù),參數(shù)a表示隨機區(qū)間的開始值,參數(shù)b表示隨機區(qū)間的結(jié)束值,隨機數(shù)包含結(jié)束值。

random.randrange(start,stop[,step])

作用是生成一個[start,stop)之間以step為步長的隨機整數(shù)。2.4.2random庫2.4常用標準庫

random.choice(seq)

作用是從序列類型(例如列表)seq中隨機返回一個元素,參數(shù)seq表示序列類型。random.shuffle(seq)

作用是從序列類型seq中元素隨機排列,返回打亂后的序列,參數(shù)seq表示序列類型,調(diào)用該函數(shù)后,序列類型變量seq將被改變。

random.sample(seq,n)

作用是從序列seq中選擇n個隨機的元素2.4.2random庫2.4常用標準庫例2.6

利用random庫常用隨機函數(shù)生成一些隨機數(shù)importrandomx=random.random()#random()隨機生成一個[0,1)之間的隨機數(shù)y=random.random()print(x,y*10)m=random.randint(0,10)#randint()隨機生成一個[0:10]之間的整數(shù)print(m)print(random.randrange(100,120,2))#輸出100~120間的偶數(shù)st1=random.choice([5,6,7,8,11,22,55])

st2=random.choice('adadfaifhasui')print(st1,st2)sli=random.sample([3,4,5,6,7,66,88],2)print(sli)#sample(a,b)隨機獲取a中指定b長度的片段lst=[1,2,4,5,6,9]random.shuffle(lst)print(lst)#shuffle()將一個列表內(nèi)的元素順序打亂

2.4.2random庫2.4.3time庫2.4常用標準庫

time()函數(shù)

用于返回當前時間的時間戳(從1970年1月1日00時00分00秒到現(xiàn)在的浮點秒數(shù))。

localtime([secs])

函數(shù)

作用是格式化時間戳為本地時間(struct_time類型)。如果secs參數(shù)未傳入,就以當前時間為轉(zhuǎn)換標準。

asctime([t])與ctime()函數(shù)

用于接收一個時間元組并返回一個可讀的24個字符的字符串,如“SatSep2616:05:502020”(2020年9月26日周六16時05分50秒)。如果參數(shù)未傳入,就以當前時間元組為轉(zhuǎn)換標準.

ctime([secs])函數(shù)接收一個時間秒數(shù)并返回一個可讀的字符串,其作用相當于asctime(localtime(secs)),未給參數(shù)相當于asctime()。2.4常用標準庫importtimeprint(time.time())print(time.localtime())#等價于time.localtime(time.time())print(time.asctime())#等價于time.asctime(time.localtime(time.time()))print(time.ctime())#等價于time.asctime()sleep()函數(shù)

time.sleep(seconds)表示暫停時間seconds秒。importtimen=int(input("請輸入到計時秒數(shù):"))fortinrange(n,0,-1):print(t)

time.sleep(1)print("時間到!")2.4.3time庫2.4常用標準庫例2.7

利用time庫中的函數(shù),每隔5秒顯示一下系統(tǒng)時間,共顯示6次。importtimeforcountinrange(6):print(time.ctime())time.sleep(5)2.4.3time庫Python科學(xué)計算及應(yīng)用主講:第3章Python計算結(jié)構(gòu)分支計算3.2循環(huán)計算3.3順序計算3.1第3章Python計算結(jié)構(gòu)第3章Python計算結(jié)構(gòu)3.1.1輸入函數(shù)input()變量=input()

變量=input("提示信息")3.1順序計算注意:無論用戶輸入的是什么,都將以字符串的形式返回。如用戶輸入100,那么變量接收的不是整型數(shù)100,而是字符串100,即“100”,如:name=input("請輸入名字:")print('您剛剛輸入的名字是:',name)3.1.2求值函數(shù)eval()eval(expression,globals=None,locals=None)3.1順序計算字符串轉(zhuǎn)換成列表:

a="[1,2,3,4,5]"#a是字符串類型數(shù)據(jù)b=eval(a)#b是列表類型數(shù)據(jù)

字符串轉(zhuǎn)換成字典

a="{"name":"guo","age":25}"#a為字符串類型數(shù)據(jù)b=eval(a)#b為字典類型數(shù)據(jù)

字符串轉(zhuǎn)換為元組a="(1,2,3,4,5)"#a的數(shù)據(jù)結(jié)構(gòu)是字符串b=eval(a)#b的數(shù)據(jù)結(jié)構(gòu)是元組

eval()返回表達式的值

x=4

eval("5*x")#返回值為203.1.3輸出函數(shù)print()函數(shù)的語法如下:print(objects,sep='',end='\n',file=sys.stdout)3.1順序計算格式化輸出格式符號轉(zhuǎn)換對應(yīng)的類型%c字符%s通過str()字符串轉(zhuǎn)換來格式化%d有符號十進制整數(shù)%u無符號十進制整數(shù)%o八進制整數(shù)%x十六進制整數(shù)(小寫字母)%X十六進制整數(shù)(大寫字母)%e索引符號(小寫'e')%E索引符號(大寫“E”)%f浮點實數(shù)%g%f和%e的簡寫%G%f和%E的簡寫age=18name="小明"print("我的姓名是%s,年齡是%d"%(name,age))

轉(zhuǎn)義字符print("1234567890-------")#會在一行顯示print("1234567890\n-------")#第一行顯示’1234567890’,第二行顯示’-------’3.1順序計算轉(zhuǎn)義符號含義示例結(jié)果\newline輸入多行s=“a\b\c”print(s)abc\\反斜杠print(“\\”)\\’單引號print(‘\’’)’\”雙引號print(“\””)”\b退格,刪除前一個字符print(“ab\b”)a\f分頁,隔開一頁print(“hello\fworld”)hello↑world\n換行print(“a\nb”)ab\t橫向制表符print(“a\tb”)a

b\v縱向制表符print(“a\vb”)a

b\oxx八進制xx代表的字符print(“\043”)#\xhh十六進制hh代表的字符print(“\x23”)#3.1順序計算3.2.1if判斷語句age=10print("****if判斷開始****")ifage>18:print("已經(jīng)成年")print("****if判斷結(jié)束****")3.2分支計算例3.2

輸入學(xué)生成績,輸出等級分(ABCDE等)score=int(input("請輸入成績:"))if90<=score<=100:print('A')if80<=score<90:print('B')if70<=score<80:print('C')if60<=score<70:print('D')ifscore<60:print('E')3.2.2if-else語句age=input("請輸入年齡:")age=int(age)ifage>18:print("已經(jīng)成年")else:print("未成年")例3.3輸入一個數(shù),判斷值是否在0~5或者10-20之間,如是輸出valid,否則輸出invalidnum=int(input("請輸入一個數(shù):"))if(num>=0andnum<=5)or(num>=10andnum<=0):print('valid')else:print('invalid')3.2分支計算3.2.3elif語句3.2分支計算if條件1:事情1elif

條件2:事情2elif

條件3:事情3score=int(input("請輸入成績:"))ifscore>=90andscore<=100:print('本次考試,等級為A')elifscore>=80andscore<90:print('本次考試,等級為B')elifscore>=70andscore<80:print('本次考試,等級為C')elifscore>=60andscore<70:print('本次考試,等級為D')elifscore>=0andscore<60:print('本次考試,等級為E')值得注意的是elif必須和if一起使用,不能單獨使用,否則出錯。3.2.4if嵌套3.2分支計算ticket=0#車票,非0代表有車票,0代表沒有車票suitcase=1#手提箱,0代表檢查合格,非0代表有違禁品ifticket!=0:print("有車票,可以進站")ifsuitcase==0:print("通過安檢")print("終于可以回家了,美滋滋~~~")else:print("沒有通過安檢,手提箱中有違禁品")print("警察叔叔!請聽我解釋...")else:print("沒有車票,不能進站")print("就這張票,昨天還能進的!")例3.4

編寫程序模擬猜拳游戲。參考程序如下:importrandom#導(dǎo)入隨機函數(shù)庫player=int(input('請輸入:剪刀(0)石頭(1)布(2):'))computer=random.randint(0,2)#在[0,2]取隨機數(shù)#用來進行測試#print('player=%d,computer=%d',(player,computer))#一行太長希望多行顯示,使用\進行連接if((player==0)and(computer==2))\or((player==1)and(computer==0))\or((player==2)and(computer==1)):print('獲勝,哈哈,你太厲害了')elifplayer==computer:print('平局,要不再來一局')else:print('輸了,不要走,再來決戰(zhàn)!')3.2分支計算3.3.1for循環(huán)list(range(4))#[0,1,2,3]list(range(0,5))#[0,1,2,3,4]list(range(0,10,3))#[0,3,6,9]list(range(-4,4))#[-4,-3,-2,-1,0,1,2,3]list(range(4,-4,-1))#[4,3,2,1,0,-1,-2,-3]3.3循環(huán)計算range()函數(shù)語法格式:range(start,end,step)注意:range()函數(shù)返回的是一個可迭代對象(類型是對象),而不是列表類型,

所以輸出的時候不會顯示列表。list()函數(shù)可以把range()返回的可迭代對象轉(zhuǎn)為一個列表,返回的變量類型為列表。for循環(huán)語句語法格式是:for變量in可迭代對象:

循環(huán)需要執(zhí)行的代碼foriinrange(5):print(i,end=’’)#輸出01234foritemin'python':print(item):#輸出pythonfor_inrange(5):#下劃線可以當作臨時變量print('helloworld')#將helloworld打印5遍課程練習:1.求1~100之間所有偶數(shù)之和2.輸入一個整數(shù),求該數(shù)的階乘3.3循環(huán)計算break:

表示終止循環(huán),即不執(zhí)行本次循環(huán)中break后的語句,直接跳出循環(huán)。continue表示終止本次循環(huán),即本次循環(huán)中continue后面的代碼不執(zhí)行,進入下一次循環(huán)的入口判斷。exit()表示結(jié)束進程,即整個退出系統(tǒng)。break和continue語句foriinrange(10):ifi==5:breakprint(i)print('hellopython')foriinrange(10):ifi==5:continueprint(i)print('hellopython')3.3循環(huán)計算for…else語句功能:在循環(huán)正常結(jié)束后,執(zhí)行else的內(nèi)容。ID=[1,2,3]foriinID:print(i,end='')else:print("\n循環(huán)正常結(jié)束,請顯示我!")forninrange(2,100):forxinrange(2,n):ifn%x==0:breakelse:#注意else和for對齊print(n,end='')求100以內(nèi)素數(shù),用for…else結(jié)構(gòu)實現(xiàn)3.3循環(huán)計算pass語句功能:表示空,啥也不干,只有語法上的意義forletterin'RedMolly':ifletter=='l':passprint('當前字母:',letter)print("Goodbye!")例3.5

有1,2,3,4四個數(shù)字,求這四個數(shù)字能生成多少個互不相同且無重復(fù)數(shù)字的三位數(shù)。count=0#記錄符合要求的數(shù)字個數(shù)foriin(1,2,3,4):forjin(1,2,3,4):forkin(1,2,3,4):ifi!=jandi!=kandj!=k:#去重count+=1print(count)#輸出243.3循環(huán)計算num1=int(input('Num1:'))#輸入兩個整數(shù)num2=int(input('Num2:'))min_num=min(num1,num2)#找出兩個數(shù)中的最小值#最大公約數(shù)范圍在1~min_num之間foriinrange(1,min_num+1):ifnum1%i==0andnum2%i==0:gys=igbs=(num1*num2/gys)#最小公倍數(shù)print('%d和%d的最大公約數(shù)為:%d'%(num1,num2,gys))print('%d和%d的最小公倍數(shù)為:%d'%(num1,num2,gbs))例3.6

輸入兩個整數(shù),求兩個數(shù)的最大公約數(shù)和最小公倍數(shù)。(最小公倍數(shù)=(num1*num2)/最大公約數(shù))3.3循環(huán)計算foriinrange(3):name=input('用戶名:')passwd=input('密碼:')ifname=='user'andpasswd=='6666':print('登錄成功!')breakelse:print('登錄失敗')print('您還剩余%d次機會'%(2-i))

else:print('失敗超過3次,請稍后再試!')例3.7

用for循環(huán)實現(xiàn)用戶登錄,輸入用戶名和密碼;判斷用戶名和密碼是否正確(name='user',passwd='6666'),登錄僅有三次機會,超過3次會報錯。3.3循環(huán)計算count=0while(count<5):print('Thecountis:',count)print("Hello,world!")count=count+13.3.2while循環(huán)語法格式:whileexpression:statements3.3循環(huán)計算

foriinrange(2,100):forjinrange(2,i):if(i%j==0):breakelse:print(i,end='')3.3.3循環(huán)的嵌套求100以內(nèi)的素數(shù)3.3循環(huán)計算例3.8猜數(shù)游戲,輸入一個0~9的整數(shù),隨機產(chǎn)生一個0~9之間的數(shù)字,猜3次,顯示猜數(shù)的結(jié)果。importrandomi=0whilei<3:

num=int(input('請您輸入0到9任一個數(shù):'))rand=random.randint(0,9)ifnum==rand:print("運氣真好,您猜對了!")break

elif

num>rand:print("您猜大了!正確答案是:%d!"%rand)

elif

num<rand:print("您猜小了!正確答案是:%d!"%rand)

i+=1?3.3循環(huán)計算Python科學(xué)計算及應(yīng)用主講:第4章Python序列計算列表(list)4.2元組(tuple)4.3字符串(str)4.1第4章Python序列計算集合(set)4.5常用內(nèi)置函數(shù)4.6字典(dict)4.4數(shù)據(jù)類型轉(zhuǎn)換4.74.1字符串(str)字符串是由一對單引號,雙引號或三引號之間包含內(nèi)容組成的符號序列,是一個有序的字符集合,用于存儲和表示文本信息,是不可變對象。如果需要嵌套引號,則不允許出現(xiàn)單引號嵌套單引號,雙引號嵌套雙引號的現(xiàn)象。4.1.1字符串的輸出

print()方法用print()方法輸出,形式是print('字符串')s1='hello's2='world'print(s1,s2)#helloworldprint(s1+s2)#helloworld,+可以連接字符串print('hello'+'3')#hello3print('hello'*3)#hellohellohello

,*表示重復(fù)

print(3,'hello')#3helloname='zhangsan'age=18print("Mynameis%s,Myageis%d"%(name,age))4.1.1字符串的輸出

當用格式符號%s時,形式是print('%s'%('字符串')),變量超過2個使用元組格式,如print("%s,%s"%(字符串1,字符串2)),%s表示字符串的位置。傳入的值要與%s一一對應(yīng)。name='張三'position='python程序員'address='湖北武漢市東湖新技術(shù)開發(fā)區(qū)'print('-'*50)print("姓名:%s"%name)print("職位:%s"%position)print("公司地址:%s"%address)print('-'*50)4.1字符串(str)str.format()方法print('...{索引},...,{索引},...'.format(值1,值2))#單引號可以換成雙引號和三引號print('...{key1},...,{key2},...'.format(key1=value,key2=value))name='zhangsan'age=18print('Mynameis{},Myageis{}'.format(name,age))print('Mynameis{0},Myageis{1}'.format(name,age))print('Mynameis{name},Myageis{age}'.format(name='zhangsan',age=18))4.1字符串(str)f-strings方法name='zhangsan'age=18print(f'Mynameis{name},Myageis{age}')#{}中直接使用變量#輸出:Mynameiszhangsan,Myageis18

在Python3.6中引入

了f-strings,不僅比str.format使用簡單,而且效率也更高。f-string是字符串前面加上"f",{}內(nèi)直接使用變量、表達式等4.1.2字符串輸入username=input('請輸入用戶名:')print("用戶名為:%s"%username)password=input('請輸入密碼:')print("密碼為:%s"%password)4.1字符串(str)下標(索引)就是編號,切片(slice)是指對操作的對象截取其中一部分的操作。4.1.3下標和切片

[start:end:step],三個參數(shù)可以部分省略[:]表示提取從開頭(默認位置0)到結(jié)尾(默認位置-1)的整個字符串。[start:]表示從start提取到結(jié)尾。[:end]表示從開頭提取到end–1。[start:end]表示從start提取到end–1。[start:end:step]表示從start提取到end-1,每step個字符提取一個。左側(cè)第一個字符的位置/偏移量為0,右側(cè)最后一個字符的位置/偏移量為-1。4.1字符串(str)例4.1

已知字符串為str='0123456789′,輸出以下切片。str="0123456789"print(str[0:3])#012,截取第一位到第三位的字符。print(str[:])#0123456789,截取字符串的全部字符。print(str[6:])#6789,截取第七個字符到結(jié)尾。print(str[:-3])#0123456,截取從頭開始到倒數(shù)第三個字符之前。print(str[2])#2,截取第三個字符。print(str[-1])#9,截取倒數(shù)第一個字符。print(str[::-1])#9876543210,創(chuàng)造與原字符串順序相反的字符串。print(str[-3:-1])#78,截取倒數(shù)第三位與倒數(shù)第一位之前的字符。print(str[-3:])#789,截取倒數(shù)第三位到結(jié)尾。print(str[:-5:-3])#96,逆序截取,截取倒數(shù)第五位數(shù)與倒數(shù)第三位數(shù)之間。print(str[::2])#02468,按照步長為二,返回所有值。4.1字符串(str)4.1.4字符串常見操作

性質(zhì)判定方法功能isalnum()是否全是字母和數(shù)字,并至少有一個字符。isalpha()是否全是字母,并至少有一個字符

。isdigit()是否全是數(shù)字,并至少有一個字符。islower()字符串中字母是否全是小寫。isupper()字符串中字母是否全是小寫。isspace()是否全是空白字符,并至少有一個字符。istitle()判斷字符串是否每個單詞都有且只有第一個字母是大寫。startswith(prefix[,start[,end]])用于檢查字符串是否是以指定子字符串開頭,如果是則返回

True,否則返

False。endswith(suffix[,start[,end]])用于判斷字符串是否以指定后綴結(jié)尾,如果以指定后綴結(jié)尾返回True,否則返回False。4.1字符串(str)例4.2閱讀下面程序,寫出輸出結(jié)果。print('abc'.isspace())#Falseprint('abc'.isalpha())#Trueprint('123'.isnumeric())#Trueprint('abc123'.isalnum())#Trueprint('123abc!'.isalnum())#False4.1字符串(str)查找與替換方法功能count(sub[,start[,end]])統(tǒng)計字符串里某個字符sub出現(xiàn)的次數(shù)。find(sub[,start[,end]])檢測字符串中是否包含子字符串sub,如果包含子字符串返回開始的索引值,否則返回-1。index(sub[,start[,end]]跟find()方法一樣,如果sub不在string中會拋出ValueError異常。rfind(sub[,start[,end]])類似于find()函數(shù),從右邊開始查找。rindex(sub[,start[,end]])類似于index(),從右邊開始。replace(old,new[,count])用來替換字符串的某些子串,用new替換old。如果指定count參數(shù),最多替換count次,如果不指定,就全部替換。4.1字符串(str)例4.3閱讀下面程序,寫出輸出結(jié)果。str="hello,mynameis{name},iam{age}"print(str.find("w"))#-1print(str.format(name="zhangsan",age=18))#hello,mynameiszhangsan,iam18print(str.replace("hello","你好").format(name="lisi",age=20))#你好,mynameislisi,iam20print(str.index("n"))#9print(str.find("wwww"))#-14.1字符串(str)拆分與連接方法功能partition(sep)用來根據(jù)指定的分隔符將字符串進行分割,如果字符串包含指定的分隔符,則返回一個3元的元組,第一個為分隔符左邊的子串,第二個為分隔符本身,第三個為分隔符右邊的子串。如果sep沒有出現(xiàn)在字符串中,則返回值為(sep,",")。rpartition(sep)類似于partition()函數(shù),不過是從右邊開始查找.splitness([keepends])按照行('\r','\r\n',\n')分隔,返回一個包含各行作為元素的列表,如果參數(shù)keepends為False,不包含換行符,如果為True,則保留換行符。split(sep[,maxsplit]])通過指定分隔符對字符串進行切片,如果參數(shù)maxsplit有指定值,則僅分隔maxsplit個子字符串,返回分割后的字符串列表。rsplit(sep[,maxsplit]])同split(),不過是從右邊開始。join(seq)把字符串用設(shè)定的連接符連接起來,seq是要連接的元素序列。4.1字符串(str)a='a_b_c_x_y_z'b=a.split(sep='_')#用_把a拆分c=':'.join(b)#用:把b連接起來。d=''.join(b)#用空白把b連接起來print(b)#['a','b','c','x','y','z']print(c)#a:b:c:x:y:zprint(d)#abcxyz

變形方法功能lower()轉(zhuǎn)換字符串中所有大寫字符為小寫。upper()將字符串中的小寫字母轉(zhuǎn)為大寫字母。capitalize()將字符串的第一個字母變成大寫,其他字母變小寫。對于8位字節(jié)編碼需要根據(jù)本地環(huán)境。swapcase()用于對字符串的大小寫字母進行轉(zhuǎn)換,大寫轉(zhuǎn)小寫,小寫轉(zhuǎn)大寫。title()返回"標題化"的字符串,就是說所有單詞都是以大寫開始,其余字母均為小寫。4.1字符串(str)例4.4分別將字符串'hello,WORLD!首字母大寫,全部大寫,全部小寫和大小寫互換。s='hello,WORLD!'s1=s.capitalize()#首字母大寫s2=s.upper()#全部大寫s3=s.lower()#全部小寫s4=s.swapcase()#大小寫互換print(s1)#Hello,world!print(s2)#HELLO,WORLD!print(s3)#hello,world!print(s4)#HELLO,world!4.1字符串(str)刪減與填充方法功能strip([chars])用于移除字符串頭尾指定的字符(默認為空格),如果有多個就會刪除多個。lstrip([chars])用于截掉字符串左邊的空格或指定字符。rstrip([chars])用于截掉字符串右邊的空格或指定字符。center(width[,fillchar])返回一個原字符串,居中,并使用fillchar填充至長度width的新字符串。默認填充為空格。ljust(width[,fillchar])返回一個原字符串左對齊,并使用fillchar填充至指定長度的新字符串,默認為空格。如果指定的長度小于原字符串則返回原字符串。rjust(width[,fillchar])返回一個原字符串右對齊,并使用fillchar填充至長度width的新字符串。如果指定的長度小于字符串的長度則返回原字符串。zfill(width)返回指定長度的字符串,原字符串右對齊,前面填充0。expandtabs([tabsize])把字符串中的tab符號('\t')轉(zhuǎn)為適當數(shù)量的空格,默認情況下是轉(zhuǎn)換為8個。4.1字符串(str)例4.5閱讀下面程序,寫出輸出結(jié)果。x="1111123"print(x.replace("11","A"))#AA123print(x.replace("11",""))#123print(x.replace("","A"))#A1A1A1A1A1A2A3Ax="AA123"print(x.split("1"))#['AA','23']print(x.split("A1"))#['A','23']x="AB12"print(x.split())#空表示任意個數(shù)的空格,['A','B','12']x=["A","B"]print("".join(x))#list轉(zhuǎn)str時常用,ABprint("0".join(x))#A0Bprint("123".join(x))#A123Bprint("".join(x))#ABx="AAAAA1"print(x.count("AA"))#2x="ABC123"print(x[::-1])#逆序,'321CBA'4.1字符串(str)列表是任意對象的有序集合。通過索引訪問列表中指定元素,第一個元素索引是0,第二個索引是1,依此類推。list1=[a,b,1,2,[3,4,5,]]list2=["hello","world"]list3=["hello",100,"world",200]list=["hello","world","iGeek","Home"]print(list3[0])#helloprint(list3[1])#worldprint(list3[2:])#['iGeek','Home']4.2列表(list)namesList=['tom','jerry','jhon']fornameinnamesList:print(name)4.2列表(list)namesList=['tom','jerry','jhon']length=len(namesList)i=0whilei<length:print(namesList[i])

i+=14.2.1循環(huán)遍歷列表最常用的是使用for循環(huán)遍歷列表,其格式為:for循環(huán)內(nèi)部使用變量in列表namesList=['tom','jerry','jhon']print("----添加之前,列表中的元素----")print(namesList)print("----添加之后,列表中的元素----")namesList.append("james")print(namesList)4.2.2列表的常用操作4.2列表(list)添加元素(append,extend,insert)append()方法:通過append可以向列表添加元素,并且默認添加在列表末尾extend()方法,增加一個新列表a=['a','b','c']b=['1','2','3']a.append(b)a=['a','b','c']a.insert(1,"hello")print(a)3.3.2while循環(huán)insert()方法是在指定位置index前插入元素object,形式為insert(index,object)4.2列表(list)刪除元素(del,pop,remove)del方法根據(jù)下標進行刪除pop()方法刪除最后一個元素remove()方法根據(jù)元素的值進行刪除

Name=['華為','小米','云計算','量子計算','人工智能']print('------刪除之前------')print(Name)print('------刪除之后------')delName[2]print(Name)Name=['華為','小米','云計算','量子計算','人工智能']print('------刪除之前------')print(Name)print('------刪除之后------')Name.pop()#也可以傳入下標作為參數(shù),刪除該下標的元素print(Name)Name=['華為','小米','云計算','量子計算','人工智能']print('------刪除之前------')print(Name)print('------刪除之后------')Name.remove('云計算')print(Name)4.2列表(list)修改元素Name=['華為','小米','云計算','量子計算','人工智能']print('------修改之前------')print(Name)print('------修改之后------')Name[2]='區(qū)塊鏈'print(Name)4.2列表(list)查找元素(in,notin,index,count)name_list=['tom','jerry','alice','james']print('tom'in

name_list)#Trueprint('tom'notinname_list)#False

name_list=['tom','jerry','alice','james','jerry']print(name_list.index('jerry'))#1print(name_list.index('jerry',4,6))#4print(name_list.count('jerry'))#2排序(sort,reverse)a=[1,4,2,3,6,5,9,8,7]print('----原列表----')print(a)print('----reverse----')a.reverse()print(a)print('----sort----')a.sort()print(a)print('----sort(reverse=True)----')a.sort(reverse=True)print(a)4.2列表(list)列表的sort()方法將list按特定順序重新排列,默認為由小到大,參數(shù)reverse=True可改為倒序,由大到小。列表的reverse()方法是將list逆置列表嵌套students=['s1','s2','s3','s4','s5','s6','s7','s8','s9','s10','s11','s12']groups=[[],[],[]]forstuinstudents:index=random.randint(0,2)groups[index].append(stu)print("第一組:%s"%(str(groups[0])))print("第一組:%s"%(str(groups[1])))print("第一組:%s"%(str(groups[2])))4.2列表(list)列表嵌套表示列表中的元素又是一個列表,那么這就是列表的嵌套list1=[[1,2,3],[4,5,6],[7,8,9]]例4.6將12名同學(xué)隨機分配到3個組中4.2.3

列表推導(dǎo)式4.2列表(list)列表推導(dǎo)式就是通過循環(huán)創(chuàng)建列表,是Python生成列表的特有方式,代碼非常簡潔。print([x*xforxinrange(1,11)])#輸出一個列表[1,4,9,16,25,36,49,64,81,100]L=[]forxinrange(1,11):

L.append(x*x)print(L)

[x*xforxinrange(1,11)ifx%2==0]print([m+nformin'ABC'fornin'123'])例4.7使用列表推導(dǎo)式求解百錢買百雞問題。假設(shè)大雞5元一只,中雞3元一只,小雞1元三只,現(xiàn)有100元錢想買100只雞,有多少種買法?方法如下:4.2列表(list)L=[(i,j,k)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論