Python3基礎教程實驗指導與習題集(微課版)(第2版)-參考答案 夏幫貴_第1頁
Python3基礎教程實驗指導與習題集(微課版)(第2版)-參考答案 夏幫貴_第2頁
Python3基礎教程實驗指導與習題集(微課版)(第2版)-參考答案 夏幫貴_第3頁
Python3基礎教程實驗指導與習題集(微課版)(第2版)-參考答案 夏幫貴_第4頁
Python3基礎教程實驗指導與習題集(微課版)(第2版)-參考答案 夏幫貴_第5頁
已閱讀5頁,還剩56頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

Python3基礎教程實驗指導與習題集(微課版)(第2版)Python3基礎教程實驗指導與習題集(微課版)(第2版)STYLEREF"標題1s"習題參考答案STYLEREF"標題1s"習題參考答案STYLEREF"標題1"PAGE144PAGE143習題參考答案單元1參考答案1.選擇題答案及解析1.C解析:設計Python的靈感來自ABC語言。2.A解析:Python語言的特點主要包括:免費、開源;面向對象;良好的跨平臺特性;簡單易學;功能強大。3.C解析:Python是用ANSIC實現的。4.C解析:Python實現了各種數據結構的標準操作,如合并、分片、排序和映射等。5.D解析:Python的設計理念是“優雅”“明確”“簡單”,提倡“用一種方法,最好只用一種方法來做一件事”。高效不再是現代程序設計語言的主要設計理念。6.D解析:Python已決定于2020年停止對Python2.7的支持,從而使開發人員有充裕的時間過渡到Python3。7.B解析:Python2.7是Python2的最后一個版本。8.C解析:程序設計語言的發展通常遵循“向后兼容”原則,但Python3.0不再向后兼容,所以它是目前在Python語言發展過程中最具特殊意義的一個版本。9.B解析:在Python2中,字符串中的字符默認為單字節,只支持ASCII字符。在Python3中,字符串中的字符默認為雙字節,支持Unicode字符。10.D解析:在Python3中,各種數據類型int、float、str等都是type的子類。數據類型名稱作為參數時,type()函數的執行結果是<class'type'>,因此type(int)的執行結果是<class'type'>。11.C解析:在Python3中,選項A是整數,選項B和選項D是小數。Python3不再支持選項C中的這種Python2中的長整數表示方法。12.A解析:在Python3中,不再支持選項A中的這種Python2中的二進制表示方法。選項B是二進制常量,選項C是八進制常量,選項D是十六進制常量。13.C解析:在Python3中,字典對象的keys()、items()和values()方法返回視圖,在Python2中這些方法返回列表。14.C解析:Python3中的字典不再支持Python2中的iterkeys()、iteritems()和itervalues()等方法。15.A解析:print()是輸出函數,語句print('123','456')中的'123'和'456'作為字符串輸出。16.C解析:在Python3中,“/”除法運算返回浮點數,“//”除法運算的結果只保留整數部分。1/2的結果為0.5,1//2的結果為0。17.B解析:Python解釋器先將源代碼轉換為字節碼,然后由Python虛擬機解釋器執行。18.D解析:Python源代碼文件的擴展名默認為.py。19.C解析:在IDLE交互環境中輸入Python命令后,按【Enter】鍵執行命令。20.C解析:本題中,變量a的值為字符串"+123",將a作為命令執行后,輸出結果為'+123'。2.操作題答案及解析1.示例代碼如下。>>>

'你好''你好'>>>

print('你好')你好>>>

len('你好')2>>>

u'你好''你好'>>>

print(u'你好')你好>>>

len(u'你好')2解析:以u作為前綴的是Unicode字符串,采用Unicode編碼,它也是Python3的默認編碼。'你好'和u'你好'表示同一個字符串,其長度為2。2~10.略。單元2參考答案1.選擇題答案及解析1.A解析:Python使用空格(縮進)來定義代碼塊。2.C解析:Python語言的單行注釋以符號“#”開始,當前行中符號“#”及其后的內容為注釋。單行注釋可以單獨占一行,也可放在語句后。多行注釋用3個英文的單引號“'''”或3個英文的雙引號“"""”作為開始和結束符號。3.C解析:以“#”開頭的內容為單行注釋,只能寫在一行中4.C解析:語句續行符號“\”之后不能有任何其他符號,包括空格和注釋。5.D解析:Python的關鍵字包括False、await、else、import、pass、None、break、except、in、raise、True、class、finally、is、return、and、continue、for、lambda、try、as、def、from、nonlocal、while、assert、del、global、not、with、async、elif、if、or、yield。6.C解析:input()函數將從鍵盤輸入的內容作為字符串返回,type()函數返回參數的數據類型。7.C解析:input()函數將從鍵盤輸入的內容作為字符串返回,輸入“3”時,input()函數返回'3',所以a='3',2*a等價于2*'3'。乘法表達式中的一個操作數是整數、另一個操作數是序列時,執行序列的復制操作,即將序列復制指定的次數,并連接成新的序列。因此2*'3'的結果為'33'。8.C解析:輸入數據的過程中,按了【Ctrl+Z】組合鍵且還輸入了其他數據時,不會出錯,【Ctrl+Z】組合鍵用轉義字符“\x1a”表示。如果只輸入【Ctrl+Z】組合鍵,則會發生EOFError。eval(input())組合使用可輸入數字類型的數據。9.B解析:print()函數將字符串原樣輸出,字符串首尾的引號不會輸出。10.C解析:當兩個操作數為數字時,“+”運算符執行加法運算。當兩個操作數為字符串時,“+”運算符執行字符串連接。print()函數將字符串中的字符原樣輸出,不包括表示字符串的引號。eval()函數返回字符串中的表達式。C選項等價于print(1+2),輸出結果為3。D選項等價于print(12),輸出結果為12。11.B解析:在print()函數中,可使用sep參數指定輸出數據之間的輸出分隔符。12.C解析:print()函數輸出多個數據時,默認使用空格分隔數據。它會將字符串原樣輸出,字符串首尾的引號不會輸出。13.D解析:在print()函數中,end參數用于指定輸出結束符號,默認為換行符,所以默認情況下print()函數完成輸出后會換行。本題中,print('x',end='=')中的end參數將輸出結束符號設置為符號“=”,輸出結果為“x=”,不換行。14.A解析:選項A錯誤,不能以數字作為變量名的首字符。15.B解析:選項B錯誤,不能以數字作為變量名的首字符。16.D解析:在序列賦值語句中,當等號右側為字符串時,Python會將字符串分解為單個字符,依次賦給各個變量,變量個數與字符個數必須相等。17.B解析:在Python中,給變量賦值時,如果變量不存在,則創建該變量。給變量賦值的實質是將變量綁定到對象,通過變量來引用對象。所以變量必須先賦值,后使用。18.D解析:將變量a賦給變量b后,如果通過賦值使b引用不同的對象,則b和a引用不同的對象,a的值不變。如果a引用一個可變對象,如列表或字典,將變量a賦給變量b后,通過變量b修改了其引用的可變對象(例如修改了某列表的元素值),變量b和a引用的仍然是同一個列表,只是其中的元素發生了改變。19.D解析:A選項中,a,b=1,2為變量a、b賦不同的值,a為1,b為2。B選項中,b=a=a+2等價于b=a=1+2,給變量a、b賦相同的值3。C選項中,將a賦值為False,int(a)等價于int(False),結果為0。D選項中,直接使用變量a,因為沒有創建變量a,所以出錯。20.B解析:執行了x=[1,2,3]和y=x兩條語句后,變量x和y引用同一個列表[1,2,3]。執行y[0]=5后,列表的第1個元素修改為5,即列表變為[5,2,3],所以print(x)輸出[5,2,3]。2.操作題答案及解析1.示例代碼如下。#改錯題x=-5if

