




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第一章Python語言概述一選擇題1.下列哪一項不屬于python的優勢()A.易于掌握 B.模塊化 C.語言簡潔 D.運行速度快2.下列哪一項開發工具不能使用python語言()A.IDLE B.VisualStudio C.DevC D.Pycharm3.Pycharm內運行代碼的快捷鍵是()A.Alt+Shift+F10 B.F10 C.ctrl+F10 D.F114.下列哪一項不是python的注釋方法()A.#注釋 B.“’注釋“’ C.//注釋 D.”””注釋”””5.下列哪一項在python中是合法的變量名()A.#abs B.stu_buaa C.1re D.%s17二判斷題Python語言以對象為核心組織代碼,支持多種編程范式,采用動態類型并且自帶內存回收機制。()Python中變量需要明確聲明,直接賦值就可以使用變量。()PyCharm具有一般IDE具備的功能,如調試、語法高亮、Project管理、代碼跳轉、智能提示、自動完成、單元測試、版本控制等。()Python在面向對象編程中沒有提供顯式的靜態、成員、私有、公有等聲明性標識符。()Python的代碼縮進可以混用制表符和空格符。()三填空題1.官方提供了Python2.x和----------兩個版本。2.VSCode(VisualStudioCode)是----------開發的簡化且高效的代碼編輯器。3.Python直接使用----------來表示語句的結束。4.合理使用注釋能夠對代碼進行良好的說明,增強代碼的----------。5.Python同樣支持在多行中書寫一條語句,此時需要使用----------添加到行末。四簡答題1.簡要說明Python這一編程語言的幾大特點。2.舉例說明如何應用Python的編碼規范。3.簡要說明PyCharm相比IDLE有什么優勢。4.概述如何用Python在控制臺輸出helloworld。5.說明寫注釋有什么好處。答案 一選擇題D2.C3.A4.C5.B二判斷題√2.×3.√4.√5.×三填空題Python3.x2.Microsoft3.換行4.可讀性5.反斜杠(\)四簡答題1.可擴展,語法精簡,跨平臺,動態語言,面向對象,具有豐富的數據結構,健壯性,強大的社區支持2.變量的命名要規范,不要有意義不明的變量名;代碼縮進要用制表符,防止代碼混亂3.提供了一些很好的用于Django開發的功能,同時,其支持GoogleAppEngine和IronPython。4.print(“Hello,World”)并運行5.注釋可用來標注該處代碼的作用,合理使用注釋能夠對代碼進行良好的說明,增強代碼的可讀性。helloWorld.py1 print("Hello,World")#displaytexttestIndent.py1 x=02 ifx<3:3
x=x+14
print(x)5 print('end')blankLine.py1 deffunA():2
print("funA")3
4 deffunB():5
print("funB")6
7 deffunC():8
print("funC")第二章python基本概念一選擇題下列哪一項不屬于python的基本數據類型()A.整型B.復數C.浮點型D.指針2.下列哪一項不是python中可取的變量名()A.aB.Li_HuaC.ifD.s1y23.python中的運算符in是以下哪種運算符()A.成員運算符B.位運算符C.邏輯運算符D.關系運算符4.python導入外部模塊時使用以下哪種語句()A.includeB.importC.insertD.inform5.下列哪一項是python的基本輸出函數名()A.printB.printfC.putsD.output二判斷題Python的基本數據類型包括整型、浮點型、字符串、布爾值和空值等。()Python對變量的標識符大小寫不敏感。()Python中的變量在使用前不需要進行聲明數據類型。()對于python中的變量a,語句a++的含義與語句a+=1的含義一致。()Python中的input()函數輸出類型任意。()三填空題1.在python中,當所創建的整數大小超過普通整數取值范圍時將自動創建為長整數,可以通過對數字添加后綴來手動創建一個長整數。2.空值是Python中的一個特殊的值,用來表示。3.關系運算符又稱比較運算符,其作用是比較兩個操作數的大小并返回一個。4.python中的“+=”、“*=”等一類運算符,具體被稱為。5.math模塊還定義了數學常量π,使用來對其進行訪問。四簡述題1.Python有哪幾種基本數據類型?分別介紹其作用。2.Python有幾類運算符?分別介紹其作用。3.什么是增強型賦值運算符?4.簡要介紹python中的random模塊中的函數。5.簡要介紹python中的幾個數學運算函數。另實踐題1.編寫Python程序輸出下列數學表達式的值。(1)QUOTExy+(5z+14)2,x=4,y=2,z=1(2)QUOTE。2.假如你想把一筆錢以固定年利率存入賬戶。當你將其存入賬戶若干年后,其中一共應有多少錢?計算公式為3.編寫一個程序,提示用戶輸入三角形的三個頂點(x1,y1)、(x2,y2)、(x3,y3),然后輸出三角形的面積。計算三角形面積的公式如下:其中,a、b、c分別代表三角形的三條邊長。答案 一選擇題D2.C3.A4.B5.A二判斷題√2.×3.√4.×5.×三填空題L或l2.None3.布爾值4.增強型賦值運算符5.math.pi四簡答題1.Python的基本數據類型包括整型、浮點型、字符串、布爾值和空值等。【整型】Python可以處理任意大小的整數,包括負整數。十進制整數的表示方式與數學上的寫法相同,如10、-255、0、2016等。此外,Python還支持十六進制、八進制和二進制整數。十六進制整數需要用0x或0X作為前綴,用0~9和a~f(或A~F)作為基本的16個數字,如0xffff、0X4F5DA2等。八進制整數需要用0o作為前綴,用0~7作為基本的8個數字,如:0o11、0o376等。二進制整數需要用0b或0B作為前綴,用0和1作為基本數字,如0b1010、0B10110等。【浮點型】在Python中,浮點型用來表示實數,在絕大多數情況下用于表示小數。浮點數可以使用普通的數學寫法,如1.234、-3.14159、12.0等。對于特別大或特別小的浮點數,可以使用科學計數法表示,如-1.23e11、3.2e-12等。其中,使用字母e或E來表示10的冪。因此,前面的兩個例子可表示為-1.23×1011和3.2×10-12。【復數】除整數和浮點數外,Python也提供了復數作為其內置類型之一,如3+2j、7-2j等。其中,j代表虛數單位。【字符串】字符串是使用單引號或雙引號括起來的任意文本,如'HelloWorld',"Python"等。注意,引號本身不是字符串的一部分,只說明了字符串的范圍。例如,字符串'ab'只包含a和b兩個字符。使用''或""可以表示空字符串。一個字符串使用哪種引號開頭就必須以哪種引號結束。例如,字符串"I'm"包含了I、'、m三個字符,字符串的結束是雙引號而非單引號。【布爾值】布爾值即真(True)或假(False)。在Python中,可以直接使用True或False表示布爾值。當把其他類型轉換成布爾值時,值為0的數字(包括整型0,浮點型0.0等)、空字符串、空值(None)、空集合被認為是False,其他值均被認為是True。【空值】空值是Python中的一個特殊的值,用None來表示。2.Python中的運算符包括:算術運算符、關系運算符、邏輯運算符、位運算符、身份運算符和成員運算符等。算術運算符用于對操作數進行各種算術運算。關系運算符又稱比較運算符,其作用是比較兩個操作數的大小并返回一個布爾值。邏輯運算符用來對布爾值進行與、或、非等邏輯運算。身份運算符用于比較兩個對象的內存位置是否相同。成員運算符用于查找對象是否在某個序列中,序列包括字符串、列表和元組。3.Python允許將某些雙目運算符和賦值運算符結合使用來簡化將某個變量的值修改后復制給自身的語法。這種雙目運算符被稱為增強型賦值運算符。4.random.random():在0.0至1.0的區間內隨機返回一個浮點數。random.uniform(a,b):在a到b的區間內隨機返回一個浮點數。random.randint(a,b):在a到b的區間內隨機返回一個整數。5.abs(x):返回一個數的絕對值。max(arg1,arg2,*args):返回多個參數中的最大值。min(arg1,arg2,*args):返回多個參數中的最小值。pow(x,y):返回x的y次冪。round(number[,ndigits]):返回一個浮點數的近似值,保留小數點后ndigits位。另實踐題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())#輸入年數output=money*pow(1+rate,year)print(output)#樣例:#輸入本金:4000#輸入年利率:0.05#輸入年數:2#輸出:4410.03.importmath#數據輸入print('請輸入三個頂點坐標,使用空格隔開')print('請輸入第一個頂點坐標:')data1=input()print('請輸入第二個頂點坐標:')data2=input()print('請輸入第三個頂點坐標:')data3=input()#數據類型轉換與存儲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])#邊長運算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))#面積運算(海倫公式)s=(a+b+c)/2S=math.sqrt(s*(s-a)*(s-b)*(s-c))#輸出面積print(S)#樣例:#數據輸入:#00#40#03#輸出面積:6.0以上題目具體代碼見附件第三章Python控制結構一選擇題1.Python提供了結構化程序設計的3種基本結構,這3種基本結構是()A.遞歸結構、選擇結構、循環結構B.選擇結構、過程結構、順序結構C.過程結構、輸入輸出結構、轉向結構D.選擇結構、循環結構、順序結構2.以下保留字不屬于分支或循環語句的是()A.elseB.inC.forD.while3.python語言中用于表示代碼塊所屬關系的語法是()A.縮進B.冒號C.花括號D.括號4.以下關于Python循環結構的描述中,錯誤的是()A.continue只結束本次循環B.遍歷循環中的遍歷結構可以是字符串、文件、組合數據類型和range()函數等C.break用來結束當前當次語句,但不跳出當前的循環體D.Python通過for、while等保留字構建循環結構5.以下關于Python分支的描述中,錯誤的是()A.縮進是Python分支語句的語法部分,縮進不正確會影響分支功能B.Python分支結構使用保留字if、elif和else來實現,每個if后面必須有elif或elseC.if語句會判斷if后面的邏輯表達式,當表達式為真時,執行if后續的語句塊D..if-else結構是可以嵌套的二判斷題在Python中,關系運算符可以連續使用,例如1<3<5等價于1<3and3<5。()如果僅僅是用于控制循環次數,那么使用foriinrange(20)和foriinrange(20,40)的作用是等價的。()帶有else子句的循環如果因為執行了break語句而退出的話,則會執行else子句中的代碼。()對于帶有else子句的循環語句,如果是因為循環條件表達式不成立而自然結束循環,則執行else子句中的代碼。()在條件表達式中允許使用賦值運算符“=”,不會提示語法錯誤。()三填空題Python提供了if語句、if-else語句以及語句來支持選擇結構。在循環語句中,__________語句的作用是提前結束本層循環。在循環語句中,_______語句的作用是提前進入下一次循環。______________語句是else語句和if語句的組合。使用嵌套的if語句時,需要更加注意代碼的,因為這決定了代碼是處在哪一級代碼塊中的,從而影響程序的邏輯是否被正確地實現。四簡答題1.簡述三種基本控制結構的作用。2.while循環和for循環有哪些區別?3.舉例說明break語句和continue語句的作用。4.寫出Python的選擇語句包括哪幾種常用的形式?5.if語句中的表達式可以是哪些形式?答案 一選擇題D2.B3.A4.C5.B二判斷題√2.√3.×4.√5.×三填空題If-elif-else2.break3.continue4.if-else5.縮進四簡答題順序結構是最簡單的控制結構,即按照語句的書寫順序依次執行。本書前面的示例代碼均是順序結構。選擇結構又稱分支結構,它表示根據程序運行時的某些特定條件來選擇其中一個分支執行。選擇結構可以分為單選擇結構、雙選擇結構和多選擇結構。循環結構指程序在滿足某條件時會反復執行某些操作。循環結構可以分為當型循環和直到型循環。循環結構作為程序設計中最能發揮計算機特長的基本控制結構,可以減少程序代碼重復書寫的工作量。while循環是通過一個條件來控制是否要繼續反復執行循環體中的語句。它的語法格式如下:while條件表達式:循環體for循環是一個計次循環,一般應用在循環次數已知的情況下。通常適用于枚舉或遍歷序列,以及迭代對象中的元素。它的語法格式如下:for迭代變量in對象:循環體其中,迭代變量用于保存讀取出的值;對象為要遍歷或迭代的對象,該對象可以是任何有序的序列對象,如字符串、列表和元組等;循環體為一組被重復執行的語句。當break語句出現在一個循環體內時,(如滿足條件)循環就會立即終止,且程序將繼續執行緊接著循環的下一條語句。從圖1中可以看出,在for循環中,當i的值是3時,會調用break語句結束當前循環,此時的輸出為0-3,也就是說,當i等于3時,循環就被break語句結束了。continue語句的作用是跳過本次循環中剩余的語句而強制執行下一次循環。從圖2中可以看出,在for循環中,當i的值是2時,調用continue語句結束本次循環,此時不會執行print()語句而回到for語句開頭執行下一次循環。因此,此時的輸出結果中沒有2。Python中選擇語句主要有3種形式,分別為if語句、if…else語句和if…elif…else多分支語句。算術、字符、關系、邏輯。選擇題:以下幾段漢諾塔代碼,哪段是正確的(a)A.defhanoi(n,fromTower,auxTower,toTower):
ifn==1:#遞歸邊界條件,一步移動
print("Movedisk",n,"from",fromTower,"to",toTower)
else:
hanoi(n-1,fromTower,toTower,auxTower)#第一步,遞歸調用
hanoi(n-1,auxTower,fromTower,toTower)#第三步,遞歸調用 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)#第一步,遞歸調用
hanoi(n-1,auxTower,fromTower,toTower)#第三步,遞歸調用 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)#第一步,遞歸調用
hanoi(n-1,auxTower,fromTower,toTower)#第三步,遞歸調用 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)#第一步,遞歸調用
main(n-1,auxTower,fromTower,toTower)#第三步,遞歸調用 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,則以下函數的返回值為?1
defsort2(a,b):#函數按升序返回a、b兩個值2
ifa>b:3
returnb,a4
else:5
returna,bA:1,2B:2,1C:1,1D:2,2若輸入為1,2,3,5,7,則以下函數的返回值為:defsum(*p):res=0foriinp:res+=ireturnresA:6B:15C:18D:0判斷題:1.lambda函數是否被用于循環()2.生成器返回值依然需要用return實現()3.漢諾塔可以使用for循環實現()4.Python支持函數返回多個值()5.函數內部變量的作用域可以延伸到函數體外()填空題:1.定義函數需要函數頭,函數名,形參以及()2.基本的參數值傳遞有兩種方式分別是:()3.函數調用時沒有傳入沒寫參數值時,()會被傳遞給實參。4.同時賦值和函數返回多個值的語法都是使用了()的特性5.lambda函數與()函數功能相同。簡答題:封裝函數有什么好處?全局變量和局部變量有什么區別?請簡述。請簡述global語句的作用python中可變的對象包括,不可變的對象包括?Python中采用什么機制傳遞參數?答案:選擇題:1A2A3A4B5C判斷題:TRUETRUETRUETRUEFALSE填空題:1.函數體2.值傳遞和引用傳遞3.默認參數4.元組5.If簡答題:1.函數的實現細節被封裝在函數內,并對調用者隱藏,這被稱為信息隱藏或封裝。如果要修改或優化函數的實現,只要函數原型(函數名,參數個數及作用,返回值個數及作用等)不改變,用戶程序對函數的調用就不會受影響。將功能封裝為函數能夠將一個大問題分解為更小的、更易于解決的多個小問題。每個小問題都可以用函數實現。這種方法可以使程序易于編寫、重用、調試、測試、修改和維護。2.在函數體內部定義的變量叫做局部變量,在函數體外部定義的變量叫做全局變量。局部變量只能在定義的那個函數體的內部進行使用,而全局變量在所有函數內部都可以使用。.局部變量的生命周期為該變量創建到該函數體結束。全局變量可以貫穿整個程序。3.在Python中,global
關鍵字允許你修改當前范圍之外的變量。它用于創建全局變量并在本地上下文中更改變量。不使用global和nonlocal語句在函數內部對全局變量的訪問限于讀取以及自運算(如“+=”、“*=”等運算),而不可能使用賦值運算符進行直接賦值(會被解釋為創建同名的局部變量)。4.不可變對象包括數字(整型、浮點型、布爾型等)、字符串、元組[1]元組、列表和字典類型將在本書第5章中進行詳細講解。1][1]元組、列表和字典類型將在本書第5章中進行詳細講解。5.Python參數傳遞采用的是“傳對象引用”的方式。這種方式相當于傳值和傳引用的一種結合。簡單來說,這種方式在函數內部對形參所指向的對象的修改可以影響到函數外部,但形參變量本身不能修改指向其他對象。簡述題1.在程序設計過程中,有很多操作的功能是非常相似甚至完全相同的。定義一個函數,可以創建可重用代碼。函數不僅可以實現代碼的復用,還可以保證代碼的一致性,使程序易于編寫、重用、調試、測試、修改和維護。位置參數要求參數按照函數定義時的順序進行傳遞:例如,定義函數divide如下:defdivide(a,b):returna/b關鍵字參數調用函數通過類似“name=value”的格式傳遞每個參數:例如,上面的divide函數同樣可以通過divide(a=6,b=2)的方法來調用。3.將直接或間接調用自身的函數稱為遞歸函數,將使用遞歸函數來解決問題的編程技巧稱為遞歸。遞歸是一種廣泛應用的程序設計技術。遞歸能夠將一個大型的、復雜的問題層層轉換為一個與原問題相似的小規模問題來求解,給出一個自然、直觀、簡單的解決方案。二、實踐題:1..defcelsiusToFahrenheit(celsius):Fahrenheit=celsius*1.8+32returnFahrenheitdeffahrenheitToCelsius(fahrenheit):Celsius=(fahrenheit-32)/1.8returnCelsius2.defscoretoGPA(N):#N為課程門數GPA=0;GROCE=0foriinrange(N):x,b=map(float,input().split())GROCE=GROCE+bifx>=60:#
如果大于
60
分,用相應的公式計算。如果小于
0
,就成績為
0GPA=GPA+(4-3*((100-x)*(100-x))/1600)*belse:GPA=GPAprint("%.2f"%(GPA/GROCE))3.defsumDigits(n):string=str(n)ans=0foriinstring:ans+=int(i)returnansn=int(input())print(sumDigits(n))4.classSolution:defpermutation(self,s):iflen(s)<=1:return[s]str_list=[]foriinrange(len(s)):forjinself.permutation(s[0:i]+s[i+1:]):str_list.append(s[i]+j)returnstr_lista=''b=[]b=input()foreleinb:a+=str(ele)s=Solution()c=s.permutation(a)foreleinc:print(ele,sep='',end='')習題選擇題如何在Python中創建一個空集合?A.set{}B.set()C.{}D.[]2.如何使用切片操作來獲取列表my_list的從第2個元素到倒數第3個元素(包括本身)的所有元素?A.my_list[1:-3]B.my_list[2:-2]C.my_list[1:-2]D.my_list[2,-3]3.關于以下程序輸出結果的描述,正確的選項是:????????????????????????????????????????????????l=[1,2,3,4,5,6,7]
print(l.pop(0),len(l))
A.16170706在Python中,下列哪個選項是正確的元組拆包(tupleunpacking)語法?a,b=(1,2)ab=(1,2)(a,b)=1,2a,b->(1,2)在Python中,下列哪種方法可以實現對字典的合并(不會改變原字典)?A.dict1+dict2B.dict1.extend(dict2)C.{**dict1,**dict2}D.dict1.update(dict2)對錯題Python3中的字典和集合都是有序存儲的。在Python中使用列表推導式時,可以使用if語句進行條件過濾,但不能使用elif或else語句列表切片得到的列表中的數據是原有數據的拷貝,而不是原有列表的元素。列表在存取元素時要比元組慢。在Python中,要檢查一個元素是否在字典中,與檢查一個元素是否在集合中的時間復雜度相同。填空題可以使用一行代碼:獲取my_list=[1,2,3,4,5,6]中所有3的倍數的元素組成的列表。使用_______方法可以向字典中添加一個新的鍵值對。在執行x,y,z=input().split()時,發生了序列的過程。使用生成一個以4為開始,10為結束的,每次遞增2的等差數列._______內置函數可以將一個列表轉換為集合。簡答題簡要說明列表、元組、集合與字典這幾種數據結構的相同點和不同點。列表查找有幾種方法?每種方法的主要特點是什么?什么是元組封裝和序列拆封?這兩種特性如何在編程中應用?試舉例說明。集合和字典的底層數據結構是怎么實現的?請簡要敘述列表、元組、集合、字典這四種不同數據結構適合什么樣的應用場景。答案:選擇題BCAAC對錯題FTFTT填空題[iforiinmy_listifi%3==0]update拆包/拆封range(4,10,2)set()簡答題相同點:都可以存儲一系列數據。支持使用in關鍵字進行成員檢查。支持使用len()函數獲取元素數量。不同點:列表(List):有序的可變數據結構,使用方括號`[]`表示。列表中的元素可以是不同的數據類型,支持添加、刪除、修改操作。列表支持索引和切片。元組(Tuple):有序的不可變數據結構,使用圓括號`()`表示。元組中的元素可以是不同的數據類型,但是不支持添加、刪除、修改操作。元組支持索引和切片。集合(Set):無序的可變數據結構,使用花括號`{}`表示。集合中的元素必須是唯一的,不支持重復。集合中的元素必須是不可變數據類型(如數字、字符串、元組等)。集合支持添加、刪除操作,但不支持修改操作。集合不支持索引和切片。字典(Dictionary):無序的可變數據結構,(Python3中變得有序)使用花括號`{}`表示。字典是鍵值對(key-valuepair)的集合。字典中的鍵必須是唯一的,不支持重復,且必須是不可變數據類型。字典支持添加、刪除、修改操作。字典不支持索引和切片,而是通過鍵訪問相應的值。(言之有理即可)1.in關鍵字:簡單易用,檢查元素是否在列表中。2.index()`方法:查找元素并返回其索引,如果元素不存在則拋出ValueError。3.列表推導式:篩選滿足特定條件的元素。4.enumerate()函數:返回元素及其索引,適用于需要保留索引的場景。元組封裝(Tuplepacking):將多個值組合成一個元組的過程稱為元組封裝。在Python中,你可以將多個值用逗號分隔,無需使用圓括號,Python會自動將它們組合成一個元組。例如:packed_tuple=1,2,3print(packed_tuple)#輸出:(1,2,3)序列拆封(Sequenceunpacking):將序列(如元組、列表等)中的元素分別賦值給多個變量的過程稱為序列拆封。要進行序列拆封,需要確保變量的數量與序列中的元素數量相同。例如:my_tuple=(4,5,6)a,b,c=my_tupleprint(a,b,c)#輸出:456在編程中,元組封裝和序列拆封可以用于多種場景,提高代碼的可讀性和簡潔性。最常用的場景變量交換:a,b=b,a等在Python中,集合和字典的底層數據結構是基于哈希表實現的。哈希表是一種高效的數據結構,能夠在平均情況下實現O(1)的查找、插入和刪除操作。1.列表(List):適用于需要有序的、可修改的數據結構。-當需要頻繁地添加、刪除和修改元素時。-適用于實現棧、隊列等數據結構。-當需要對數據進行索引和切片操作時。2.元組(Tuple):-適用于需要有序的、不可修改的數據結構。-當數據集合在整個程序運行過程中保持不變時。-當需要使用數據集合作為字典的鍵或集合的元素時(因為這些場景需要不可變數據類型)。-當需要對數據進行索引和切片操作,但不需要修改數據時。3.集合(Set):-適用于需要無序的、不重復的數據結構。-當需要進行成員檢查、集合運算(如交集、并集、差集等)時。-當需要去除列表或其他序列中的重復元素時。4.字典(Dictionary):-適用于需要無序的、基于鍵值對存儲數據的數據結構。-當需要通過鍵快速查找、添加或刪除數據時。-當需要將數據與其他數據(如描述、屬性等)相關聯時。-當需要實現哈希表、緩存等數據結構時。****編寫程序,接收用戶輸入的一行由空格分隔的若干個整數,計算這些數的平均數,并且統計有多少個數大于平均數,多少個數小于平均數。seq=list(map(int,input().split("")))avg=sum(seq)/len(seq)biggerNum=len([iforiinseqifi>avg])smallerNum=len([iforiinseqifi<avg])print(avg,biggerNum,smallerNum)2.編寫程序,輸入兩行由空格分隔的若干個整數并分別存儲到兩個列表中。對這兩個列表分別進行升序排列,輸出排序后的兩個列表。最后將兩個列表合并為一個有序列表,輸出合并后的列表。例如,假設用戶第一行輸入312,第二行輸出423。先輸出排序后的兩個列表,即123和234,再輸出合并后的有序列表122334。a=sorted([int(x)forxininput().split()])b=sorted([int(x)forxininput().split()])print(a)print(b)print(sorted(a+b))編寫程序,提示用戶輸入一個整數的二維列表,程序指出行內元素和最大的一行,以及列內元素和最大的一列。m=[
[int(x)forxininput(f"輸入第{i+1}行(由空格分隔):").split()]
foriinrange(int(input("輸入行數:")))]rowSums=[sum(row)forrowinm]colSums=[sum(col)forcolinzip(*m)]maxRow=rowSums.index(max(rowSums))+1maxCol=colSums.index(max(colSums))+1print(f"行內元素和最大的行是:{maxRow}\n列內元素和最大的列是:{maxCol}")4.改編代碼清單5-12,統計一段文本中每個字母(忽略字母的大小寫)的出現頻數,并按照頻數降序輸出。defparse_text(text):
#將段落字符串分為字母的列表
text="".join([ch.lower()forchintextifch.isalpha()])
returnlist(text)defmain():
text=input("Pleaseinputatexthere:")
letters=parse_text(text)
letter_count={}
forletterinletters:
#遍歷每個字母
ifletterinletter_count:
#字母在字典中
letter_count[letter]+=1
else:
#字母不在字典中
letter_count[letter]=1
items=[(count,letter)for(letter,count)inletter_count.items()]
items.sort(reverse=True)
#將字典轉換為列表以便于按頻數排序
foriteminitems:
print(item[1],item[0])main()第6章使用模塊一選擇題下列哪一項是Python導入模塊的語句()A.inputB.includeC.defD.import2.下列哪一項命令可以運行Python提供的包管理工具()A.pypiB.pythonC.copyD.pip3.下列導入模塊以及調用模塊內對象的語句對應關系不正確的是()A.導入:importfibonacci調用:fibonacci.recursiveFibonacci(7)B.導入:importfibonacciasfibo調用:fibo.recursiveFibonacci(7)C.導入:fromfibonacciimportrecursiveFibonacci調用:recursiveFibonacci(7)D.導入:importfibonacci調用:recursiveFibonacci(7)4.下列哪一項命令可以查看已安裝的第三方包的包信息()A.piplistB.pipshow<PackageName>C.pipinstall<PackageName>D.pipinstall--upgrade<PackageName>5.video包的結構如下圖所示,下列哪個語句可以加載子模塊mp4()A.importformats.mp4B.importvideo.formatsasmp4C.fromvideo.formatsimportmp4D.fromvideoimportmp4二判斷題import語句必須放在文件的開始位置()如果當前模塊是主模塊,則此時模塊的內置屬性__name__的值為"__main__"()使用“from模塊名import*”的方式導入模塊下的全部對象簡單省事,推薦使用()使用“frompackageimportitem”語法時,item可以是一個子模塊或子包,也可以是包中定義的一些名稱(如函數、類或變量)。()為了讓Python將目錄當作包,目錄下必須含有一個名為“__main__.py”的文件。()三填空題1.模塊有一些內置屬性,用于存儲模塊的某些信息,其中----------屬性用來取得模塊的名稱。2.Python標準庫內置的包含常見字符串操作的模塊是----------。3.video包的結構如下圖所示,加載子模塊avi的語句可以是----------。4.使用pip管理第三方包,可以使用命令----------升級名稱為<PackageName>的包。5.根據注釋補全下列代碼。代碼清單importModule.py1 importfibonacciasfib #以fib為別名導入fibonacci模塊2 ----------------------------------- #導入math模塊的factorial函數3 print(factorial(fib.fibonacci(5)))四簡答題1.什么是模塊?使用模塊有哪些好處?2.導入模塊有幾種方式?它們之間有什么區別?3.什么是包?包是如何組織模塊的?4.如何在Windows下升級pip?5.video包的結構如下圖所示,請用3種方式調用子模塊avi中一個名為avireader的函數,該函數只有一個字符串格式的參數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定義和聲明的文件。模塊中的定義可以被導入到其他模塊中從而被其他模塊所使用,這就使得我們可以在多個程序中使用已經編寫好的函數而無需將函數復制到每個程序中。2.①import模塊名直接導入了模塊名,可以通過“模塊名.對象名”來訪問模塊內的對象②import模塊名as模塊的別名使用這種方法可以使用“模塊的別名.對象名”來訪問模塊內的對象③from模塊名import對象名[as別名]使用這種格式僅導入明確指定的對象,可以減少訪問速度,同時不需要使用模塊名進行調用。3.包是一種通過“點分模塊名稱”管理Python模塊命名空間的方式。可以將這些模塊按照某種方式組織在一個目錄下,構成一個包結構。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.編寫一個listOperation模塊,在模塊中封裝列表的查找和排序等函數。#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安裝任意一個第三方包,引入該包并測試包中的函數。#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章字符串與正則表達式一選擇題下列哪個格式符代表有符號的八進制數()A.%xB.%cC.%oD.%e2.下列哪個函數可以返回在字符串中找到的第一個子串的位置()A.str.rfindB.str.findC.str.countD.str.ljust3.最早通用的編碼系統為()A.UnicodeB.GB2312C.UTF-8D.ASCII4.以下數量限定詞表示匹配前面的子表達式一次或多次的是()A.*B.+C.?D.!5.以下字符串作為pile()函數的參數傳入時,最終可以匹配’\’的是()A.\B.\\C.\\\\D.以上均不對二判斷題str.isalnum()的功能是如果字符串中的所有字符都是字母且串非空,則該函數將返回True,否則返回False。()在Python3.x中,所有字符串均以Unicode方式存儲,因此可以直接創建中文字符串。()UTF-8編碼每個字符被編碼為4字節()使用”\w+\s\w+”可以匹配”HelloWorld”()使用已經編譯好的正則表達式對象進行匹配會比字符串匹配快()三填空題1.定義mystr="HelloWorld",則mystr[0:5]的值為字符串"______"。2.定義str2='*'*5,則str2的值為字符串"______"。3.調用"-".join(["How","Are","You"])將返回字符串"______"。4.調用pile(pattern)將返回一個”______”5.調用re.match(pattern,string)如果匹配不成功,應該返回“______”四簡答題1.字符串支持哪些基本操作?試舉例說明。2.字符串支持的%操作符有何意義?3.試簡述字符編碼與字符的關系。4.正則表達式的主要用途5.可選參數flags有什么答案一選擇題C2.B3.D4.B5.C二判斷題×2.√3.×4.√5.√三填空題Hello2.*****3.How-Are-You4.正則表達式對象5.None四簡答題1.①下標訪問:字符串可以使用下標來訪問該位置的單個字符。例如,定義mystr="python",則mystr[0]的值為字符串"p"。但是使用下標只能進行讀取操作,而無法進行寫入操作。②切片操作:使用切片操作可以按位置提取出字符串的某個子串。例如,定義mystr="HelloWorld",則mystr[0:5]的值為字符串"Hello"。③字符串拼接與復制:使用+和*可以實現字符串的拼接和復制。例如,定義str1="Hello"+''+"World",str2='*'*5,則str1的值為字符串"HelloWorld",str2的值為字符串"*****"。另外,使用增強型賦值運算符+=和*=也是可以的。④in/notin運算符:使用in/notin運算符可以判斷一個字符串是否為另一個字符串的子串。例如,表達式'He'in'Hello'將返回True。⑤比較運算符:比較運算符可以用來對字符串進行比較。字符串的比較規則是字典序,即從兩個字符串的第一個字符開始,依次比較每個對應位置字符的ASCII碼值,直到出現不一樣的兩個字符或者兩個字符串所有字符都比較完畢為止。例如,表達式'Jane'>'Jake'將返回True,表達式'hello'=='Hello'將返回False。⑥for循環遍歷字符串:字符串也是可迭代對象,因此可以使用for循環來順序遍歷字符串中的每個字符。例如,執行下面的語句將依次打印字符串的所有字符:forchinmystr:print(ch,end='')上面代碼執行的結果與直接執行語句print(mystr,end='')相同。2.字符串有一個獨特的內置操作:%操作符(也被稱為字符串格式化操作符)。使用這一操作符可以創建格式化的字符串,其語法格式類似于“format%values”,其中,format是帶有格式符的模板字符串,values是若干個值,這一操作會將format串中的格式符替換為values中的值。3.字符編碼是一種將字符映射為二進制數字的方式,使得計算機能夠存儲和處理文本數據。每個字符都對應著一個唯一的編碼值。要將字符按照一定規則對應為一位二進制數以存儲在計算機中,這個過程稱為編碼;將存儲在計算機中的二進制數轉換成所對應的的字符以顯示出來,這個過程稱為解碼。4.正則表達式是一種字符串匹配的模式,可以用來檢查一個字符串是否含有某種子串、將匹配的子串替換或者從某個串中取出符合某個條件的子串等。正則表達式(regularexpression)描述了一種字符串匹配的模式(pattern),可以用來檢查一個串是否含有某種子串、將匹配的子串替換或者從某個串中取出符合某個條件的子串等。5.在Python中,re包中的flags參數是可選的,用于控制正則表達式的匹配方式。flags參數可以是一個或多個標志,它們可以通過按位或運算符組合在一起。re包中的flags參數有以下幾種作用:re.IGNORECASE:忽略大小寫匹配。re.MULTILINE:多行匹配,改變’^‘和’$'的行為。re.DOTALL:使’.'匹配包括換行符在內的所有字符。re.UNICODE:使’\w’,‘\W’,‘\b’,‘\B’,‘\d’,‘\D’,‘\s’和‘\S’取決于Unicode字符屬性。re.LOCALE:使’\w’,‘\W’,‘\b’,‘\B’取決于當前區域設定。1.早期手機的鍵盤如圖7-7所示。要輸入英文字母,需要按下鍵盤上所對應的數字鍵。例如,字母J對應5鍵,S對應7鍵,而空格對應0鍵。現編寫程序,用戶輸入一個只包含大寫字母與空格的字符串,程序輸出對應的鍵盤上數字的字符串。例如,用戶輸入字符串“HELLOWORLD”,則程序應當輸出“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.編寫程序,用戶輸入一個以十六進制數表示的數字,程序輸出對應的十進制數。例如,用戶輸入“12CF”,則程序應輸出“4815”。hex=input()dec=int(hex,16)print(dec)3.編寫一個函數來返回兩個字符串的最長公共前綴。例如,“dislike”和“discourage”的最長公共前綴是“dis”。函數頭應定義為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.一些網站對用戶輸入的密碼有一定要求。編寫函數來檢測用戶輸入的字符串是否為合法的密碼。假設密碼規則如下:①至少包含8個字符。②密碼只能包含英文字母、數字和下劃線。③在大寫字母、小寫字母、數字這三類字符中,密碼至少包含兩類。程序提示用戶輸入一段字符串作為密碼,如果密碼合法就輸出“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")第八章面向對象編程一選擇題Python中的數據成員和函數成員默認都是()的A.publicB.privateC.protectD.無法被訪問2.Python將以()開始的成員(但不能由雙下劃線結束)定義為私有成員A.數字B.單下劃線C.字母D.雙下劃線3.加法操作對應()A.__add__(self,other)B.__sub__(self,other)C.__mul__(self,other)D.__and__(self,other)4.通過(),可以吸收現有類的數據和行為來創建新類,并添加新的性能來增強此類。A.繼承B.重載C.類D.對象5.派生類定義一個與基類同名的函數;當對象訪問該函數時,派生類的函數會()A.覆蓋基類的函數B.調用基類的函數C.調用基類和派生類的函數D.基類和派生類的函數均不調用6.在派生類定義的函數中,如果想調用基類的同名函數,則需要在函數名前添加()作為限定A.雙下劃線B.基類名和點操作符C.括號D.下劃線7關于Python多態以下選項正確的是()A.大多數面向編程語言都不支持多態特性B.Python本事不是多態語言C.Python支持多態D.Python不支持多態8關于面向對象編程下列說法正確的是()A.面向對象編程的一條基本原則是計算機程序是由單個能夠起到子程序作用的單元或對象組合而成的B.面向對象方法解決問題的思路就是主張從客觀世界固有的事物出發來構造系統,提倡用人類在現實生活中常用的思維方法來認識、理解和描述客觀事物C.面向對象方法是一種運用一系列面向對象的指導軟件構造的概念和原則(如類、對象、抽象、封裝、繼承、多態、消息等)來構造軟件系統的開發方法D.ABC9關于類和對象下列說法正確的是()對象是存在于某個時空的具體實體,而類則是擁有共同的結構、行為和語義的一組對象的抽象類可以作為對象的一種描述機制,用來形成程序中更大的模塊類和對象的關系就好像數據類型和變量的關系。各個對象可以同屬于一個類,但擁有彼此獨立的屬性。對象是類的實例,可以創建類的多個對象ABC10關于類成員下列說法正確的是()Python中的數據成員和函數成員默認都是公開(public)的,即成員在類外可以被訪問利用地圖做長尾關鍵詞避免數據成員被直接修改的方法是將其設置為私有(private)成員Python中將以雙下劃線開始的成員定義為私有成員ABC二判斷題1.Python允許函數重載。 ()self指向的是當前創建的對象,Python解釋器會自動進行傳入。 ()self參數表示函數的調用者被隱式地傳遞到函數中,在函數體內可以使用self參數來代表調用對象訪問其成員。 ()在將數據成員設置為私有后,為了在類外可以操作成員的值需要提供get函數來獲取值和set函數來設置值。 ()迭代是Python中一個很強大的功能,是訪問集合元素的一種方式,利用迭代器可以進行優雅的遍歷。 ()__iter__()方法返回一個迭代器對象。 ()一個類(Circle類)的成員也可以是另一個類(Point類)的對象。()派生類不能夠根據自己的特殊性質定義新的成員。()派生類雖然繼承了基類的數據成員,但由于它們都是私有成員,因此在派生類中不可訪問,只能通過基類定義的公開函數成員進行訪問。 ()在定義了派生類后,派生類所構造的對象既可以訪問繼承自基類的成員,又可以訪問派生類自己定義的成員。 ()三填空題1.避免數據成員被直接修改的方法是將其設置為成員。2.Python將以開始的成員(但不能由雙下劃線結束)定義為私有成員。3.解釋器會拋出-來表示該成員不能在類外部訪問。4.如果想要獲取一個自定義的類的迭代器,需要在類中實現和方法。5.當創建一個新類時,并不需要創建全新的數據成員和函數,可以指明這個類繼承某個現有的類。這時,現有的類被稱為-,繼承實現的新類被稱為。6.在Python中,私有函數(可以/不可以)被覆蓋。7.在派生類定義的函數中,如果想調用基類的同名函數,則需要在函數名前添加作為限定。8.除了數據成員可以設置為私有成員之外,一些不希望在類外調用的函數也可以設置為。9.通過,可以吸收現有類的數據和行為來創建新類,并添加新的性能來增強此類。10.在定義了派生類后,派生類所構造的對象既可以訪問的成員,又可以訪問的成員。四簡答題編寫一個Fraction類來管理分數類型并提供一些運算和操作。簡述Python中的繼承。簡述Python的isinstance函數。先設計一個Point類來表示平面中的點。Point類包含兩個數據成員,用來表示平面坐標。再設計Circle類來表示圓。Circle類使用一個Point類的數據成員來表示圓心位置,使用另一個數據成員表示半徑大小。定義一個學生信息類。答案 一選擇題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.基類名和點操作符8.私有9.繼承10.基類派生類四簡答題1.代碼如下1 classFraction:2
#構造函數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
#重載加法運算符11
def__add__(self,other):12
m=self.__denominator*other.__denominator13
n1=self.__numerator*other.__denominator14
n2=other.__numerator*self.__denominator15
returnFra
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025技術咨詢服務合同范本
- 2025中介公司的房屋租賃合同示范文本
- 2025房屋租賃合同印花稅范文
- 山西省朔州市懷仁市懷仁市第一中學校等(青桐鳴聯考)2025屆高三下學期高考模擬數學試題(解析)
- 體育經紀在線平臺企業制定與實施新質生產力項目商業計劃書
- 藥物膽汁排泄機制研究行業跨境出海項目商業計劃書
- 仿真航模防冰除霜系統模擬創新創業項目商業計劃書
- 代詞的用法題目及答案
- 2025年動漫產業鏈協同創新與產業鏈延伸報告
- 2025年低碳城市綠色建筑與節能改造案例分析報告
- (中考試題)2024年浙江省紹興市中考數學真題試卷解析版
- 中國歷史地理智慧樹知到期末考試答案章節答案2024年北京大學
- 新中式住宅設計理念
- 2024年四川省涼山彝族自治州西昌市六年級語文小升初摸底考試含答案
- 有關分手的研究報告
- JGJT405-2017 預應力混凝土異型預制樁技術規程
- JJF1059.1測量不確定度評定培訓講演稿
- 方案偽裝防護要求
- 跨境支付中的金融穩定問題
- 2024年中石油煤層氣有限責任公司招聘筆試參考題庫含答案解析
- 大數據技術綜合實訓-實驗報告
評論
0/150
提交評論