《Python程序設(shè)計(jì)基礎(chǔ)》課件-項(xiàng)目8 模塊_第1頁(yè)
《Python程序設(shè)計(jì)基礎(chǔ)》課件-項(xiàng)目8 模塊_第2頁(yè)
《Python程序設(shè)計(jì)基礎(chǔ)》課件-項(xiàng)目8 模塊_第3頁(yè)
《Python程序設(shè)計(jì)基礎(chǔ)》課件-項(xiàng)目8 模塊_第4頁(yè)
《Python程序設(shè)計(jì)基礎(chǔ)》課件-項(xiàng)目8 模塊_第5頁(yè)
已閱讀5頁(yè),還剩25頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

項(xiàng)目8模塊任務(wù)1模塊概述任務(wù)2自定義模塊任務(wù)3以主程序的形式執(zhí)行任務(wù)4Python中的包任務(wù)5引用其他模塊任務(wù)6實(shí)踐活動(dòng)任務(wù)1模塊概述任務(wù)2自定義模塊任務(wù)3以主程序的形式執(zhí)行任務(wù)4Python中的包任務(wù)5引用其他模塊任務(wù)6實(shí)踐活動(dòng)模塊就是用一堆的代碼實(shí)現(xiàn)了一些功能的代碼的集合,通常一個(gè)或者多個(gè)函數(shù)寫(xiě)在一個(gè).py文件里,而如果有些功能實(shí)現(xiàn)起來(lái)很復(fù)雜,那么就需要?jiǎng)?chuàng)建n個(gè).py文件,這n個(gè).py文件的集合就是模塊。

任務(wù)1模塊概述任務(wù)2自定義模塊任務(wù)3以主程序的形式執(zhí)行任務(wù)4Python中的包任務(wù)5引用其他模塊任務(wù)6實(shí)踐活動(dòng)使用import語(yǔ)句導(dǎo)入模塊importmoduels(模塊名字),導(dǎo)入整個(gè)moduels模塊,這種導(dǎo)入方式比較占用內(nèi)存。importmoduels(模塊名字)asXX,這里是導(dǎo)入整個(gè)moduels模塊的同時(shí)給它取一個(gè)別名XX,因?yàn)橛行┠K名字比較長(zhǎng),用一個(gè)縮寫(xiě)的別名代替在下次用到它時(shí)就比較方便。from…import語(yǔ)句導(dǎo)入模塊frommodules(模塊名字)importfunc(方法),從一個(gè)模塊modules里導(dǎo)入方法func。你要用到模塊里的什么方法就從那個(gè)模塊里導(dǎo)入哪個(gè)方法,這樣占用的內(nèi)存就比較少。也可以用別名表示:frommodules(模塊名字)importfunc(方法)asXX。frompackage.modulesimportfunc(方法),從一個(gè)包的模塊里導(dǎo)入方法這個(gè)方法跟上面那種基本一樣,占用的內(nèi)存也比較少。模塊搜索目錄當(dāng)你導(dǎo)入一個(gè)模塊,Python解析器對(duì)模塊位置的搜索順序是:①當(dāng)前目錄;②如果不在當(dāng)前目錄,則搜索在shell變量PYTHONPATH下的每個(gè)目錄;③如果都找不到,Python會(huì)查看默認(rèn)路徑。UNIX下,默認(rèn)路徑一般為/usr/local/lib/python/。模塊搜索路徑存儲(chǔ)在system模塊的sys.path變量中。變量里包含當(dāng)前目錄,PYTHONPATH是由安裝過(guò)程決定的默認(rèn)目錄。PYTHONPATH作為環(huán)境變量,PYTHONPATH由裝在一個(gè)列表里的許多目錄組成。PYTHONPATH的語(yǔ)法和shell的PATH變量一樣。在