x>0:

print(x,'是正數') #(2)else:print(x,'不是正數') #(3)解析:(1)Python的單行注釋符號為“#”,不是“//”。(2)該行為if語句的代碼塊,print()函數前面應該縮進。(3)else應該和if對齊,構成完整的if…else語句。2.示例代碼如下。'''輸入兩條直角邊度,求斜邊長度math.sqrt()用于計算平方根''' #(1)

from

math

import

sqrt

#導入函數a=eval(input('請輸入直角邊1的長度:')) #(2)b=eval(input('請輸入直角邊2的長度:')) #(3)if

a<=0:

print('邊長必須是正數')else:

if

b<=0:

print('邊長必須是正數')

else:

print('斜邊=',sqrt(a*a+b*b)) #(4)解析:(1)Python的多行注釋以“'''”或“"""”作為開始和結束符號。(2)和(3)在輸入數字時,通常使用eval()、int()、float()等函數進行轉換。(4)“;”是語句分隔符號,print()函數中用逗號分隔數據。3.示例代碼如下。a=eval(input('請輸入第1個數:'))b=eval(input('請輸入第2個數:'))print('交換前:a=',a,'

b=',b)a,b=b,a

#添加的語句print('交換后:a=',a,'

b=',b)解析:Python在執行賦值語句時,會先計算等號右側的表達式。例如,a=3,b=4時,a,b=b,a等價于a,b=4,3,按順序依次為a、b賦值,即a賦值為4,b賦值為3。所以,a,b=b,a可交換變量a和b的值。4.示例代碼如下。print('優雅',end=',')print('明確',end=',')print('簡單')解析:參數“end=','”將逗號設置為print()函數的輸出結束符號,從而令3個print()函數的輸出結果在一行中。5.示例代碼如下。a=1b=2c=3print(a,b,c,sep=',')解析:參數“sep=','”將逗號設置為print()函數的輸出分隔符。6.示例代碼如下。f=open('outtest2-6.txt','w')print('Python',file=f)print('Java',file=f)print('C++',file=f)f.close()解析:print()函數中指定file參數時,數據會輸出到指定文件中。7.示例代碼如下。a=eval(input('請輸入一個數據:'))print(a,type(a))解析:input()函數返回一個字符串,字符串內容為用戶輸入的數據。eval()函數可去掉字符串的引號,獲得字符串的內容,從而獲得用戶輸入的數據。type()函數可返回數據的數據類型信息。8.示例代碼如下。a,b,c=eval(input('請輸入3個數:'))if

a<b:

a,b=b,aif

a<c:

a,c=c,aif

b<c:

b,c=c,bprint(a,b,c)解析:添加的語句利用了序列賦值,輸入的數據使用逗號分隔。例如,在輸入“1,2,3”時,該語句等價于a,b,c=eval('1,2,3'),eval()函數去掉字符串的引號后,該語句等價于a,b,c=1,2,3,從而將輸入的3個數據依次賦給變量。9.示例代碼如下。import

