




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第一章Python語言概述一選擇題1.下列哪一項(xiàng)不屬于python的優(yōu)勢()A.易于掌握 B.模塊化 C.語言簡潔 D.運(yùn)行速度快2.下列哪一項(xiàng)開發(fā)工具不能使用python語言()A.IDLE B.VisualStudio C.DevC D.Pycharm3.Pycharm內(nèi)運(yùn)行代碼的快捷鍵是()A.Alt+Shift+F10 B.F10 C.ctrl+F10 D.F114.下列哪一項(xiàng)不是python的注釋方法()A.#注釋 B.“’注釋“’ C.//注釋 D.”””注釋”””5.下列哪一項(xiàng)在python中是合法的變量名()A.#abs B.stu_buaa C.1re D.%s17二判斷題Python語言以對象為核心組織代碼,支持多種編程范式,采用動態(tài)類型并且自帶內(nèi)存回收機(jī)制。()Python中變量需要明確聲明,直接賦值就可以使用變量。()PyCharm具有一般IDE具備的功能,如調(diào)試、語法高亮、Project管理、代碼跳轉(zhuǎn)、智能提示、自動完成、單元測試、版本控制等。()Python在面向?qū)ο缶幊讨袥]有提供顯式的靜態(tài)、成員、私有、公有等聲明性標(biāo)識符。()Python的代碼縮進(jìn)可以混用制表符和空格符。()三填空題1.官方提供了Python2.x和----------兩個(gè)版本。2.VSCode(VisualStudioCode)是----------開發(fā)的簡化且高效的代碼編輯器。3.Python直接使用----------來表示語句的結(jié)束。4.合理使用注釋能夠?qū)Υa進(jìn)行良好的說明,增強(qiáng)代碼的----------。5.Python同樣支持在多行中書寫一條語句,此時(shí)需要使用----------添加到行末。四簡答題1.簡要說明Python這一編程語言的幾大特點(diǎn)。2.舉例說明如何應(yīng)用Python的編碼規(guī)范。3.簡要說明PyCharm相比IDLE有什么優(yōu)勢。4.概述如何用Python在控制臺輸出helloworld。5.說明寫注釋有什么好處。答案 一選擇題D2.C3.A4.C5.B二判斷題√2.×3.√4.√5.×三填空題Python3.x2.Microsoft3.換行4.可讀性5.反斜杠(\)四簡答題1.可擴(kuò)展,語法精簡,跨平臺,動態(tài)語言,面向?qū)ο?,具有豐富的數(shù)據(jù)結(jié)構(gòu),健壯性,強(qiáng)大的社區(qū)支持2.變量的命名要規(guī)范,不要有意義不明的變量名;代碼縮進(jìn)要用制表符,防止代碼混亂3.提供了一些很好的用于Django開發(fā)的功能,同時(shí),其支持GoogleAppEngine和IronPython。4.print(“Hello,World”)并運(yùn)行5.注釋可用來標(biāo)注該處代碼的作用,合理使用注釋能夠?qū)Υa進(jìn)行良好的說明,增強(qiáng)代碼的可讀性。第二章python基本概念一選擇題下列哪一項(xiàng)不屬于python的基本數(shù)據(jù)類型()A.整型B.復(fù)數(shù)C.浮點(diǎn)型D.指針2.下列哪一項(xiàng)不是python中可取的變量名()A.aB.Li_HuaC.ifD.s1y23.python中的運(yùn)算符in是以下哪種運(yùn)算符()A.成員運(yùn)算符B.位運(yùn)算符C.邏輯運(yùn)算符D.關(guān)系運(yùn)算符4.python導(dǎo)入外部模塊時(shí)使用以下哪種語句()A.includeB.importC.insertD.inform5.下列哪一項(xiàng)是python的基本輸出函數(shù)名()A.printB.printfC.putsD.output二判斷題Python的基本數(shù)據(jù)類型包括整型、浮點(diǎn)型、字符串、布爾值和空值等。()Python對變量的標(biāo)識符大小寫不敏感。()Python中的變量在使用前不需要進(jìn)行聲明數(shù)據(jù)類型。()對于python中的變量a,語句a++的含義與語句a+=1的含義一致。()Python中的input()函數(shù)輸出類型任意。()三填空題1.在python中,當(dāng)所創(chuàng)建的整數(shù)大小超過普通整數(shù)取值范圍時(shí)將自動創(chuàng)建為長整數(shù),可以通過對數(shù)字添加后綴來手動創(chuàng)建一個(gè)長整數(shù)。2.空值是Python中的一個(gè)特殊的值,用來表示。3.關(guān)系運(yùn)算符又稱比較運(yùn)算符,其作用是比較兩個(gè)操作數(shù)的大小并返回一個(gè)。4.python中的“+=”、“*=”等一類運(yùn)算符,具體被稱為。5.math模塊還定義了數(shù)學(xué)常量π,使用來對其進(jìn)行訪問。四簡述題1.Python有哪幾種基本數(shù)據(jù)類型?分別介紹其作用。2.Python有幾類運(yùn)算符?分別介紹其作用。3.什么是增強(qiáng)型賦值運(yùn)算符?4.簡要介紹python中的random模塊中的函數(shù)。5.簡要介紹python中的幾個(gè)數(shù)學(xué)運(yùn)算函數(shù)。另實(shí)踐題1.編寫Python程序輸出下列數(shù)學(xué)表達(dá)式的值。(1)QUOTExy+(5z+14)2,x=4,y=2,z=1(2)QUOTE。2.假如你想把一筆錢以固定年利率存入賬戶。當(dāng)你將其存入賬戶若干年后,其中一共應(yīng)有多少錢?計(jì)算公式為3.編寫一個(gè)程序,提示用戶輸入三角形的三個(gè)頂點(diǎn)(x1,y1)、(x2,y2)、(x3,y3),然后輸出三角形的面積。計(jì)算三角形面積的公式如下:其中,a、b、c分別代表三角形的三條邊長。答案 一選擇題D2.C3.A4.B5.A二判斷題√2.×3.√4.×5.×三填空題L或l2.None3.布爾值4.增強(qiáng)型賦值運(yùn)算符5.math.pi四簡答題1.Python的基本數(shù)據(jù)類型包括整型、浮點(diǎn)型、字符串、布爾值和空值等?!菊汀縋ython可以處理任意大小的整數(shù),包括負(fù)整數(shù)。十進(jìn)制整數(shù)的表示方式與數(shù)學(xué)上的寫法相同,如10、-255、0、2016等。此外,Python還支持十六進(jìn)制、八進(jìn)制和二進(jìn)制整數(shù)。十六進(jìn)制整數(shù)需要用0x或0X作為前綴,用0~9和a~f(或A~F)作為基本的16個(gè)數(shù)字,如0xffff、0X4F5DA2等。八進(jìn)制整數(shù)需要用0o作為前綴,用0~7作為基本的8個(gè)數(shù)字,如:0o11、0o376等。二進(jìn)制整數(shù)需要用0b或0B作為前綴,用0和1作為基本數(shù)字,如0b1010、0B10110等?!靖↑c(diǎn)型】在Python中,浮點(diǎn)型用來表示實(shí)數(shù),在絕大多數(shù)情況下用于表示小數(shù)。浮點(diǎn)數(shù)可以使用普通的數(shù)學(xué)寫法,如1.234、-3.14159、12.0等。對于特別大或特別小的浮點(diǎn)數(shù),可以使用科學(xué)計(jì)數(shù)法表示,如-1.23e11、3.2e-12等。其中,使用字母e或E來表示10的冪。因此,前面的兩個(gè)例子可表示為-1.23×1011和3.2×10-12?!緩?fù)數(shù)】除整數(shù)和浮點(diǎn)數(shù)外,Python也提供了復(fù)數(shù)作為其內(nèi)置類型之一,如3+2j、7-2j等。其中,j代表虛數(shù)單位?!咀址孔址鞘褂脝我柣螂p引號括起來的任意文本,如'HelloWorld',"Python"等。注意,引號本身不是字符串的一部分,只說明了字符串的范圍。例如,字符串'ab'只包含a和b兩個(gè)字符。使用''或""可以表示空字符串。一個(gè)字符串使用哪種引號開頭就必須以哪種引號結(jié)束。例如,字符串"I'm"包含了I、'、m三個(gè)字符,字符串的結(jié)束是雙引號而非單引號?!静紶栔怠坎紶栔导凑妫═rue)或假(False)。在Python中,可以直接使用True或False表示布爾值。當(dāng)把其他類型轉(zhuǎn)換成布爾值時(shí),值為0的數(shù)字(包括整型0,浮點(diǎn)型0.0等)、空字符串、空值(None)、空集合被認(rèn)為是False,其他值均被認(rèn)為是True?!究罩怠靠罩凳荘ython中的一個(gè)特殊的值,用None來表示。2.Python中的運(yùn)算符包括:算術(shù)運(yùn)算符、關(guān)系運(yùn)算符、邏輯運(yùn)算符、位運(yùn)算符、身份運(yùn)算符和成員運(yùn)算符等。算術(shù)運(yùn)算符用于對操作數(shù)進(jìn)行各種算術(shù)運(yùn)算。關(guān)系運(yùn)算符又稱比較運(yùn)算符,其作用是比較兩個(gè)操作數(shù)的大小并返回一個(gè)布爾值。邏輯運(yùn)算符用來對布爾值進(jìn)行與、或、非等邏輯運(yùn)算。身份運(yùn)算符用于比較兩個(gè)對象的內(nèi)存位置是否相同。成員運(yùn)算符用于查找對象是否在某個(gè)序列中,序列包括字符串、列表和元組。3.Python允許將某些雙目運(yùn)算符和賦值運(yùn)算符結(jié)合使用來簡化將某個(gè)變量的值修改后復(fù)制給自身的語法。這種雙目運(yùn)算符被稱為增強(qiáng)型賦值運(yùn)算符。4.random.random():在0.0至1.0的區(qū)間內(nèi)隨機(jī)返回一個(gè)浮點(diǎn)數(shù)。random.uniform(a,b):在a到b的區(qū)間內(nèi)隨機(jī)返回一個(gè)浮點(diǎn)數(shù)。random.randint(a,b):在a到b的區(qū)間內(nèi)隨機(jī)返回一個(gè)整數(shù)。5.abs(x):返回一個(gè)數(shù)的絕對值。max(arg1,arg2,*args):返回多個(gè)參數(shù)中的最大值。min(arg1,arg2,*args):返回多個(gè)參數(shù)中的最小值。pow(x,y):返回x的y次冪。round(number[,ndigits]):返回一個(gè)浮點(diǎn)數(shù)的近似值,保留小數(shù)點(diǎn)后ndigits位。另實(shí)踐題1.importmathx,y,z=4,2,1op=x/y+(5*z+14)*(5*z+14)print(op)x=math.pi/4y=math.pi/6op=math.sin(x)*math.cos(y)print(op)2.importmathmoney=float(input())#輸入本金rate=float(input())#輸入年利率year=float(input())#輸入年數(shù)output=money*pow(1+rate,year)print(output)#樣例:#輸入本金:4000#輸入年利率:0.05#輸入年數(shù):2#輸出:4410.03.importmath#數(shù)據(jù)輸入print('請輸入三個(gè)頂點(diǎn)坐標(biāo),使用空格隔開')print('請輸入第一個(gè)頂點(diǎn)坐標(biāo):')data1=input()print('請輸入第二個(gè)頂點(diǎn)坐標(biāo):')data2=input()print('請輸入第三個(gè)頂點(diǎn)坐標(biāo):')data3=input()#數(shù)據(jù)類型轉(zhuǎn)換與存儲x1,y1=float(data1.split()[0]),float(data1.split()[1])x2,y2=float(data2.split()[0]),float(data2.split()[1])x3,y3=float(data3.split()[0]),float(data3.split()[1])#邊長運(yùn)算a=math.sqrt(pow(x1-x2,2)+pow(y1-y2,2))b=math.sqrt(pow(x1-x3,2)+pow(y1-y3,2))c=math.sqrt(pow(x2-x3,2)+pow(y2-y3,2))#面積運(yùn)算(海倫公式)s=(a+b+c)/2S=math.sqrt(s*(s-a)*(s-b)*(s-c))#輸出面積print(S)#樣例:#數(shù)據(jù)輸入:#00#40#03#輸出面積:6.0以上題目具體代碼見附件第三章Python控制結(jié)構(gòu)一選擇題1.Python提供了結(jié)構(gòu)化程序設(shè)計(jì)的3種基本結(jié)構(gòu),這3種基本結(jié)構(gòu)是()A.遞歸結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)B.選擇結(jié)構(gòu)、過程結(jié)構(gòu)、順序結(jié)構(gòu)C.過程結(jié)構(gòu)、輸入輸出結(jié)構(gòu)、轉(zhuǎn)向結(jié)構(gòu)D.選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)、順序結(jié)構(gòu)2.以下保留字不屬于分支或循環(huán)語句的是()A.elseB.inC.forD.while3.python語言中用于表示代碼塊所屬關(guān)系的語法是()A.縮進(jìn)B.冒號C.花括號D.括號4.以下關(guān)于Python循環(huán)結(jié)構(gòu)的描述中,錯(cuò)誤的是()A.continue只結(jié)束本次循環(huán)B.遍歷循環(huán)中的遍歷結(jié)構(gòu)可以是字符串、文件、組合數(shù)據(jù)類型和range()函數(shù)等C.break用來結(jié)束當(dāng)前當(dāng)次語句,但不跳出當(dāng)前的循環(huán)體D.Python通過for、while等保留字構(gòu)建循環(huán)結(jié)構(gòu)5.以下關(guān)于Python分支的描述中,錯(cuò)誤的是()A.縮進(jìn)是Python分支語句的語法部分,縮進(jìn)不正確會影響分支功能B.Python分支結(jié)構(gòu)使用保留字if、elif和else來實(shí)現(xiàn),每個(gè)if后面必須有elif或elseC.if語句會判斷if后面的邏輯表達(dá)式,當(dāng)表達(dá)式為真時(shí),執(zhí)行if后續(xù)的語句塊D..if-else結(jié)構(gòu)是可以嵌套的二判斷題在Python中,關(guān)系運(yùn)算符可以連續(xù)使用,例如1<3<5等價(jià)于1<3and3<5。()如果僅僅是用于控制循環(huán)次數(shù),那么使用foriinrange(20)和foriinrange(20,40)的作用是等價(jià)的。()帶有else子句的循環(huán)如果因?yàn)閳?zhí)行了break語句而退出的話,則會執(zhí)行else子句中的代碼。()對于帶有else子句的循環(huán)語句,如果是因?yàn)檠h(huán)條件表達(dá)式不成立而自然結(jié)束循環(huán),則執(zhí)行else子句中的代碼。()在條件表達(dá)式中允許使用賦值運(yùn)算符“=”,不會提示語法錯(cuò)誤。()三填空題Python提供了if語句、if-else語句以及語句來支持選擇結(jié)構(gòu)。在循環(huán)語句中,__________語句的作用是提前結(jié)束本層循環(huán)。在循環(huán)語句中,_______語句的作用是提前進(jìn)入下一次循環(huán)。______________語句是else語句和if語句的組合。使用嵌套的if語句時(shí),需要更加注意代碼的,因?yàn)檫@決定了代碼是處在哪一級代碼塊中的,從而影響程序的邏輯是否被正確地實(shí)現(xiàn)。四簡答題1.簡述三種基本控制結(jié)構(gòu)的作用。2.while循環(huán)和for循環(huán)有哪些區(qū)別?3.舉例說明break語句和continue語句的作用。4.寫出Python的選擇語句包括哪幾種常用的形式?5.if語句中的表達(dá)式可以是哪些形式?答案 一選擇題D2.B3.A4.C5.B二判斷題√2.√3.×4.√5.×三填空題If-elif-else2.break3.continue4.if-else5.縮進(jìn)四簡答題順序結(jié)構(gòu)是最簡單的控制結(jié)構(gòu),即按照語句的書寫順序依次執(zhí)行。本書前面的示例代碼均是順序結(jié)構(gòu)。選擇結(jié)構(gòu)又稱分支結(jié)構(gòu),它表示根據(jù)程序運(yùn)行時(shí)的某些特定條件來選擇其中一個(gè)分支執(zhí)行。選擇結(jié)構(gòu)可以分為單選擇結(jié)構(gòu)、雙選擇結(jié)構(gòu)和多選擇結(jié)構(gòu)。循環(huán)結(jié)構(gòu)指程序在滿足某條件時(shí)會反復(fù)執(zhí)行某些操作。循環(huán)結(jié)構(gòu)可以分為當(dāng)型循環(huán)和直到型循環(huán)。循環(huán)結(jié)構(gòu)作為程序設(shè)計(jì)中最能發(fā)揮計(jì)算機(jī)特長的基本控制結(jié)構(gòu),可以減少程序代碼重復(fù)書寫的工作量。while循環(huán)是通過一個(gè)條件來控制是否要繼續(xù)反復(fù)執(zhí)行循環(huán)體中的語句。它的語法格式如下:while條件表達(dá)式:循環(huán)體for循環(huán)是一個(gè)計(jì)次循環(huán),一般應(yīng)用在循環(huán)次數(shù)已知的情況下。通常適用于枚舉或遍歷序列,以及迭代對象中的元素。它的語法格式如下:for迭代變量in對象:循環(huán)體其中,迭代變量用于保存讀取出的值;對象為要遍歷或迭代的對象,該對象可以是任何有序的序列對象,如字符串、列表和元組等;循環(huán)體為一組被重復(fù)執(zhí)行的語句。當(dāng)break語句出現(xiàn)在一個(gè)循環(huán)體內(nèi)時(shí),(如滿足條件)循環(huán)就會立即終止,且程序?qū)⒗^續(xù)執(zhí)行緊接著循環(huán)的下一條語句。從圖1中可以看出,在for循環(huán)中,當(dāng)i的值是3時(shí),會調(diào)用break語句結(jié)束當(dāng)前循環(huán),此時(shí)的輸出為0-3,也就是說,當(dāng)i等于3時(shí),循環(huán)就被break語句結(jié)束了。continue語句的作用是跳過本次循環(huán)中剩余的語句而強(qiáng)制執(zhí)行下一次循環(huán)。從圖2中可以看出,在for循環(huán)中,當(dāng)i的值是2時(shí),調(diào)用continue語句結(jié)束本次循環(huán),此時(shí)不會執(zhí)行print()語句而回到for語句開頭執(zhí)行下一次循環(huán)。因此,此時(shí)的輸出結(jié)果中沒有2。Python中選擇語句主要有3種形式,分別為if語句、if…else語句和if…elif…else多分支語句。算術(shù)、字符、關(guān)系、邏輯。
選擇題:以下幾段漢諾塔代碼,哪段是正確的(a)A.defhanoi(n,fromTower,auxTower,toTower):
ifn==1:#遞歸邊界條件,一步移動
print("Movedisk",n,"from",fromTower,"to",toTower)
else:
hanoi(n-1,fromTower,toTower,auxTower)#第一步,遞歸調(diào)用
hanoi(n-1,auxTower,fromTower,toTower)#第三步,遞歸調(diào)用 defmain():
n=int(input("Pleaseinputnumberofdisks:"))
print("ThesolutionoftowerofHanoiis:")
hanoi(n,'A','B','C') main()B.defhanoi(n,fromTower,auxTower,toTower):
ifn==1:#遞歸邊界條件,一步移動
print("Movedisk",n,"from",fromTower,"to",toTower)
else:
hanoi(n-1,fromTower,toTower,auxTower)#第一步,遞歸調(diào)用
hanoi(n-1,auxTower,fromTower,toTower)#第三步,遞歸調(diào)用 defmain():
n=int(input("Pleaseinputnumberofdisks:"))
print("ThesolutionoftowerofHanoiis:")
hanoi(n,'A','C','D') main()C.defhanoi(n,fromTower,auxTower,toTower):
ifn==1:#遞歸邊界條件,一步移動
print("Movedisk",n,"from",fromTower,"to",toTower)
else:
hanoi(n-1,fromTower,toTower,auxTower)#第一步,遞歸調(diào)用
hanoi(n-1,auxTower,fromTower,toTower)#第三步,遞歸調(diào)用 defmain():
n=int(input("Pleaseinputnumberofdisks:"))
print("ThesolutionoftowerofHanoiis:")
main(n,'A','B','C') main()D.defhanoi(n,fromTower,auxTower,toTower):
ifn==1:#遞歸邊界條件,一步移動
print("Movedisk",n,"from",fromTower,"to",toTower)
else:
main(n-1,fromTower,toTower,auxTower)#第一步,遞歸調(diào)用
main(n-1,auxTower,fromTower,toTower)#第三步,遞歸調(diào)用 defmain():
n=int(input("Pleaseinputnumberofdisks:"))
print("ThesolutionoftowerofHanoiis:")
hanoi(n,'A','B','C') main()以下代碼輸出的是什么(a)a.NameErrorb.2c.TypeErrord.AttributeError3.請問繪制一條(1,1)到(2,2)的直線段需要用到以下哪段代碼()A.importturtle
defdrawLine(x1,y1,x2,y2):
turtle.penup() turtle.goto(x1,y1) turtle.pendown()
turtle.goto(x2,y2)B.importturtledefdrawLine(x1,y1,x2,y2):
turtle.penup() turtle.goto(x1,y1) turtle.pendown()
turtle.circle(x2,y2)C.importturtle
defdrawLine(x1,y1,x2,y2):
turtle.penup() turtle.goto(x1,y1) turtle.pendown()
turtle.dot(x2,y2)D.importturtle
defdrawLine(x1,y1,x2,y2):
turtle.penup() turtle.goto(x1,y1) turtle.pendown()
turtle.line(x2,y2)請問這段代碼輸出是什么:()deffunc1():print("Thisisouterfunc")deffunc2():print("Thisisinnerfunc")func2()func1()A.ThisisouterfuncThisisinnerfuncB.ThisisouterfuncC.ThisisouterfuncThisisinnerfuncThisisouterfuncThisisinnerfuncD.ThisisouterfuncThisisinnerfuncThisisouterfunc若輸入為2,1,則以下函數(shù)的返回值為?1
defsort2(a,b):#函數(shù)按升序返回a、b兩個(gè)值2
ifa>b:3
returnb,a4
else:5
returna,bA:1,2B:2,1C:1,1D:2,2若輸入為1,2,3,5,7,則以下函數(shù)的返回值為:defsum(*p):res=0foriinp:res+=ireturnresA:6B:15C:18D:0判斷題:1.lambda函數(shù)是否被用于循環(huán)()2.生成器返回值依然需要用return實(shí)現(xiàn)()3.漢諾塔可以使用for循環(huán)實(shí)現(xiàn)()4.Python支持函數(shù)返回多個(gè)值()5.函數(shù)內(nèi)部變量的作用域可以延伸到函數(shù)體外()填空題:1.定義函數(shù)需要函數(shù)頭,函數(shù)名,形參以及()2.基本的參數(shù)值傳遞有兩種方式分別是:()3.函數(shù)調(diào)用時(shí)沒有傳入沒寫參數(shù)值時(shí),()會被傳遞給實(shí)參。4.同時(shí)賦值和函數(shù)返回多個(gè)值的語法都是使用了()的特性5.lambda函數(shù)與()函數(shù)功能相同。簡答題:封裝函數(shù)有什么好處?全局變量和局部變量有什么區(qū)別?請簡述。請簡述global語句的作用python中可變的對象包括,不可變的對象包括?Python中采用什么機(jī)制傳遞參數(shù)?答案:選擇題:1A2A3A4B5C判斷題:TRUETRUETRUETRUEFALSE填空題:1.函數(shù)體2.值傳遞和引用傳遞3.默認(rèn)參數(shù)4.元組5.If簡答題:1.函數(shù)的實(shí)現(xiàn)細(xì)節(jié)被封裝在函數(shù)內(nèi),并對調(diào)用者隱藏,這被稱為信息隱藏或封裝。如果要修改或優(yōu)化函數(shù)的實(shí)現(xiàn),只要函數(shù)原型(函數(shù)名,參數(shù)個(gè)數(shù)及作用,返回值個(gè)數(shù)及作用等)不改變,用戶程序?qū)瘮?shù)的調(diào)用就不會受影響。將功能封裝為函數(shù)能夠?qū)⒁粋€(gè)大問題分解為更小的、更易于解決的多個(gè)小問題。每個(gè)小問題都可以用函數(shù)實(shí)現(xiàn)。這種方法可以使程序易于編寫、重用、調(diào)試、測試、修改和維護(hù)。2.在函數(shù)體內(nèi)部定義的變量叫做局部變量,在函數(shù)體外部定義的變量叫做全局變量。局部變量只能在定義的那個(gè)函數(shù)體的內(nèi)部進(jìn)行使用,而全局變量在所有函數(shù)內(nèi)部都可以使用。.局部變量的生命周期為該變量創(chuàng)建到該函數(shù)體結(jié)束。全局變量可以貫穿整個(gè)程序。3.在Python中,global
關(guān)鍵字允許你修改當(dāng)前范圍之外的變量。它用于創(chuàng)建全局變量并在本地上下文中更改變量。不使用global和nonlocal語句在函數(shù)內(nèi)部對全局變量的訪問限于讀取以及自運(yùn)算(如“+=”、“*=”等運(yùn)算),而不可能使用賦值運(yùn)算符進(jìn)行直接賦值(會被解釋為創(chuàng)建同名的局部變量)。4.不可變對象包括數(shù)字(整型、浮點(diǎn)型、布爾型等)、字符串、元組[1]元組、列表和字典類型將在本書第5章中進(jìn)行詳細(xì)講解。1][1]元組、列表和字典類型將在本書第5章中進(jìn)行詳細(xì)講解。5.Python參數(shù)傳遞采用的是“傳對象引用”的方式。這種方式相當(dāng)于傳值和傳引用的一種結(jié)合。簡單來說,這種方式在函數(shù)內(nèi)部對形參所指向的對象的修改可以影響到函數(shù)外部,但形參變量本身不能修改指向其他對象。習(xí)題選擇題如何在Python中創(chuàng)建一個(gè)空集合?A.set{}B.set()C.{}D.[]2.如何使用切片操作來獲取列表my_list的從第2個(gè)元素到倒數(shù)第3個(gè)元素(包括本身)的所有元素?A.my_list[1:-3]B.my_list[2:-2]C.my_list[1:-2]D.my_list[2,-3]3.關(guān)于以下程序輸出結(jié)果的描述,正確的選項(xiàng)是:????????????????????????????????????????????????l=[1,2,3,4,5,6,7]
print(l.pop(0),len(l))
A.16170706在Python中,下列哪個(gè)選項(xiàng)是正確的元組拆包(tupleunpacking)語法?a,b=(1,2)ab=(1,2)(a,b)=1,2a,b->(1,2)在Python中,下列哪種方法可以實(shí)現(xiàn)對字典的合并(不會改變原字典)?A.dict1+dict2B.dict1.extend(dict2)C.{**dict1,**dict2}D.dict1.update(dict2)對錯(cuò)題Python3中的字典和集合都是有序存儲的。在Python中使用列表推導(dǎo)式時(shí),可以使用if語句進(jìn)行條件過濾,但不能使用elif或else語句列表切片得到的列表中的數(shù)據(jù)是原有數(shù)據(jù)的拷貝,而不是原有列表的元素。列表在存取元素時(shí)要比元組慢。在Python中,要檢查一個(gè)元素是否在字典中,與檢查一個(gè)元素是否在集合中的時(shí)間復(fù)雜度相同。填空題可以使用一行代碼:獲取my_list=[1,2,3,4,5,6]中所有3的倍數(shù)的元素組成的列表。使用_______方法可以向字典中添加一個(gè)新的鍵值對。在執(zhí)行x,y,z=input().split()時(shí),發(fā)生了序列的過程。使用生成一個(gè)以4為開始,10為結(jié)束的,每次遞增2的等差數(shù)列._______內(nèi)置函數(shù)可以將一個(gè)列表轉(zhuǎn)換為集合。簡答題簡要說明列表、元組、集合與字典這幾種數(shù)據(jù)結(jié)構(gòu)的相同點(diǎn)和不同點(diǎn)。列表查找有幾種方法?每種方法的主要特點(diǎn)是什么?什么是元組封裝和序列拆封?這兩種特性如何在編程中應(yīng)用?試舉例說明。集合和字典的底層數(shù)據(jù)結(jié)構(gòu)是怎么實(shí)現(xiàn)的?請簡要敘述列表、元組、集合、字典這四種不同數(shù)據(jù)結(jié)構(gòu)適合什么樣的應(yīng)用場景。答案:選擇題BCAAC對錯(cuò)題FTFTT填空題[iforiinmy_listifi%3==0]update拆包/拆封range(4,10,2)set()簡答題相同點(diǎn):都可以存儲一系列數(shù)據(jù)。支持使用in關(guān)鍵字進(jìn)行成員檢查。支持使用len()函數(shù)獲取元素?cái)?shù)量。不同點(diǎn):列表(List):有序的可變數(shù)據(jù)結(jié)構(gòu),使用方括號`[]`表示。列表中的元素可以是不同的數(shù)據(jù)類型,支持添加、刪除、修改操作。列表支持索引和切片。元組(Tuple):有序的不可變數(shù)據(jù)結(jié)構(gòu),使用圓括號`()`表示。元組中的元素可以是不同的數(shù)據(jù)類型,但是不支持添加、刪除、修改操作。元組支持索引和切片。集合(Set):無序的可變數(shù)據(jù)結(jié)構(gòu),使用花括號`{}`表示。集合中的元素必須是唯一的,不支持重復(fù)。集合中的元素必須是不可變數(shù)據(jù)類型(如數(shù)字、字符串、元組等)。集合支持添加、刪除操作,但不支持修改操作。集合不支持索引和切片。字典(Dictionary):無序的可變數(shù)據(jù)結(jié)構(gòu),(Python3中變得有序)使用花括號`{}`表示。字典是鍵值對(key-valuepair)的集合。字典中的鍵必須是唯一的,不支持重復(fù),且必須是不可變數(shù)據(jù)類型。字典支持添加、刪除、修改操作。字典不支持索引和切片,而是通過鍵訪問相應(yīng)的值。(言之有理即可)1.in關(guān)鍵字:簡單易用,檢查元素是否在列表中。2.index()`方法:查找元素并返回其索引,如果元素不存在則拋出ValueError。3.列表推導(dǎo)式:篩選滿足特定條件的元素。4.enumerate()函數(shù):返回元素及其索引,適用于需要保留索引的場景。元組封裝(Tuplepacking):將多個(gè)值組合成一個(gè)元組的過程稱為元組封裝。在Python中,你可以將多個(gè)值用逗號分隔,無需使用圓括號,Python會自動將它們組合成一個(gè)元組。例如:packed_tuple=1,2,3print(packed_tuple)#輸出:(1,2,3)序列拆封(Sequenceunpacking):將序列(如元組、列表等)中的元素分別賦值給多個(gè)變量的過程稱為序列拆封。要進(jìn)行序列拆封,需要確保變量的數(shù)量與序列中的元素?cái)?shù)量相同。例如:my_tuple=(4,5,6)a,b,c=my_tupleprint(a,b,c)#輸出:456在編程中,元組封裝和序列拆封可以用于多種場景,提高代碼的可讀性和簡潔性。最常用的場景變量交換:a,b=b,a等在Python中,集合和字典的底層數(shù)據(jù)結(jié)構(gòu)是基于哈希表實(shí)現(xiàn)的。哈希表是一種高效的數(shù)據(jù)結(jié)構(gòu),能夠在平均情況下實(shí)現(xiàn)O(1)的查找、插入和刪除操作。1.列表(List):適用于需要有序的、可修改的數(shù)據(jù)結(jié)構(gòu)。-當(dāng)需要頻繁地添加、刪除和修改元素時(shí)。-適用于實(shí)現(xiàn)棧、隊(duì)列等數(shù)據(jù)結(jié)構(gòu)。-當(dāng)需要對數(shù)據(jù)進(jìn)行索引和切片操作時(shí)。2.元組(Tuple):-適用于需要有序的、不可修改的數(shù)據(jù)結(jié)構(gòu)。-當(dāng)數(shù)據(jù)集合在整個(gè)程序運(yùn)行過程中保持不變時(shí)。-當(dāng)需要使用數(shù)據(jù)集合作為字典的鍵或集合的元素時(shí)(因?yàn)檫@些場景需要不可變數(shù)據(jù)類型)。-當(dāng)需要對數(shù)據(jù)進(jìn)行索引和切片操作,但不需要修改數(shù)據(jù)時(shí)。3.集合(Set):-適用于需要無序的、不重復(fù)的數(shù)據(jù)結(jié)構(gòu)。-當(dāng)需要進(jìn)行成員檢查、集合運(yùn)算(如交集、并集、差集等)時(shí)。-當(dāng)需要去除列表或其他序列中的重復(fù)元素時(shí)。4.字典(Dictionary):-適用于需要無序的、基于鍵值對存儲數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)。-當(dāng)需要通過鍵快速查找、添加或刪除數(shù)據(jù)時(shí)。-當(dāng)需要將數(shù)據(jù)與其他數(shù)據(jù)(如描述、屬性等)相關(guān)聯(lián)時(shí)。-當(dāng)需要實(shí)現(xiàn)哈希表、緩存等數(shù)據(jù)結(jié)構(gòu)時(shí)。****第6章使用模塊一選擇題下列哪一項(xiàng)是Python導(dǎo)入模塊的語句()A.inputB.includeC.defD.import2.下列哪一項(xiàng)命令可以運(yùn)行Python提供的包管理工具()A.pypiB.pythonC.copyD.pip3.下列導(dǎo)入模塊以及調(diào)用模塊內(nèi)對象的語句對應(yīng)關(guān)系不正確的是()A.導(dǎo)入:importfibonacci調(diào)用:fibonacci.recursiveFibonacci(7)B.導(dǎo)入:importfibonacciasfibo調(diào)用:fibo.recursiveFibonacci(7)C.導(dǎo)入:fromfibonacciimportrecursiveFibonacci調(diào)用:recursiveFibonacci(7)D.導(dǎo)入:importfibonacci調(diào)用:recursiveFibonacci(7)4.下列哪一項(xiàng)命令可以查看已安裝的第三方包的包信息()A.piplistB.pipshow<PackageName>C.pipinstall<PackageName>D.pipinstall--upgrade<PackageName>5.video包的結(jié)構(gòu)如下圖所示,下列哪個(gè)語句可以加載子模塊mp4()A.importformats.mp4B.importvideo.formatsasmp4C.fromvideo.formatsimportmp4D.fromvideoimportmp4二判斷題import語句必須放在文件的開始位置()如果當(dāng)前模塊是主模塊,則此時(shí)模塊的內(nèi)置屬性__name__的值為"__main__"()使用“from模塊名import*”的方式導(dǎo)入模塊下的全部對象簡單省事,推薦使用()使用“frompackageimportitem”語法時(shí),item可以是一個(gè)子模塊或子包,也可以是包中定義的一些名稱(如函數(shù)、類或變量)。()為了讓Python將目錄當(dāng)作包,目錄下必須含有一個(gè)名為“__main__.py”的文件。()三填空題1.模塊有一些內(nèi)置屬性,用于存儲模塊的某些信息,其中----------屬性用來取得模塊的名稱。2.Python標(biāo)準(zhǔn)庫內(nèi)置的包含常見字符串操作的模塊是----------。3.video包的結(jié)構(gòu)如下圖所示,加載子模塊avi的語句可以是----------。4.使用pip管理第三方包,可以使用命令----------升級名稱為<PackageName>的包。5.根據(jù)注釋補(bǔ)全下列代碼。代碼清單importModule.py1 importfibonacciasfib #以fib為別名導(dǎo)入fibonacci模塊2 ----------------------------------- #導(dǎo)入math模塊的factorial函數(shù)3 print(factorial(fib.fibonacci(5)))四簡答題1.什么是模塊?使用模塊有哪些好處?2.導(dǎo)入模塊有幾種方式?它們之間有什么區(qū)別?3.什么是包?包是如何組織模塊的?4.如何在Windows下升級pip?5.video包的結(jié)構(gòu)如下圖所示,請用3種方式調(diào)用子模塊avi中一個(gè)名為avireader的函數(shù),該函數(shù)只有一個(gè)字符串格式的參數(shù)test.avi。答案一選擇題D2.D3.D4.B5.C二判斷題×2.√3.×4.√5.×三填空題__name__2.string3.importvideo.formats.avi或fromvideo.formatsimportavi4.pipinstall--upgrade<PackageName>5.frommathimportfactorial四簡答題1.模塊是包含Python定義和聲明的文件。模塊中的定義可以被導(dǎo)入到其他模塊中從而被其他模塊所使用,這就使得我們可以在多個(gè)程序中使用已經(jīng)編寫好的函數(shù)而無需將函數(shù)復(fù)制到每個(gè)程序中。2.①import模塊名直接導(dǎo)入了模塊名,可以通過“模塊名.對象名”來訪問模塊內(nèi)的對象②import模塊名as模塊的別名使用這種方法可以使用“模塊的別名.對象名”來訪問模塊內(nèi)的對象③from模塊名import對象名[as別名]使用這種格式僅導(dǎo)入明確指定的對象,可以減少訪問速度,同時(shí)不需要使用模塊名進(jìn)行調(diào)用。3.包是一種通過“點(diǎn)分模塊名稱”管理Python模塊命名空間的方式??梢詫⑦@些模塊按照某種方式組織在一個(gè)目錄下,構(gòu)成一個(gè)包結(jié)構(gòu)。4.升級pip需要在Windows的命令行下輸入如下命令:python-mpipinstall-Upip5.①importvideo.formats.avivideo.formats.avi.avireader("test.avi")②fromvideo.formatsimportaviavi.avireader("test.avi")③fromvideo.formats.aviimportavireaderavireader("test.avi")1.編寫一個(gè)listOperation模塊,在模塊中封裝列表的查找和排序等函數(shù)。#listOperation.pydeflist_search(list,item):
foriinrange(len(list)):
iflist[i]==item:
returni
return-1deflist_sort(list):
n=len(list)
foriinrange(n-1):
forjinrange(0,n-i-1):
iflist[j]>list[j+1]:
list[j],list[j+1]=list[j+1],list[j]
returnlist2.使用pip安裝任意一個(gè)第三方包,引入該包并測試包中的函數(shù)。#pipinstallnumpyimportnumpyasnpx=np.array([0,30,45,60,90])print('sin(x)')print(np.sin(x*np.pi/180))print('cos(x)')print(np.cos(x*np.pi/180))print('tan(x)')print(np.tan(x*np.pi/180))第7章字符串與正則表達(dá)式一選擇題下列哪個(gè)格式符代表有符號的八進(jìn)制數(shù)()A.%xB.%cC.%oD.%e2.下列哪個(gè)函數(shù)可以返回在字符串中找到的第一個(gè)子串的位置()A.str.rfindB.str.findC.str.countD.str.ljust3.最早通用的編碼系統(tǒng)為()A.UnicodeB.GB2312C.UTF-8D.ASCII4.以下數(shù)量限定詞表示匹配前面的子表達(dá)式一次或多次的是()A.*B.+C.?D.!5.以下字符串作為pile()函數(shù)的參數(shù)傳入時(shí),最終可以匹配’\’的是()A.\B.\\C.\\\\D.以上均不對二判斷題str.isalnum()的功能是如果字符串中的所有字符都是字母且串非空,則該函數(shù)將返回True,否則返回False。()在Python3.x中,所有字符串均以Unicode方式存儲,因此可以直接創(chuàng)建中文字符串。()UTF-8編碼每個(gè)字符被編碼為4字節(jié)()使用”\w+\s\w+”可以匹配”HelloWorld”()使用已經(jīng)編譯好的正則表達(dá)式對象進(jìn)行匹配會比字符串匹配快()三填空題1.定義mystr="HelloWorld",則mystr[0:5]的值為字符串"______"。2.定義str2='*'*5,則str2的值為字符串"______"。3.調(diào)用"-".join(["How","Are","You"])將返回字符串"______"。4.調(diào)用pile(pattern)將返回一個(gè)”______”5.調(diào)用re.match(pattern,string)如果匹配不成功,應(yīng)該返回“______”四簡答題1.字符串支持哪些基本操作?試舉例說明。2.字符串支持的%操作符有何意義?3.試簡述字符編碼與字符的關(guān)系。4.正則表達(dá)式的主要用途5.可選參數(shù)flags有什么答案一選擇題C2.B3.D4.B5.C二判斷題×2.√3.×4.√5.√三填空題Hello2.*****3.How-Are-You4.正則表達(dá)式對象5.None四簡答題1.①下標(biāo)訪問:字符串可以使用下標(biāo)來訪問該位置的單個(gè)字符。例如,定義mystr="python",則mystr[0]的值為字符串"p"。但是使用下標(biāo)只能進(jìn)行讀取操作,而無法進(jìn)行寫入操作。②切片操作:使用切片操作可以按位置提取出字符串的某個(gè)子串。例如,定義mystr="HelloWorld",則mystr[0:5]的值為字符串"Hello"。③字符串拼接與復(fù)制:使用+和*可以實(shí)現(xiàn)字符串的拼接和復(fù)制。例如,定義str1="Hello"+''+"World",str2='*'*5,則str1的值為字符串"HelloWorld",str2的值為字符串"*****"。另外,使用增強(qiáng)型賦值運(yùn)算符+=和*=也是可以的。④in/notin運(yùn)算符:使用in/notin運(yùn)算符可以判斷一個(gè)字符串是否為另一個(gè)字符串的子串。例如,表達(dá)式'He'in'Hello'將返回True。⑤比較運(yùn)算符:比較運(yùn)算符可以用來對字符串進(jìn)行比較。字符串的比較規(guī)則是字典序,即從兩個(gè)字符串的第一個(gè)字符開始,依次比較每個(gè)對應(yīng)位置字符的ASCII碼值,直到出現(xiàn)不一樣的兩個(gè)字符或者兩個(gè)字符串所有字符都比較完畢為止。例如,表達(dá)式'Jane'>'Jake'將返回True,表達(dá)式'hello'=='Hello'將返回False。⑥for循環(huán)遍歷字符串:字符串也是可迭代對象,因此可以使用for循環(huán)來順序遍歷字符串中的每個(gè)字符。例如,執(zhí)行下面的語句將依次打印字符串的所有字符:forchinmystr:print(ch,end='')上面代碼執(zhí)行的結(jié)果與直接執(zhí)行語句print(mystr,end='')相同。2.字符串有一個(gè)獨(dú)特的內(nèi)置操作:%操作符(也被稱為字符串格式化操作符)。使用這一操作符可以創(chuàng)建格式化的字符串,其語法格式類似于“format%values”,其中,format是帶有格式符的模板字符串,values是若干個(gè)值,這一操作會將format串中的格式符替換為values中的值。3.字符編碼是一種將字符映射為二進(jìn)制數(shù)字的方式,使得計(jì)算機(jī)能夠存儲和處理文本數(shù)據(jù)。每個(gè)字符都對應(yīng)著一個(gè)唯一的編碼值。要將字符按照一定規(guī)則對應(yīng)為一位二進(jìn)制數(shù)以存儲在計(jì)算機(jī)中,這個(gè)過程稱為編碼;將存儲在計(jì)算機(jī)中的二進(jìn)制數(shù)轉(zhuǎn)換成所對應(yīng)的的字符以顯示出來,這個(gè)過程稱為解碼。4.正則表達(dá)式是一種字符串匹配的模式,可以用來檢查一個(gè)字符串是否含有某種子串、將匹配的子串替換或者從某個(gè)串中取出符合某個(gè)條件的子串等。正則表達(dá)式(regularexpression)描述了一種字符串匹配的模式(pattern),可以用來檢查一個(gè)串是否含有某種子串、將匹配的子串替換或者從某個(gè)串中取出符合某個(gè)條件的子串等。5.在Python中,re包中的flags參數(shù)是可選的,用于控制正則表達(dá)式的匹配方式。flags參數(shù)可以是一個(gè)或多個(gè)標(biāo)志,它們可以通過按位或運(yùn)算符組合在一起。re包中的flags參數(shù)有以下幾種作用:re.IGNORECASE:忽略大小寫匹配。re.MULTILINE:多行匹配,改變’^‘和’$'的行為。re.DOTALL:使’.'匹配包括換行符在內(nèi)的所有字符。re.UNICODE:使’\w’,‘\W’,‘\b’,‘\B’,‘\d’,‘\D’,‘\s’和‘\S’取決于Unicode字符屬性。re.LOCALE:使’\w’,‘\W’,‘\b’,‘\B’取決于當(dāng)前區(qū)域設(shè)定。1.早期手機(jī)的鍵盤如圖7-7所示。要輸入英文字母,需要按下鍵盤上所對應(yīng)的數(shù)字鍵。例如,字母J對應(yīng)5鍵,S對應(yīng)7鍵,而空格對應(yīng)0鍵?,F(xiàn)編寫程序,用戶輸入一個(gè)只包含大寫字母與空格的字符串,程序輸出對應(yīng)的鍵盤上數(shù)字的字符串。例如,用戶輸入字符串“HELLOWORLD”,則程序應(yīng)當(dāng)輸出“43556096753”。keyboard={
'A':'2','B':'2','C':'2',
'D':'3','E':'3','F':'3',
'G':'4','H':'4','I':'4',
'J':'5','K':'5','L':'5',
'M':'6','N':'6','O':'6',
'P':'7','Q':'7','R':'7','S':'7',
'T':'8','U':'8','V':'8',
'W':'9','X':'9','Y':'9','Z':'9',
'':'0'}s=input()result=''forcins:
result+=keyboard[c]print(result)2.編寫程序,用戶輸入一個(gè)以十六進(jìn)制數(shù)表示的數(shù)字,程序輸出對應(yīng)的十進(jìn)制數(shù)。例如,用戶輸入“12CF”,則程序應(yīng)輸出“4815”。hex=input()dec=int(hex,16)print(dec)3.編寫一個(gè)函數(shù)來返回兩個(gè)字符串的最長公共前綴。例如,“dislike”和“discourage”的最長公共前綴是“dis”。函數(shù)頭應(yīng)定義為deflcp(s1,s2):deflcp(string1,string2):res=list()foriinrange(len(string1)):ch=string1[i]ifstring2[i]==ch:res.append(ch)else:return"".join(res)4.一些網(wǎng)站對用戶輸入的密碼有一定要求。編寫函數(shù)來檢測用戶輸入的字符串是否為合法的密碼。假設(shè)密碼規(guī)則如下:①至少包含8個(gè)字符。②密碼只能包含英文字母、數(shù)字和下劃線。③在大寫字母、小寫字母、數(shù)字這三類字符中,密碼至少包含兩類。程序提示用戶輸入一段字符串作為密碼,如果密碼合法就輸出“Validpassword”,否則輸出“Invalidpassword”。importrestring=input()po=pile("[a-zA-z0-9_]{8,}")wa1=pile("[a-z_]{8,}")wa2=pile("[A-Z_]{8,}")wa3=pile("[0-9_]{8,}")ifre.match(po,string):ifre.match(wa1,string)orre.match(wa2,string)orre.match(wa3,string):print("Invalidpassword")else:print("Validpassword")else:print("Invalidpassword")第八章面向?qū)ο缶幊桃贿x擇題Python中的數(shù)據(jù)成員和函數(shù)成員默認(rèn)都是()的A.publicB.privateC.protectD.無法被訪問2.Python將以()開始的成員(但不能由雙下劃線結(jié)束)定義為私有成員A.數(shù)字B.單下劃線C.字母D.雙下劃線3.加法操作對應(yīng)()A.__add__(self,other)B.__sub__(self,other)C.__mul__(self,other)D.__and__(self,other)4.通過(),可以吸收現(xiàn)有類的數(shù)據(jù)和行為來創(chuàng)建新類,并添加新的性能來增強(qiáng)此類。A.繼承B.重載C.類D.對象5.派生類定義一個(gè)與基類同名的函數(shù);當(dāng)對象訪問該函數(shù)時(shí),派生類的函數(shù)會()A.覆蓋基類的函數(shù)B.調(diào)用基類的函數(shù)C.調(diào)用基類和派生類的函數(shù)D.基類和派生類的函數(shù)均不調(diào)用6.在派生類定義的函數(shù)中,如果想調(diào)用基類的同名函數(shù),則需要在函數(shù)名前添加()作為限定A.雙下劃線B.基類名和點(diǎn)操作符C.括號D.下劃線7關(guān)于Python多態(tài)以下選項(xiàng)正確的是()A.大多數(shù)面向編程語言都不支持多態(tài)特性B.Python本事不是多態(tài)語言C.Python支持多態(tài)D.Python不支持多態(tài)8關(guān)于面向?qū)ο缶幊滔铝姓f法正確的是()A.面向?qū)ο缶幊痰囊粭l基本原則是計(jì)算機(jī)程序是由單個(gè)能夠起到子程序作用的單元或?qū)ο蠼M合而成的B.面向?qū)ο蠓椒ń鉀Q問題的思路就是主張從客觀世界固有的事物出發(fā)來構(gòu)造系統(tǒng),提倡用人類在現(xiàn)實(shí)生活中常用的思維方法來認(rèn)識、理解和描述客觀事物C.面向?qū)ο蠓椒ㄊ且环N運(yùn)用一系列面向?qū)ο蟮闹笇?dǎo)軟件構(gòu)造的概念和原則(如類、對象、抽象、封裝、繼承、多態(tài)、消息等)來構(gòu)造軟件系統(tǒng)的開發(fā)方法D.ABC9關(guān)于類和對象下列說法正確的是()對象是存在于某個(gè)時(shí)空的具體實(shí)體,而類則是擁有共同的結(jié)構(gòu)、行為和語義的一組對象的抽象類可以作為對象的一種描述機(jī)制,用來形成程序中更大的模塊類和對象的關(guān)系就好像數(shù)據(jù)類型和變量的關(guān)系。各個(gè)對象可以同屬于一個(gè)類,但擁有彼此獨(dú)立的屬性。對象是類的實(shí)例,可以創(chuàng)建類的多個(gè)對象ABC10關(guān)于類成員下列說法正確的是()Python中的數(shù)據(jù)成員和函數(shù)成員默認(rèn)都是公開(public)的,即成員在類外可以被訪問利用地圖做長尾關(guān)鍵詞避免數(shù)據(jù)成員被直接修改的方法是將其設(shè)置為私有(private)成員Python中將以雙下劃線開始的成員定義為私有成員ABC二判斷題1.Python允許函數(shù)重載。 ()self指向的是當(dāng)前創(chuàng)建的對象,Python解釋器會自動進(jìn)行傳入。 ()self參數(shù)表示函數(shù)的調(diào)用者被隱式地傳遞到函數(shù)中,在函數(shù)體內(nèi)可以使用self參數(shù)來代表調(diào)用對象訪問其成員。 ()在將數(shù)據(jù)成員設(shè)置為私有后,為了在類外可以操作成員的值需要提供get函數(shù)來獲取值和set函數(shù)來設(shè)置值。 ()迭代是Python中一個(gè)很強(qiáng)大的功能,是訪問集合元素的一種方式,利用迭代器可以進(jìn)行優(yōu)雅的遍歷。 ()__iter__()方法返回一個(gè)迭代器對象。 ()一個(gè)類(Circle類)的成員也可以是另一個(gè)類(Point類)的對象。()派生類不能夠根據(jù)自己的特殊性質(zhì)定義新的成員。()派生類雖然繼承了基類的數(shù)據(jù)成員,但由于它們都是私有成員,因此在派生類中不可訪問,只能通過基類定義的公開函數(shù)成員進(jìn)行訪問。 ()在定義了派生類后,派生類所構(gòu)造的對象既可以訪問繼承自基類的成員,又可以訪問派生類自己定義的成員。 ()三填空題1.避免數(shù)據(jù)成員被直接修改的方法是將其設(shè)置為成員。2.Python將以開始的成員(但不能由雙下劃線結(jié)束)定義為私有成員。3.解釋器會拋出-來表示該成員不能在類外部訪問。4.如果想要獲取一個(gè)自定義的類的迭代器,需要在類中實(shí)現(xiàn)和方法。5.當(dāng)創(chuàng)建一個(gè)新類時(shí),并不需要創(chuàng)建全新的數(shù)據(jù)成員和函數(shù),可以指明這個(gè)類繼承某個(gè)現(xiàn)有的類。這時(shí),現(xiàn)有的類被稱為-,繼承實(shí)現(xiàn)的新類被稱為。6.在Python中,私有函數(shù)(可以/不可以)被覆蓋。7.在派生類定義的函數(shù)中,如果想調(diào)用基類的同名函數(shù),則需要在函數(shù)名前添加作為限定。8.除了數(shù)據(jù)成員可以設(shè)置為私有成員之外,一些不希望在類外調(diào)用的函數(shù)也可以設(shè)置為。9.通過,可以吸收現(xiàn)有類的數(shù)據(jù)和行為來創(chuàng)建新類,并添加新的性能來增強(qiáng)此類。10.在定義了派生類后,派生類所構(gòu)造的對象既可以訪問的成員,又可以訪問的成員。四簡答題編寫一個(gè)Fraction類來管理分?jǐn)?shù)類型并提供一些運(yùn)算和操作。簡述Python中的繼承。簡述Python的isinstance函數(shù)。先設(shè)計(jì)一個(gè)Point類來表示平面中的點(diǎn)。Point類包含兩個(gè)數(shù)據(jù)成員,用來表示平面坐標(biāo)。再設(shè)計(jì)Circle類來表示圓。Circle類使用一個(gè)Point類的數(shù)據(jù)成員來表示圓心位置,使用另一個(gè)數(shù)據(jù)成員表示半徑大小。定義一個(gè)學(xué)生信息類。答案 一選擇題A2.D3.A4.A5.A6.B7.D8.D9.D10.D二判斷題×2.√3.√4.√5.√6.√7.√8.×9.√10.√三填空題1.private2.雙下劃線3.AttributeError4.__iter__()__next__()5.基類派生類6.不可以7.基類名和點(diǎn)操作符8.私有9.繼承10.基類派生類四簡答題1.代碼如下1 classFraction:2
#構(gòu)造函數(shù)3
def__init__(self,a=0,b=1):4
ifb==0:5
raiseZeroDivisionError("Denominatorcan'tbezero.")6
divisor=gcd(abs(a),abs(b))7
self.__numerator=(-1ifb<0else1)*a//divisor8
self.__denominator=abs(b)//divisor910
#重載加法運(yùn)算符11
def__add__(self,other):12
m=self.__denominator*other.__denominator13
n1=self.__numerator*other.__denominator14
n2=other.__numerator*self.__denominator15
returnFraction(n1+n2,m)1617
#重載減法運(yùn)算符18
def__sub__(self,other):19
m=self.__denominator*other.__denominator20
n1=self.__numerator*other.__denominator21
n2=other.__numerator*self.__denominator22
returnFraction(n1-n2,m)2324
#重載乘法運(yùn)算符25
def__mul__(self,other):26
m=self.__numerator*other.__numerator27
n=self.__denominator*other.__denominator28
returnFraction(m,n)2930
#重載除法運(yùn)算符31
def__truediv__(self,other):32
m=self.__numerator*other.__denominator33
n=self.__denominator*other.__numerator34
returnFraction(m,n)3536
#重載乘方運(yùn)算符37
def__pow__(self,power,modulo=None):38
n=pow(self.__numerator,power,modulo)39
m=pow(self.__denominator,power,modulo)40
returnFraction(n,m)4142
#重載比較運(yùn)算符43
def__lt__(self,other): result=self.__sub__(other) returnresult.__numerator<0 def__le__(self,other): result=self.__sub__(other) returnresult.__numerator<=0 def__gt__(self,other): result=self.__sub__(other) returnresult.__numerator>0 def__ge__(self,other): result=self.__sub__(other) returnresult.__numerator>=0 def__eq__(self,other): result=self.__sub__(other) returnresult.__numerator==0 def__ne__(self,other): result=self.__sub__(other) returnresult.__numerator!=04647
#重載int函數(shù),將分?jǐn)?shù)值取整48
def__int__(self):49
returnself.__numerator//self.__denominator5051
#重載float函數(shù),將分?jǐn)?shù)化為浮點(diǎn)值52
def__float__(self):53
returnself.__numerator/self.__denominator5455
#重載str函數(shù),使Fraction類對象可打印56
def__str__(self):57
ifself.__denominator==1:58
return"%d"%self.__numerator59
else:60
return"%d/%d"%(self.__numerator,self.__denominator)6162
#全局函數(shù),計(jì)算最大公約數(shù)63
defgcd(m,n):64
whilen>0:
m,n=n,m%n
returnm2.繼承是面向?qū)ο蟪绦蛟O(shè)計(jì)中的一個(gè)重要且功能強(qiáng)大的特性。通過繼承,可以吸收現(xiàn)有類的數(shù)據(jù)和行為來創(chuàng)建新類,并添加新的性能來增強(qiáng)此類。繼承指的是類之間的一般與特殊的關(guān)系。當(dāng)創(chuàng)建一個(gè)新類時(shí),并不需要創(chuàng)建全新的數(shù)據(jù)成員和函數(shù),可以指明這個(gè)類繼承某個(gè)現(xiàn)有的類。這時(shí),現(xiàn)有的類被稱為基類、父類或超類,繼承實(shí)現(xiàn)的新類被稱為子類或派生類。派生類代表了一組更加特殊的對象。通常,派生類包含了從基類繼承而來的數(shù)據(jù)和方法,并進(jìn)行了自己的擴(kuò)充。在定義了派生類后,派生類所構(gòu)造的對象既可以訪問繼承自基類的成員,又可以訪問派生類自己定義的成員。需要注意的是,派生類雖然繼承了基類的數(shù)據(jù)成員,但由于它們都是私有成員,因此在派生類中不可訪問,只能通過基類定義的公開函數(shù)成員進(jìn)行訪問。3.isinstance函數(shù)接收object和classinfo兩個(gè)參數(shù)。object參數(shù)是一個(gè)類的實(shí)例,classinfo參數(shù)是一個(gè)類名。如果object對象是classinfo類的一個(gè)直接實(shí)例或間接實(shí)例(即object所屬的類是classinfo類的直接派生類或間接派生類),則該函數(shù)返回True,否則返回False。例如,對于代碼清單8-11中定義的stu對象,調(diào)用isinstance(stu,CollegeStudentInfo)和isinstance(stu,StudentInfo)函數(shù)均返回True。4.1
importmath23
classPoint:4
#構(gòu)造函數(shù)5
def__init__(self,x=0,y=0):6
self.__x=x7
self.__y=y89
#設(shè)置坐標(biāo)10
defsetPosition(self,x=0,y=0):11
self.__x=x12
self.__y=y1314
#獲取坐標(biāo)15
defgetPosition(self):16
return(self.__x,self.__y)1718
#平移坐標(biāo)19
defmove(self,dx,dy):20
self.__x+=dx21
self.__y+=dy2223
#計(jì)算到另一個(gè)點(diǎn)的直線距離24
defdistanceTo(self,other):25
2627
#重載減法運(yùn)算符28
def__sub__(self,other):29
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年農(nóng)村土地轉(zhuǎn)讓合同范本
- 2025合同條款優(yōu)化策略
- 2025工程大學(xué)橫向科技合同審批表
- 河北省邱縣2024~2025學(xué)年 高一下冊4月檢測數(shù)學(xué)試卷附解析
- 基于人工智能的文化遺產(chǎn)修復(fù)技術(shù)研究-洞察闡釋
- 社區(qū)大數(shù)據(jù)與社區(qū)信息化教育基礎(chǔ)知識點(diǎn)歸納
- 2025年施工單位管理人員年度培訓(xùn)考核試題
- 變井徑環(huán)空注水泥頂替流動及旋流扶正器的改善作用
- 廣西柳州市2025屆高三下學(xué)期高考前適應(yīng)性練習(xí)測試十六物理試卷(含答案)
- 綠色物流與可持續(xù)發(fā)展-第4篇-洞察闡釋
- 愛眼日小學(xué)生護(hù)眼課件
- 2025年江蘇南京市河西集團(tuán)招聘筆試參考題庫含答案解析
- 大數(shù)據(jù)思維與技術(shù)知到智慧樹章節(jié)測試課后答案2024年秋北京理工大學(xué)
- 相控陣培訓(xùn)課件
- 天津外國語大學(xué)《形式與政策國防教育》2023-2024學(xué)年第一學(xué)期期末試卷
- 《湖南省工程勘察設(shè)計(jì)收費(fèi)指導(dǎo)標(biāo)準(zhǔn)》
- 2024-2030年中國環(huán)境影響評價(jià)行業(yè)轉(zhuǎn)型升級模式及投資規(guī)劃分析報(bào)告
- 電力建設(shè)安全操作指南火力發(fā)電廠安全規(guī)定
- 《休克新進(jìn)展》課件
- 廣東省2024年中考生物試卷(含答案)
- 高速公路行業(yè)數(shù)據(jù)資產(chǎn)入表研究
評論
0/150
提交評論