Windows系統(tǒng),典型的PYTHONPATH如下:setPYTHONPATH=c:\python37\lib;任務(wù)1模塊概述任務(wù)2自定義模塊任務(wù)3以主程序的形式執(zhí)行任務(wù)4Python中的包任務(wù)5引用其他模塊任務(wù)6實(shí)踐活動(dòng)一個(gè)模塊被另一個(gè)程序第一次引入時(shí),其主程序?qū)⑦\(yùn)行。如果我們想在模塊被引入時(shí),模塊中的某一程序塊不執(zhí)行,我們可以用__name__屬性來(lái)使該程序塊僅在該模塊自身運(yùn)行時(shí)執(zhí)行。#!/usr/bin/python3#Filename:using_name.pyif__name__=='__main__':print('程序自身在運(yùn)行')else:print('我來(lái)自另一模塊')上述代碼的執(zhí)行結(jié)果為:$pythonusing_name.py程序自身在運(yùn)行$python>>>importusing_name我來(lái)自另一模塊說(shuō)明:Python中用__name__屬性避免執(zhí)行測(cè)試代碼。如果當(dāng)前模塊是啟動(dòng)模塊,則__name__屬性的值為_(kāi)_main__。若該模塊是被其他程序?qū)?,則__name__屬性的值為文件名。任務(wù)1模塊概述任務(wù)2自定義模塊任務(wù)3以主程序的形式執(zhí)行任務(wù)4Python中的包任務(wù)5引用其他模塊任務(wù)6實(shí)踐活動(dòng)包是一種管理Python模塊命名空間的形式,采用"點(diǎn)模塊名稱(chēng)"。比如一個(gè)模塊的名稱(chēng)是A.B,那么他表示一個(gè)包A中的子模塊B。采用點(diǎn)模塊名稱(chēng)這種形式使用模塊,使得不同不同模塊之間的全局變量相互不影響。例如:不同的作者都可以提供NumPy模塊,或者是Python圖形庫(kù)。Python程序的包結(jié)構(gòu)這里給出了一種可能的包結(jié)構(gòu)(在分層的文件系統(tǒng)中):sound/頂層包__init__.py初始化sound包 formats/文件格式轉(zhuǎn)換子包 __init__.pywavread.pywavwrite.pyaiffread.pyaiffwrite.pyauread.pyauwrite.py... effects/聲音效果子包__init__.pyecho.pysurround.pyreverse.py...filters/filters子包__init__.pyequalizer.pyvocoder.pykaraoke.py創(chuàng)建和使用包在導(dǎo)入一個(gè)包的時(shí)候,Python會(huì)根據(jù)sys.path中的目錄來(lái)尋找這個(gè)包中包含的子目錄。目錄只有包含一個(gè)叫做__init__.py的文件才會(huì)被識(shí)別為一個(gè)包,主要是為了避免一些濫俗的名字(比如叫做string)影響搜索路徑中的有效模塊。最簡(jiǎn)單的情況,放一個(gè)空的:file:__init__.py就可以了。當(dāng)然這個(gè)文件中也可以包含一些初始化代碼或者為(將在后面介紹的)__all__變量賦值。用戶(hù)可以每次只導(dǎo)入一個(gè)包里面的特定模塊,比如:importsound.effects.echo這將會(huì)導(dǎo)入子模塊:sound.effects.echo。他必須使用全名去訪(fǎng)問(wèn):sound.effects.echo.echofilter(input,output,delay=0.7,atten=4)還有一種導(dǎo)入子模塊的方法是:fromsound.effectsimportecho這同樣會(huì)導(dǎo)入子模塊:echo,并且他不需要那些冗長(zhǎng)的前綴,所以他可以這樣使用:echo.echofilter(input,output,delay=0.7,atten=4)任務(wù)1模塊概述任務(wù)2自定義模塊任務(wù)3以主程序的形式執(zhí)行任務(wù)4Python中的包任務(wù)5引用其他模塊任務(wù)6實(shí)踐活動(dòng)Python模塊大概分為三種:自定義模塊、內(nèi)置模塊、開(kāi)源模塊(第三方模塊),常見(jiàn)的有以下這些:requests、timedatetime、random、os、sys等。接下來(lái)重點(diǎn)介紹一下Python第三方模塊。Python第三方模塊有哪些?①Requests。KennethReitz寫(xiě)的最富盛名的http庫(kù),每個(gè)Python程序員都應(yīng)該會(huì)使用它;②Scrapy。如果你是從事Python爬蟲(chóng)相關(guān)的工作,這個(gè)庫(kù)必不可少;③WxPython。Python的一個(gè)GUI工具,主要用它替代tkinter;④Pillow。它是PIL的一個(gè)友好分支,對(duì)于用戶(hù)比PIL更加友好,對(duì)于任何在圖形領(lǐng)域工作的人是必備的庫(kù);⑤SQLalchemy。一個(gè)數(shù)據(jù)庫(kù)的庫(kù),對(duì)它的評(píng)價(jià)中等;⑥Beautifulsoup。這個(gè)雖然說(shuō)比較慢,但是它的xml和html的解析庫(kù)對(duì)于新手來(lái)講非常好用;⑦Twisted。對(duì)于網(wǎng)絡(luò)應(yīng)用開(kāi)發(fā)者最重要的工具,它有非常優(yōu)美的api,被很多Python開(kāi)發(fā)大牛使用;⑧Numpy。它為Python提供了很多高級(jí)的數(shù)學(xué)方法;⑨Scipy。這是一個(gè)Python的算法和數(shù)學(xué)工具庫(kù),它的功能把很多科學(xué)家從ruby吸引到了Python;⑩Matplotlib。一個(gè)繪制數(shù)據(jù)圖的庫(kù),對(duì)于數(shù)據(jù)科學(xué)家或者分析師非常有用。任務(wù)1模塊概述任務(wù)2自定義模塊任務(wù)3以主程序的形式執(zhí)行任務(wù)4Python中的包任務(wù)5引用其他模塊任務(wù)6實(shí)踐活動(dòng)實(shí)踐一:輸入用戶(hù)名網(wǎng)站的注冊(cè)登錄業(yè)務(wù)都需要用戶(hù)名,用戶(hù)名的字符有其特殊的規(guī)范性,一般是數(shù)字和大小寫(xiě)字母。本實(shí)例要求編寫(xiě)程序,實(shí)現(xiàn)輸入8位用戶(hù)名的功能。1.實(shí)踐分析本實(shí)例的用戶(hù)名由8個(gè)字符組成,每個(gè)字符由大小寫(xiě)英文字母或阿拉伯?dāng)?shù)字組成。基本實(shí)現(xiàn)思路為:(1)創(chuàng)建一個(gè)空字符串code_list。(2)輸入一個(gè)字符并判斷是否符合要求。(3)將符合要求的字符逐個(gè)拼接到code_list后面。以上實(shí)現(xiàn)思路中的步驟(2)是驗(yàn)證碼功能的核心部分,此部分主要判斷輸入的8個(gè)字符的功能,確保每次生成的字符類(lèi)型只能為大寫(xiě)字母、小寫(xiě)字母、數(shù)字的任一種。為確保每次輸入的是所選類(lèi)型中的字符,這里需要按三種類(lèi)型給隨機(jī)數(shù)指定范圍,即數(shù)字類(lèi)型對(duì)應(yīng)的數(shù)值范圍為0~9,大寫(xiě)字母對(duì)應(yīng)的ACSII碼范圍為65~90,小寫(xiě)字母對(duì)應(yīng)的ACSII碼范圍為97~122。2.代碼實(shí)現(xiàn)本實(shí)例的具體實(shí)現(xiàn)代碼如下所示:"""chr()函數(shù)返回值是當(dāng)前整數(shù)對(duì)應(yīng)的ascii字符。ord()函數(shù)返回值是當(dāng)前字母對(duì)應(yīng)的ascii字符。"""defverifycode():code_list=''#每一位用戶(hù)名都有三種可能(大寫(xiě)字母,小寫(xiě)字母,數(shù)字)foriinrange(1,9):#控制用戶(hù)名生成的位數(shù)adminInput=ord(input("請(qǐng)輸入密碼第:%d位:"%i))ifadminInput>=65andadminInput<=90:code_list=code_list+str(chr(adminInput))elifadminInput>=97andadminInput<=122:code_list=code_list+str(chr(adminInput))elifadminInput>=48andadminInput<=57:code_list=code_list+str(chr(adminInput))elifadminInput>=48andadminInput<=57:code_list=code_list+str(chr(adminInput))else: print("請(qǐng)輸入范圍內(nèi)的符號(hào)")returncode_list