matha=eval(input('請輸入三角形的邊長a:'))b=eval(input('請輸入三角形的邊長b:'))c=eval(input('請輸入三角形的邊長c:'))p=(a+b+c)/2S=math.sqrt(p*(p-a)*(p-b)*(p-c))print('三角形的面積=',S)10.示例代碼如下。a,*b=eval(input('請輸入多個數字:'))print('和=',a+sum(b))解析:在使用序列賦值時,如果變量前面有星號作為前綴,表示該變量是一個列表,可接收多個值。例如:a,*b=1,2,3,4執行以上代碼后,a=1,b=[2,3,4]。單元3參考答案1.選擇題答案及解析1.A解析:Python的基本數字類型包括int、float、complex。另外,bool是int的子類型,decimal模塊提供了小數類型Decimal,fractions模塊提供了分數類型Fraction。2.D解析:二進制數據以“0b”或“0B”開頭,它們后面是二進制數字(0或1)。例如,0b101、0B11。3.C解析:復數由實部和虛部組成,complex(2.5)生成的復數為2.5+0j,其輸出結果為(2.5+0j)。4.C解析:浮點數類型用于表示帶有小數的數據,小數部分可以為0。浮點數與數學中實數的概念一致。5.D解析:浮點數的指數形式需要使用e或E。例如,1.23e+10、1.23E-10。6.D解析:程序中的小數對象的精度默認由全局精度決定,上下文對象的prec屬性用于設置全局精度,改變prec屬性意味著其后的代碼中的小數對象使用不同的精度。在with模塊中可以設置小數對象的臨時精度。7.B解析:分數對象的分子和分母會自動計算為最簡。8.B解析:bool是int的子類型,參與數字計算時True為1,False為0。復數的real屬性返回其實部,imag屬性返回其虛部。本題中的表達式等價于10+1+0.0,計算結果為11.0。9.D解析:“x%y”用于計算x除以y的余數,余數符號與y的符號一致。若存在一個操作數為浮點數,則計算結果為浮點數,否則為整數。10.A解析:x<y>1是Python比較運算表達式的縮寫,等價于x<yandy>1,其計算結果為True。11.C解析:round()函數基本語法格式為round(number[,ndigits])。指定ndigits時,若返回一個浮點數,則“四舍五入”到它指定的小數位數。ndigits大于0時,在小數部分舍入。ndigits小于0時,舍入到整數部分,小數部分為0。未指定ndigits時,返回離number最近的整數。12.C解析:math.ceil(n)返回不小于n的最小整數。13.A解析:A選項錯誤,type()函數用于獲取對象的類型。B選項正確,轉義符用于在字符串中包含單引號、雙引號或其他的一些特殊符號。C選項正確,字符串'\0'中的\0表示一個空字符,所以其長度為1。D選項正確,Python3中,str類型的字符串采用Unicode編碼,可包含漢字。14.A解析:len(s)返回對象包含的元素個數。本題中,len("Python\t編程")返回字符串中的字符個數9。15.D解析:字符串比較大小時依次比較相同位置的字符,字符按字典順序比較大小;相同位置的字符均相同時,更長的字符串更大。16.D解開始,到偏移量end之前的子字符串,依次跳過中間的step-1個字符。step、start和end參數均可省略,start默認為0,end默認為字符串長度,step默認為1。本題中,s[–6:]返回字符串倒數第6個字符到末尾字符的子字符串,即“Python”。17.C解析:與16題類似,本題中a[:4]為“Pyth”,a[-3:]為”ing”,所以正確答案為C。18.A解析:Python3的字符采用雙字節的Unicode編碼,Python2的字符默認采用單字節的ASCII編碼。chr()函數返回Unicode值對應的字符,ord()函數返回字符的Unicode值。19.D解析:字符串的format()方法中,'{0:0<8}'中的“0<8”表示用字符0填充,字符串的寬度為8,并且左對齊。20.D解析:'{0:3}'指定第一個參數的輸出寬度最小為3,第一個參數'123456'的長度為6,所以6個字符全部輸出。2.操作題答案及解析1.示例代碼如下。a,b=eval(input('請輸入兩個數:'))print(a,'+',b,'=',a+b)print(a,'-',b,'=',a-b)print(a,'*',b,'=',a*b)print(a,'/',b,'=',round(a/b,2))解析:round(a/b,2)函數將除法運算的結果保留2位小數。2.示例代碼如下。a,b=eval(input('請輸入兩個整數:'))y=a%bx=int(a/b)print(a,'除以',b,'的商:',x)print(a,'除以',b,'的余數:',y)解析:a%b的結果為a除以b的余數,a/b的結果為浮點數,用int()將其轉換為整數(取其整數部分)。3.示例代碼如下。a=eval(input('請輸入一個不大于255的正整數:'))print('

二進制:{:08b}'.format(a))print('

八進制:{:08o}'.format(a))print('十六進制:{:08X}'.format(a))解析:{:08b}將參數轉換為8位二進制字符串,用0填充。{:08o}將參數轉換為8位八進制字符串,用0填充。{:08X}將參數轉換為8位十六進制字符串,用0填充。4.示例代碼如下。a=eval(input('請輸入一個不大于255的正整數:'))b=bin(a)[2:].zfill(8)print('

二進制:%s'%b)print('

八進制:%08o'%a)print('十六進制:%08X'%a)解析:使用%格式化字符串時,%08o將參數轉換為8位八進制字符串,%08X將參數轉換為8位十六進制字符串。%格式化字符串時不能直接將參數轉換為二進制字符串,所以以上代碼使用了bin()函數來進行轉換。zfill()方法通過填充0將字符串的寬度增加為8。5.示例代碼如下。import

matha,b,c=eval(input('請輸入方程的系數a,b,c:'))d=b*b-4*a*cif

d>0:

x1=(-b+math.sqrt(d))/(2*a)

x2=(-b-math.sqrt(d))/(2*a)

print('方程的解x1=%.2f'%x1)

print('方程的解x2=%.2f'%x2)if

d==0:

print('方程的解x1=x2=%.2f'%(-b/(2*a)))if

d<0:

x1=-b/(2*a)

x2=math.sqrt(-d)/(2*a)

print('方程的解x1=%.2f+%.2fj'%(x1,x2))

print('方程的解x2=%.2f-%.2fj'%(x1,x2))解析:%.2f可將浮點數保留2位小數。math.sqrt()函數用于求平方根。6.示例代碼如下。a=input('請輸入一個字符串:')c=max(a)print('最大字符為:%c,其索引為:%d'%(c,a.index(c)))解析:max(a)函數可返回字符串中的最大字符,a.index(c)返回字符串c在a中第一次出現時的索引。7.示例代碼如下。a=input('請輸入多種水果名稱:')b=a.replace('

','\n')print(b)解析:a.replace('','\n')將字符串中的空格替換為換行符,從而在輸出時實現換行。8.示例代碼如下。a=input('請輸入一個詞語:')print('{:_^20}'.format(a))解析:在format()方法的格式控制符中,“^”表示居中,{:_^20}表示寬度為20、居中對齊、用下劃線填充。9.示例代碼如下。a='123456789'n=len(a)m=2print('%21c'%'1') #輸出第1行while

m<=n:

print('

'*(21-m),end='') #輸出每行前面的空格

print('{}{}'.format(a[:m],a[m-2::-1]))

m+=1解析:數字金字塔的第1行比較特殊,只輸出一個數字,所以單獨處理。''*(21-m)生成每行前面的空格,end=''表示不換行。a[:m]用于取得每行數字的前半部分,a[m-2::-1]用于取得每行數字的后半部分。10.示例代碼如下。n=4m=5while

n>=1:

print('{}{}'.format('

'*m,'*'*(2*n-1)))

n-=1

m+=1解析:''*m生成每行前面的空格,'*'*(2*n-1)生成要輸出的星號。單元4參考答案1.選擇題答案及解析1.D解析:集合中的元素是無序的、不允許重復的,序列對象中的元素可以重復。映射類型對象中的關鍵字可以是不同類型的數據。2.D解析:set()函數用于創建集合對象,字符串作為參數時,該函數將字符串中的每個字符作為一個集合元素,相同的字符只在集合中出現一次。3.B解析:本題中,a-b等價于{1,2,3}-{3,4,5},計算差集,結果為{1,2}。4.B解析:a.remove(2)用于從集合中刪除值為2的元素,集合變為{1,3}。5.B解析:本題中,list(range(10))使用range對象創建列表,生成的列表為[0,1,2,3,4,5,6,7,8,9]。5inlt用于判斷列表lt中是否包含5,結果為True。6.C解析:本題中,序列為[1,"24",[4,"567"],89],設其為a,則a[2]返回[4,"567"],[4,"567"][-1]返回"567","567"[1]返回"6"。所以正確答案為C。7.D解析:選項D錯誤,字符串中的字符是有序的。8.D解析:a=list('abc')語句用字符串創建列表,等價于a=['a','b','c']。"#".join(a+['1','2'])用字符“#”將列表元素連接成一個字符串,等價于"#".join(['a','b','c','1','2'])。9.A解析:a=[1,2],執行a.append(3)后,a=[1,2,3]。此時列表長度為3。a.insert(3,[4,5])將[4,5]作為一個元素添加到列表末尾,執行后a=[1,2,3,[4,5]]。10.A解析:選項A錯誤,clear()方法用于刪除列表的所有元素。11.D解析:list()函數可使用可迭代對象作為參數來創建列表。index(x,m,n)方法在[m:n]索引范圍內查找x,返回其第一次出現時的索引,m和n均可省略。count(x)方法返回序列中x出現的次數。12.C解析:reverse()是列表的方法,只有在輸入數據為列表時,本題的程序才會正常運行。本題中輸入數據為1,2,3,lt.reverse()執行出錯,程序跳轉到異常處理的except部分執行,輸出“輸入錯誤”。13.C解析:序列長度指序列包含的元素個數。本題中,變量t引用的元組包括3個元素,即1、(2,3)和(4,[5,6,7]),所以輸出結果為3。14.B解析:本題中,x.index(2,3)等價于(1,2,3,1,2,3,1,2,3).index(2,3),從元組中索引為3的元素開始到元組末尾,查找2第一次出現時的索引,結果為4。15.B解析:字典中的元素使用鍵值對中的鍵來索引映射的值。本題中,color["red"]返回“紅色”。get()方法返回鍵映射的值,如果鍵不存在,返回空值,可用default參數指定鍵不存在時的返回值。本題中,color.get('blue','黃色')返回“藍色”。16.A解析:字典的鍵通常采用字符串,也可以用數字、元組等不可變類型的數據。字典的值可以是任意類型。選項A中使用了列表作為鍵,所以錯誤。17.D解析:字典中的鍵不能重復,值可以重復。18.B解析:字典按鍵進行迭代,所以正確答案為B。19.A解析:本題中,mn是一個字典對象。代碼運行時,可輸入一個整數(1~12)來表示月份,然后從字典中獲得對應的月份名稱,并將其輸出。20.D解析:選項D中,cs[a]=cs.get(a,0)+1語句可為字典元素賦值,如果字典cs中不存在變量a中的鍵,則在字典中添加該鍵,其值為所賦的值。cs.get(a,0)方法讀取字典cs中變量a中的鍵所映射的值,鍵不存在時,返回默認值0。所以,cs[a]=cs.get(a,0)+1語句可實現字符的計數。2.操作題答案及解析1.①eval('{'+a+'}') ②b.remove(c) ③b.add(c)2.①list(a) ②list(set(b))解析:list(set(b))先用列表b創建集合(可自動去掉重復元素),再將其轉換為列表。3.①b.insert(0,a) ②b.sort(reverse=True)解析:采用a,*b=eval(input())賦值時,a的值為輸入的第1個數,剩余的數作為列表賦給b,所以需要用b.insert(0,a)將第1個數添加到列表開頭。reverse=True表示列表按元素從大到小的順序排序。4.①int(input('請輸入一個整數:')) ②aind ③d.pop(a)解析:字典的鍵是整數,所以應用int()函數轉換輸入的數據。“aind”在字典d的鍵包含變量a的值時返回True,否則返回Fasle。d.pop(a)按變量a的值在字典中查找鍵,刪除對應鍵值對,并返回其映射的值。5.示例代碼及解析如下。a=input('請輸入一串字符:')b=list(set(a)) #獲得不重復字符的列表b.sort() #對不重復字符排序cs=[]n=0for

c

in

b:

cs.append((c,a.count(c))) #將字符及其出現次數作為元組添加到列表中

n=n+1for

k,v

in

cs: #迭代列表中的元組

print(k,':',v) 6.示例代碼及解析如下。a=input('請輸入一組詞語(用空格分隔):')ds=a.split('

')

#將字符串分解為列表cs={}for

c

in

ds:

#迭代列表中的詞語

cs[c]=cs.get(c,0)+1

#get(c,0)從字典中取c映射的值(即C出現次數,沒有時取0)再加1for

k

in

cs:

print(k,':',cs[k])

#輸出詞語及其出現次數7.示例代碼及解析如下。a=input('請輸入一串英文字符:')d=list(a)

#將字符串轉換為列表n=0for

c

in

d:

#執行加密操作

d[n]=chr(ord(c)+3) #獲得字符的ASCII值,加3,再轉換為字符

n+=1print('加密后:',end='')for

c

in

d:

print(c,end='')8.示例代碼及解析如下。#將姓名和成績以二元組的方式存入列表中s=def

gets(a): #返回元組的第2個元素,即成績

return

a[1]s.sort(key=gets) #指定列表排序關鍵字,并對二元組中的成績排序n=1print("%-4s%-10s成績"

%

('名次','姓名')) for

k,v

in

s:

print("%-6s%-12s%s"

%(n,k,v)) #格式化輸出名次、姓名和成績

n+=1 #計算名次9.示例代碼及解析如下。d={'0':'h','1':'n','2':'b','3':'x','4':'m', #將密碼本定義為字典

'5':'a','6':'q','7':'f','8':'e','9':'y'}a=input("請輸入一組整數(用空格分隔):")b=a.split('

')

#將輸入的數據轉換為列表rs=[]for

c

in

b:

#遍歷列表

e=''

for

f

in

c: #轉換每個數

e+=d[f]

rs.append(e) #將轉換結果存入列表中print('加密后:','

'.join(rs)) #輸出轉換結果10.示例代碼及解析如下。#用集合存儲兩組商品數據,用集合運算獲得商品信息a={('蘋果',5.5),('香蕉',4.8),('山竹',12.5),('西瓜',5.6),('梨',4.5)}b={('山竹',12.5),('梨',4.5),('冬棗',8.5)}print('(1)同時屬于表4-1和表4-2的商品')r=a&b #求交集,獲得同時屬于表4-1和表4-2的商品for

k,v

in

r: #用兩個變量迭代集合中的二元組

print('

',k,'\t',v)print('(2)屬于表4-1但不屬于表4-2的商品')r=a-b #求差集,獲得屬于表4-1但不屬于表4-2的商品for

k,v

in

r:

print('

',k,'\t',v)print('(3)屬于表4-1且不屬于表4-2,或者屬于表4-2且不屬于表4-1的商品')r=a^b #求對稱差,獲得屬于表A且不屬于表B,或者屬于表B且不屬于表A的商品for

k,v

in

r:

print('

',k,'\t',v)c=input("請輸入商品名稱:")r=dict(a|b) #求并集,獲得全部商品信息,用其創建字典,以便查詢if

c

in

r: #用in檢查輸入的商品名稱是否在兩個表中存在

print(c,'價格為:',r[c])else:

print('表A和表B中沒有商品:',c)單元5參考答案1.選擇題答案及解析1.A解析:x=list()創建了一個空列表,所以ifx等價于if[],空列表轉換為邏輯值False,所以if語句的條件不成立,不會執行y=1,y的值仍然為之前賦的0。2.B解析:本題中,x的值為{1},“ifx:”等價于“if{1}:”,非空集合轉換為邏輯值True,所以if語句的條件成立,執行y=1,輸出結果為1。3.D解析:本題考查多分支if語句。多分支if語句依次判斷各個條件表達式的計算結果是否為True。本題中輸入“12”,所以if語句中,x=='1'、x=='2'和x=='3'的計算結果均為False,所以執行else部分的語句,輸出Other。4.A解析:三元表達式“aifbelsec”在b為True時返回a的值,否則返回c的值。5.A解析:三元表達式“aifbelsec”在b為True時返回a的值,否則返回c的值。6.D解析:循環forbina依次將a中的對象賦給b。a=['123','456','789'],a[n][n]返回a中的第n-1個字符串中的第n-1個字符。s+=a[n][n],s的初始值為0,不能和a[n][n]返回的字符做加法運算,程序運行出錯。要讓程序正確運行,可將“s=0”替換為“s=''”。7.C解析:a=range(10)生成的range對象包含的元素依次為0、1、2、3、4、5、6、7、8、9,a[::-2]返回的range對象包含的元素依次為9、7、5、3、1,所以reversed(a[::-2])返回的range對象包含的元素依次為1、3、5、7、9。8.B解析:whilen%4!=0中,表達式在n除以4的余數不等于0時成立,n的初始值為1,在循環中n的值每次增加1,所以n的值分別為1、2、3時,循環條件成立,執行循環體,n為4時,循環條件不成立,循環結束。所以變量s中累加了1、2、3,輸出結果為6。9.C解析:在for和while循環的循環體中,break語句用于跳出當前循環,即提前結束循環(包括跳過else語句)。continue語句則用于跳過循環體剩余語句,開始下一次循環。10.C解析:本題中,for循環用于迭代range對象,range(8)的取值范圍為[0,7]內的整數,for循環輸出其中的偶數。11.B解析:程序的功能是遍歷列表,將其中包含字符b的字符串輸出,所有字符串輸出在一行。12.C解析:程序的功能是遍歷列表,將其中的偶數輸出,所有偶數輸出在一行。13.C解析:本題代碼分析如下。while

n<=10:

#n的值可取0、1、2……10

n=n+1

#n的值可取1、2……11

if

n%2==0:

#在n為偶數時條件成立

continue #n為偶數,即2、4、6、8、10時,結束當前層次循環,開始下次循環

s=s+n

#n的值可取1、3、5、7、9、11所以代碼輸出結果為36。14.C解析:異常是程序在運行過程中發生的錯誤,如索引列表時使用的索引超出范圍、訪問的文件不存在等。所以選項C錯誤。15.A解析:在Python異常處理結構中,可能發生異常的代碼應放在try語句。16.B解析:Python的異常處理結構中,else和finally語句均可省略。異常處理結構可捕捉try語句發生的異常,try語句之外的異常不能捕捉。17.A解析:在異常處理結構的except語句中指定異常類型名稱,從而捕捉特定類型異常。18.C解析:while循環第1次循環中,x=1,y=1,y<=5成立,執行x=x*y=1*1=1,y=y+2=1+2=3。while循環第2次循環中,x=1,y=3,y<=5成立,執行x=x*y=1*3=3,y=y+2=3+2=5。while循環第3次循環中,x=3,y=5,y<=5成立,執行x=x*y=3*5=15,y=y+2=5+2=7。while循環第4次循環中,x=15,y=7,y<=5不成立,不執行循環體,執行print(x),輸出15。19.D解析:Python語言的基本控制結構包括if語句(用于實現分支結構)、for循環(用于實現循環)、while循環(可實現無限循環)、try語句(用于實現異常處理)。Python沒有goto語句。20.B解析:if…elif也可實現雙分支結構。2.操作題答案及解析1.①x//2<=n ②x+=22.①s=0 ②inrange(1,101)3.①inrange(1,n-1) ②a,b=b,a+b4.①s=1 ②x*=i5.①x<=n ②x+=16.示例代碼如下。#用列表表示矩陣d=[[1,2,3,4,5],[10,9,8,7,6],[11,12,13,14,15]

,[20,19,18,17,16],[21,22,23,24,25]]s=0for

a

in

d: #遍歷列表,計算所有元素之和

for

b

in

a:

s+=bprint('所有元素之和

=',s)sz=sc=0for

i

in

range(5):

sz+=d[i][i] #計算主對角線元素之和

sc+=d[i][4-i] #計算次對角線元素之和print('主對角線元素之和

=',sz)print('次對角線元素之和

=',sz)7.示例代碼如下。a,b=eval(input('請輸入兩個整數a、b:'))x,y=a,ba=max(x,y)b=min(x,y)d=a%bwhile

d!=0: #余數為0時,b為最大公約數

a=b

b=d

d=a%bprint('

%s

,

%s

的最大公約數:%s'%(x,y,b))print('

%s

,

%s

的最小公倍數:%s'%(x,y,x*y//b))解析:用輾轉相除法求最大公約數。8.示例代碼如下。for

n

in

range(100,1000):

a=n//100 #獲得百位上的數字

b=n%100//10 #獲得十位上的數字

c=n%10 #獲得個位上的數字

if

a*a*a+b*b*b+c*c*c==n:

print(n)9.示例代碼如下。for

m

in

range(2000):

n=1

for

a

in

range(2,m): #計算m的因子之和

if

m%a==0:

n+=a

#計算n的因子之和

n2=1

for

a

in

range(2,n):

if

n%a==0:

n2+=a

if

n2==m

and

m!=n:

print((m,n))

#輸出親密數10.示例代碼如下。n=int(input('請輸入正整數n:'))#用列表表示n×n矩陣的下半部分,將各元素初始化為1d=[]for

a

in

range(n):

x=[1]

for

b

in

range(a):

x.append(1)

d.append(x)for

i

in

range(2,n):

for

j

in

range(1,i):

d[i][j]=d[i-1][j]+d[i-1][j-1] #計算非1元素for

a

in

d:

for

b

in

a:

print('%-6d'%b,end='')

#輸出元素,每個元素寬度為6

print()單元6參考答案1.選擇題答案及解析1.C解析:每次調用函數時,提供的實參的數據類型可以不同。不同類型的實參,可能會導致函數返回不同的結果。2.B解析:Python語言中用來定義函數的關鍵字是def。3.D解析:一個函數中可以有多個return語句,但返回值只能有一個。4.A解析:函數調用只能出現在函數定義之后。5.D解析:f((1,2))中,(1,2)只能視為一個實參,傳遞給a,參數b沒有實參,所以會出錯。6.C解析:在Python中,變量類似于C++中的指針,存儲的是對象的引用。使用變量作為函數的實參時,會將變量對對象的引用傳遞給形參。當實參引用的是可變對象,如列表、字典等時,若在函數中修改形參,通過共享引用,實參也可獲得修改后的對象。所以選項C中的說法錯誤。7.D解析:在定義函數時,可以為參數設置默認值。調用函數時如果未提供實參,則形參取默認值。調用有多個帶默認值的參數的函數時,省略的參數不能用空格代替。本題中,要省略參數b,同時為參數c傳遞實參,正確的調用方法是fun(3,c=4)。8.D解析:函數的帶星號參數可接收任意個數的實參,這些實參構成一個元組。9.A解析:本題中,形參y是函數f()的局部變量。x引用整數對象3,在調用函數f(x)時,會將整數對象3的引用傳遞給形參y。在函數內部,y*=2等價于y=3*2,通過賦值形參引用整數對象6。在函數f(x)的執行過程中,不影響x對整數對象3的引用。所以,本題中程序末尾的print(x)等價于print(3),輸出3。10.D解析:調用函數時,不傳遞值的可選參數不能用空格或None代替。不傳遞值的可選參數如果在參數列表末尾,可以直接省略(使用默認值),否則其他可選參數必須使用形參名賦值格式傳遞實參。例如,函數定義為deff(a,b=1,c=2,d=3):pass,其中的b、c、d為可選參數。下列函數調用方法均正確:f(5) #a為5,不為b、c、d傳遞值f(5,6) #a為5,b為6,不為c、d傳遞值f(5,d=6) #a為5,d為6,不為b、c傳遞值f(5,,6)是錯誤的函數調用,試圖直接省略中間的可選參數。11.A解析:使用可變對象(列表和字典等)作為實參調用函數時,形參變量和實參變量引用同一個可變對象。在函數中通過形參變量修改了可變對象的元素時,函數外的實參變量引用的是修改后的可變對象。12.C解析:f(a=1,2)中,a=1稱為關鍵字參數,2是位置參數。關鍵字參數將實參傳遞給指定名稱的形參,位置參數按實參位置傳遞給對應位置的形參。關鍵字參數必須放在位置參數之后。13.D解析:deff(a,*b)表示形參b可接收任意多個實參,此時b不能作為關鍵字參數。14.D解析:lambda語句用一個表達式來創建一個匿名函數,它稱為lambda函數。通常將lambda函數賦給變量,通過變量來調用它。lambda語句中只能包含表達式,不能使用各種可執行語句。15.D解析:本題中,函數f(n)的作用是返回斐波那契數列的第n項,調用函數時實參必須為不小于1的正整數。16.B解析:本題考查函數列表。x=d[1](4,5)中,d[1]調用函數列表中的第2個lambda函數,計算4-5,結果為-1。17.B解析:選項A錯誤,局部變量是在函數內部創建的變量,在函數外部創建的全局變量也可在函數內部使用。選項C錯誤,變量的創建位置決定變量的使用范圍,其使用范圍與數據類型無關,正確的說法為:局部變量只能在函數內部創建和使用,函數退出后局部變量被釋放。選項D錯誤,global關鍵字聲明的變量為全局變量,變量既可在函數內,也可在函數外創建。18.D解析:nonlocal關鍵字聲明的變量是外層函數的局部變量。19.C解析:本題中,x經global聲明后,可以在函數內部賦值。所以在調用函數func()后,全局變量x的值變為200,輸出200。20.B解析:模塊只有在第一次導入時,才會執行。2.操作題答案及解析1.①returns ②a.append(b)2.①ainrange(2,n+1) ②fact(n)3.①x:(max(x),min(x)) ②mm(a)4.①faver(a) ②returns/len(a)5.示例代碼及解析如下。def

f(a):

#參數a是存儲原矩陣的列表對象

r=len(a)

#獲得原矩陣的行數

c=len(a[0])

#獲得原矩陣的列數

b=[]

#用列表保存轉置矩陣

for

n

in

range(c):

#初始化轉置矩陣

b.append([0]*r)

for

i

in

range(r): #完成矩陣轉置

for

j

in

range(c):

b[j][i]=a[i][j]

return

ba=input('請輸入原矩陣:')a=a.split('

')

#按空格分解輸入數據為列表,先分解出每行的數據for

n

in

range(len(a)): #分解每行中的每列的數據

a[n]=a[n].split(',')print('原矩陣:')for

r

in

a:

#遍歷行

for

c

in

r:

#遍歷行中的元素

print('%-4s'%c,end='')

#每個數據占4列,左對齊,不換行

print()

#每行輸出之后換行b=f(a)print('轉置矩陣:')for

r

in

b:

for

c

in

r:

print('%-4s'%c,end='')

print()6.示例代碼及解析如下。def

f(a):

m=len(a)//2 #獲得中間位置

for

n

in

range(m):

if

len(a)%2==0:

a[n],a[m+n]=a[m+n],a[n]

#對換

else:

a[n],a[m+n+1]=a[m+n+1],a[n]

#對換

return

a(*b,)=eval(input('請輸入多個數據:')) #將輸入的多個數據作為列表賦給變量bb=f(b) #調用函數完成對換print('對換后:')for

r

in

b:

print(r,'',end='')7.示例代碼及解析如下。def

f(a,b):

c=[[0,0],[0,0]]

#創建用于保存乘法運算結果的列表

for

i

in

range(2): #遍歷結果列表,計算各個元素值

for

j

in

range(2):

c[i][j]=a[i][0]*b[0][j]+a[i][1]*b[1][j]

return

cx=input('請輸入矩陣A:') #輸入數據為字符串a=x.split('

')a[0]=list(eval(a[0]))

#將字符串表示的第1行數據轉換為列表a[1]=list(eval(a[1]))

#將字符串表示的第2行數據轉換為列表x=input('請輸入矩陣B:')b=x.split('

')b[0]=list(eval(b[0]))b[1]=list(eval(b[1]))x=f(a,b)print('矩陣A:') #輸出矩陣for

r

in

a:

for

c

in

r:

print('%-4s'%c,end='')

print()print('矩陣B:')for

r

in

b:

for

c

in

r:

print('%-4s'%c,end='')

print()print('A×B=')for

r

in

x:

for

c

in

r:

print('%-4s'%c,end='')

print()8.示例代碼及解析如下。def

f(n):

for

i

in

range(2,n//2):

if

n%i==0:

return

False

#n被i整除,不是素數,返回False

return

True

#n是素數,返回Truen=0print('[10,100]范圍內的素數:')for

x

in

range(10,100):

if

f(x):

print(x,'',end='')

n+=1

if

n%10==0:

print()9.示例代碼及解析如下。def

f(a,b):

c=a.replace(b,'')

#刪除字符串中包含的字符串b

return

repr(c)n=0x=input('請輸入字符串減法表達式:')c=x.split('-')

#分解字符串減法表達式print(x,'=',f(eval(c[0]),eval(c[1]))) #使用eval()函數獲得字符串減法表達式中的字符串10.示例代碼及解析如下。def

f(x):

s=0

for

n

in

x:

#求和

s+=n

return

s/len(x)

#返回平均值c=input('請輸入n個數:')(*x,)=eval(c)

#將字符串中的多個數作為列表賦給xc=c.replace(',','+')

#準備輸出的加法表達式print(c+'的平均值

=',f(x))單元7參考答案1.選擇題答案及解析1.D解析:文件的打開方式決定了文件的處理方式,所以文本文件可以按二進制格式打開并進行處理。借助第三方庫,Python幾乎可以處理所有類型的文件。2.C解析:存儲字符的文本文件可以用二進制格式讀取數據,讀取的是字節串。3.B解析:以文本格式打開的文件按照字符進行讀取。4.B解析:+必須與r、w、a組合使用。5.C解析:b表示按二進制格式讀寫文件數據,只表示讀數據的格式,與是否創建文件無關。b與r、w、a、x可組合使用。6.D解析:w為只寫模式,用于創建新文件。a為只寫、追加模式。x為只寫模式,用于創建新文件。r為只讀模式。7.D解析:打開模式a表示以追加方式打開文件,如果文件不存在,則會創建新文件。8.C解析:沒有readall()方法。9.A解析:readlines()方法將文件的全部內容讀入一個列表中,每行作為一個列表元素。10.A解析:本題中,f.read()方法讀出的內容為“Python,Java,C++\nJavaScript,HTML”,調用split(",")方法將其按逗號分解為列表。11.B解析:執行了fo.writelines(ls)語句后,文件指針指向文件末尾,再執行fo.seek(0)語句,文件指針指向文件開頭,從而讓后面的代碼能夠讀取寫入的數據。12.D解析:如果按文本格式打開文件,read(n)語句從文件指針當前位置開始讀取n個字符,直到文件結束;如果按二進制格式打開文件,read(n)語句從文件指針當前位置開始讀取n個字節,直到文件結束。省略參數或參數為負值時,read()方法讀取從文件指針當前位置開始到文件結束的全部內容。13.D解析:seek()方法用于移動文件指針,不能用于寫數據。14.C解析:os.chdir()方法用于改變當前工作目錄。os.mkdir()方法用于創建目錄。os.listdir()方法用于返回指定目錄包含的子目錄和文件名稱。15.D解析:CSV因為是純文本格式,只能用于存儲純文本的二維表格數據。16.A解析:CSV文件的分隔符可以是逗號、空格、制表符、其他字符或字符串。17.C解析:程序將列表[[1,2,3],[4,5,6],[7,8,9]]中的數據按CSV格式寫入文件中。18.B解析:writer()方法用于創建常規寫對象,其參數為打開的文件對象。DictWriter()方法用于創建字典寫對象,其參數為打開的文件對象和字段名列表。writeheader()是字典寫對象的方法,用于向文件中寫入字段名。常規寫對象調用writerow()方法需提供列表作為參數,字典寫對象調用writerow()方法需提供字典作為參數。19.D解析:選項D錯誤,字典是無序的,不適合用于表示一維或二維數據。20.D解析:選項A錯誤,二維表格中的數據才是二維數據。選項B錯誤,高維數據中數據之間不一定存在關聯關系。選項C錯誤,CSV格式的一行數據是一維數據,包含多行的CSV格式數據為二維數據。2.操作題答案及解析1.①'w' ②f.write(c+'\n')或者print(c,file=f)2.①'w+' ②f.seek(0)3.①a=list(a) ②f.write(a)4.①(*a,)=eval(a) ②a.sort()5.示例代碼及解析如下。f=open('d:/test7-5.txt')for

b

in

f:

#按行迭代文件

b=b.strip()

#去掉行尾的換行符

for

c

in

b:

if

c<'0':

#c是運算符時,處理輸出

n=b.index(c)

#獲得運算符的位置

print('%2s'%b[:n],c,'%-2s'%b[n+1:],'=',eval(b)) #設置寬度以便對齊

breakf.close()6.示例代碼及解析如下。f=open('d:/test7-6.txt',encoding=’utf-8’)d=[]t=next(f)

#讀出標題行for

b

in

f:

#按行迭代文件

b=b.split(',')

#將數據按逗號分解為列表

b[2]=int(b[2])

#將成績字符串轉換為整數

b[3]=int(b[3])

b[4]=int(b[4])

b.append(sum(b[2:]))

#計算總成績

d.append(b)def

fk(a):

return

a[5]

#返回子列表的總成績用于排序d.sort(key=fk,reverse=True)n=1#輸出時注意對齊xm='{1:{0}<4}'.format(chr(12288),'姓名')print('

%-4s%-5s%s

%-4s

%-4s

%-4s

%s'

%('名次','學號',xm,'語文','數學','外語','總成績'))for

a

in

d:

print('{0:^6d}'.format(n),'%-6s'%

a[0],

'{1:{0}<4}'.format(chr(12288),a[1]),

'%-7s%-7s%-7s%s'

%tuple(a[2:]))

n+=1

#計算名次f.close()7.示例代碼及解析如下。f=open('d:/test7-7.txt')d=[]for

b

in

f:

#按行迭代文件

(*a,)=eval(b)

#將每行中的數據以列表方式賦給變量a

d.append(a)

#添加到列表中f.close()r,c=d[0][0],d[0][1]

#獲得稀疏矩陣行列數x=[]

#初始化稀疏矩陣for

n

in

range(r):

x.append([0]*c)del

d[0]for

r

in

d: #將非0元素填入稀疏矩陣

x[r[0]-1][r[1]-1]=r[2]

#輸出稀疏矩陣for

r

in

x:

for

c

in

r:

print('%-4s'%c,end='')

print()8.示例代碼及解析如下。f=open('test7-6.txt',encoding='utf-8')d=[]t=next(f)

#讀出標題行for

b

in

f:

#按行迭代文件

b=b.split(',')

#將數據按逗號分解為列表

b[2]=int(b[2])

#將成績字符串轉換為整數

b[3]=int(b[3])

b[4]=int(b[4])

b.append(round(sum(b[2:])/3,1))

#計算平均成績

del

b[2:-1]

#刪除各門課程成績

d.append(b)#將列表存入文件“test7-8.txt”中import

pickle

#使用pickle模塊從文件中讀寫對象f=open('test7-8.txt','wb')

#使用二進制文件存儲對象pickle.dump(d,f)

#將列表對象寫入文件中f.close()print('數據已存入文件:test7-8.txt')f=open('test7-8.txt','rb')

#以二進制格式打開文件,讀數據ds=pickle.load(f)

#讀出列表對象f.close()def

fk(a):

return

a[2]

#返回子列表的平均成績用于排序d.sort(key=fk,reverse=True)n=1#輸出時注意對齊xm='{1:{0}<4}'.format(chr(12288),'姓名')print('

%-4s%-5s%s

%s'

%('名次','學號',xm,'平均成績'))for

a

in

d:

print('{0:^6d}'.format(n),'%-6s'%

a[0],

'{1:{0}<4}'.format(chr(12288),a[1]),a[2])

n+=1

#計算名次9.示例代碼及解析如下。f=open('d:/test7-9.txt')

d=f.read()(*data,)=eval(d)

#讀出數據,存入列表中f.close()print('排序前:',end='')for

a

in

data:

print(a,end='

')n=len(data)for

i

in

range(n-1):

#使用冒泡排序完成排序

for

j

in

range(n-i-1):

if

data[j]>data[j+1]:

t=data[j]

data[j]=data[j+1]

data[j+1]=tprint('\n排序后:',end='')for

a

in

data:

print(a,end='

')10.示例代碼及解析如下。import

csvf=open('test7-10-1.csv')cr=csv.DictReader(f)d={}

#用字典對象來統計總數量和總金額for

r

in

cr:

zs=zj=0

if

r['編號']

in

d:

zs=d[r['編號']]['總數量']

#獲得現有數據

zj=d[r['編號']]['總金額']

zs+=int(r['數量'])

zj+=int(r['數量'])*float(r['單價'])

d[r['編號']]={'商品名稱':r['商品名稱'],'總數量':zs,'總金額':zj}

#存入字典中f.close()ds=list(d.items())

#將字典轉換為列表def

fk(a):

return

a[0]

#返回列表的第0項,即編號字段,用于排序ds.sort(key=fk)

#排序f=open('test7-10-2.csv','w')cw=csv.DictWriter(f,fieldnames=['編號','商品名稱','總數量','總金額'])cw.writeheader() #寫入字段名for

r

in

ds:

r[1]['編號']=r[0]

#將編號加入字典中

cw.writerow(r[1])

#將字典寫入CSV文件中f.close()print('數據以寫入文件test7-10-2.csv')單元8參考答案1.選擇題答案及解析1.A解析:turtle庫是Python用于繪制圖形的標準庫。2.D解析:seth()方法用于設置畫筆朝向。colormode()方法用于設置顏色模式。bk()方法用于使畫筆后退指定距離。3.B解析:顏色值表示為RGB三元組或者顏色字符串,B選項錯誤。4.A解析:使用turtle.circle()方法畫圓時,圓心在畫筆左側。因為圓是360°,所以結束畫圓時,畫筆返回開始的位置,且朝向不變。本題中,turtle.circle(i)語句從同一個位置開始,繪制不同半徑的相切的圓。5.D解析:fd(60)語句讓畫筆沿當前朝向前進60個像素。left(90)語句讓畫筆向左旋轉90。6.C解析:turtle.forward()方法使畫筆沿當前朝向前進;turtle.goto()方法將畫筆移動到指定位置,朝向不變。turtle.circle()方法用于畫圓、圓弧或正多邊形。turtle.right()方法和turtle.rt()方法使畫筆向右旋轉。7.B解析:turtle.ontimer(fun,t=0)在t指定的時間(以ms為單位)后,執行fun指定的函數。8.D解析:r9.C解析:沒有指定隨機數種子時,Python使用當前系統時間作為隨機數種子。10.D解析:random庫的random()方法返回[0.0,1.0]范圍內的一個隨機浮點數。round(x,2)語句將x保留2位小數。11.B解析:random.sample(seq,n)函數從序列seq中隨機選擇n個不重復元素,組成一個列表并返回。12.B解析:time庫是Python的標準庫,只能在使用import語句導入后才能使用。time.time()函數返回自1970年1月1日00:00:00(UTC)以來時間的秒數(浮點數格式)。13.C解析:時間格式化字符串中,%y表示2位的年份,%m表示2位的月份,%d表示2位的日期,%H表示2位的小時數,%M表示2位的分鐘數,%S表示2位的秒數。14.C解析:time.strftime()方法在未指定時間時使用當前日期和時間。15.A解析:Checkbutton組件用于創建復選框,復選框有選中和未選中兩種狀態,通常將其綁定到BooleanVar變量。16.C解析:showinfo()方法用于顯示普通信息對話框;showwarning()方法用于顯示警告信息對話框;showerror()方法用于顯示錯誤提示信息對話框;askquestion()方法用于顯示問題對話框。17.B解析:askcolor()函數返回值為一個二元組,其格式為((RGB三元組),"#十六進制顏色值"),如((255.99609375,0.0,0.0),'#ff0000')。18.D解析:turtle是用于繪圖的標準庫。19.C解析:time.perf_counter_ns()方法用于返回性能計數器的整數納秒值。20.C解析:Tkinter是用于設計圖形用戶界面的庫。2.操作題答案及解析1.①fromturtleimport* ②end_fill()2.①fd(200) ②goto(100,0)或者fd(100)3.①begin_poly() ②register_shape('mp',p)4.①fromrandomimport* ②sample(cf,1)[0]5.示例代碼及解析如下。from

turtle

import

*pensize(2) #設置畫筆寬度(線條寬度)fd(180) #繪制長邊,其長度為矩形的長度減去兩個圓角的半徑circle(10,90) #繪制90°圓弧fd(80) #繪制短邊,其長度為矩形的寬度減去兩個圓角的半徑circle(10,90)fd(180)circle(10,90)fd(80)circle(10,90)6.示例代碼及解析如下。from

random

import

randintdef

f(n):

#判斷n是否為素數,若它是素數則返回True,否則返回False

for

a

in

range(2,n//2):

if

n%a==0:

return

False

return

Truec=0while

c<10:

x=randint(10,1000)

while

x%2!=0:

#獲得一個隨機偶數

x=randint(10,1000)

c+=1

#對偶數計數

#分解偶數

ok=False

for

n

in

range(2,x//2+1):

if

f(n)

and

f(x-n): #n和x-n均為素數時,輸出結果

print('%3d'%x,'=','%3d'%n,'+',x-n)

ok=True

break

if

not

ok:

print(x,'不能表示為兩個素數的和。')

7.示例代碼及解析如下。from

random

import

*def

f(n):

#判斷n是否為素數,保證被除數能被整除

for

a

in

range(2,n//2):

if

n%a==0:

return

False

return

Truedef

divs(n):

#返回n的因子列表,不包含1和n,以便取除數

d=[]

for

x

in

range(2,n):

if

n%x==0:

d.append(x)

return

dn=0cf='+-*/'w

溫馨提示

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

評論

0/150

提交評論