if__name__=='__main__':verifycode=verifycode()print(verifycode)以上代碼定義了一個(gè)驗(yàn)證輸入字符的函數(shù)verifycode(),該函數(shù)中首先定義了一個(gè)空字符串code_list,然后使用for語(yǔ)句控制循環(huán)執(zhí)行的次數(shù),即字符的個(gè)數(shù),將輸入字符后拼接到code_list中,最后返回code_list。實(shí)踐二:雙色球雙色球由中福彩中心發(fā)行和組織銷(xiāo)售,由各省福彩機(jī)構(gòu)在所轄區(qū)域內(nèi)銷(xiāo)售。采用計(jì)算機(jī)網(wǎng)絡(luò)系統(tǒng)發(fā)行,在各省福彩機(jī)構(gòu)設(shè)置的銷(xiāo)售網(wǎng)點(diǎn)銷(xiāo)售,每周二、周四、周日開(kāi)獎(jiǎng)。雙色球投注區(qū)分為紅色球號(hào)碼區(qū)和藍(lán)色球號(hào)碼區(qū),紅色球號(hào)碼區(qū)由1-33共三十三個(gè)號(hào)碼組成,藍(lán)色球號(hào)碼區(qū)由1-16共十六個(gè)號(hào)碼組成。投注時(shí)選擇6個(gè)紅色球號(hào)碼和1個(gè)藍(lán)色球號(hào)碼組成一注進(jìn)行單式投注,每注金額人民幣2元。現(xiàn)可以模擬雙色球號(hào)碼生成器,使用Random模塊。1.實(shí)踐分析紅色球號(hào)碼區(qū)由1-33共三十三個(gè)號(hào)碼組成,共6個(gè)紅色球號(hào)碼。藍(lán)色球號(hào)碼區(qū)由1-16共十六個(gè)號(hào)碼組成,共1個(gè)藍(lán)色球號(hào)碼。一注雙色球由6個(gè)紅球號(hào)碼和1個(gè)藍(lán)球號(hào)碼組成。一注雙色球的產(chǎn)生過(guò)程為隨機(jī)在1至33個(gè)號(hào)碼中選取6個(gè)不重復(fù)的號(hào)碼,如是號(hào)碼為個(gè)位數(shù),如5,則在前面加1個(gè)0,變成05,6個(gè)數(shù)字選出后要進(jìn)行排序,確保小數(shù)在前,大數(shù)在后,再隨機(jī)在1至16中抽取一個(gè)數(shù)作為藍(lán)球。再將紅球與藍(lán)球進(jìn)行組合,生成一注雙色球。若要生成多注雙色球,在二維列表中存儲(chǔ)相應(yīng)的號(hào)碼。并按照每注在一起打印。

2.代碼實(shí)現(xiàn)本實(shí)例的具體實(shí)現(xiàn)代碼如下所示:#導(dǎo)入sys模塊是python內(nèi)置的importsys#導(dǎo)入自定義模塊所在的目錄路徑為模塊路徑sys.path.append(r"D:\Python\python0\python0")#導(dǎo)入模塊importMyModular#Greatnumber=[]print('大樂(lè)透號(hào)碼生成器')#提示用戶(hù)輸入要隨機(jī)大樂(lè)透的數(shù)量并獲取輸入的內(nèi)容time=input('請(qǐng)輸入要生成的大樂(lè)透號(hào)碼注數(shù):')#根據(jù)注數(shù)獲取大樂(lè)透號(hào)碼Greatnumber=MyModular.Great_lotto(int(time))#循環(huán)打印每個(gè)號(hào)碼foriinrange(0,int(time)):#打印的時(shí)候根據(jù)格式顯示號(hào)碼print('{}{}{}{}{}{}{}'.format(Greatnumber[i][0],Greatnumber[i][1],Greatnumber[i][2],Greatnumber[i][3],Greatnumber[i][4],Greatnumber[i][5],Greatnumber[i][6]))在上面的程序中,首先,導(dǎo)入MyModular模塊,再使用MyModular中的double_ball(times)函數(shù)。存在MyModular包中的__init__.py文件:#導(dǎo)入隨機(jī)模塊importrandom#雙色球號(hào)碼生成defdouble_ball(times):#創(chuàng)建返回的號(hào)碼空列表DoubleBallnumber=[]#根據(jù)隨機(jī)注釋循環(huán)foriinrange(0,times):#創(chuàng)建空列表numbers=[]#創(chuàng)建數(shù)字為1到33的紅色球列表redlist=list(range(1,34))#在紅球列表中選取6個(gè)元素,生成紅色球.numberred=random.sample(redlist,6)#創(chuàng)建數(shù)字為1到16的藍(lán)色球列表bulelist=list(range(1,17)

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論