




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第4單元
組合數(shù)據(jù)類型任務(wù)4.1夜幕下的霓虹燈任務(wù)4.2旋轉(zhuǎn)摩天輪任務(wù)4.3人民幣大寫轉(zhuǎn)化拓展任務(wù)生成本學(xué)習(xí)目標(biāo)知識目標(biāo)技能目標(biāo)素質(zhì)目標(biāo)掌握列表的創(chuàng)建和基本操作方法。掌握元組的創(chuàng)建和基本操作方法。掌握字典的創(chuàng)建和基本操作方法。掌握集合的創(chuàng)建和常見的操作方法,了解集合操作符的基本使用方法。掌握4種組合數(shù)據(jù)類型的區(qū)別及應(yīng)用場景。能夠根據(jù)需求選擇合適的組合數(shù)據(jù)類型存儲數(shù)據(jù)。能夠在程序開發(fā)過程中,根據(jù)需要靈活使用列表存儲和操作數(shù)據(jù)。能夠在程序開發(fā)過程中,根據(jù)需要靈活使用元組存儲和操作數(shù)據(jù)。能夠在程序開發(fā)過程中,根據(jù)需要靈活使用字典存儲和操作數(shù)據(jù)。能夠在程序開發(fā)過程中,根據(jù)需要靈活使用集合存儲和操作數(shù)據(jù)。培養(yǎng)學(xué)習(xí)者自主學(xué)習(xí)、認真鉆研的好習(xí)慣。培養(yǎng)學(xué)習(xí)者全面考慮、精益求精的工匠精神。培養(yǎng)學(xué)習(xí)者的團隊意識和溝通能力。教學(xué)內(nèi)容任務(wù)4.1夜幕下的霓虹燈一、任務(wù)描述每當(dāng)夜幕降臨,城市中大大小小的建筑物就會亮起五顏六色的霓虹燈。霓虹燈的顏色變化多端,一會兒是藍色的,一會兒又是紅色的、綠色的,讓人應(yīng)接不暇。使用海龜作圖庫turtle實現(xiàn)夜幕下的霓虹燈閃爍效果,畫布中100個不同顏色的點在閃爍,點的位置和顏色不停變化,變化的時間間隔不固定,閃爍效果截圖如圖所示。
二、相關(guān)知識序列(sequence)是指按特定順序排列的一組數(shù)據(jù),字符串、列表、元組是常見的序列。序列的索引正向索引
反向索引1.序列str="Python是一種代表簡單主義思想的語言"print(str[0],"==",str[-20])print(str[19],"==",str[-1])二、相關(guān)知識(2)序列切片:通過切片操作,可以生成一個新的序列。
sname:表示序列的名稱。start:開始索引位置(包括該位置),默認為0。end:結(jié)束索引位置(不包括該位置,則默認為序列的長度。step:隔幾個存儲位置(包含當(dāng)前位置)取一次元素str="Python是一種代表簡單主義思想的語言"print(str[:2])#取索引區(qū)間為[0,2](不包括索引2處的字符)的字符串print(str[::2])#隔1個字符取一個字符,范圍是整個字符串print(str[:])#取整個字符串,此時[]中只需一個冒號即可sname[start:end:step]二、相關(guān)知識(3)序列相加:序列使用“+”運算符做相加操作,它會將兩個序列進行連接,不會去除重復(fù)的元素。
(4)序列相乘:使用數(shù)字n乘一個序列會生成新的序列,其內(nèi)容為原來序列被重復(fù)n次的結(jié)果。(5)檢查元素是否包含在序列中:可以使用關(guān)鍵字in、notin檢查某元素是否包含在序列中。str='Python愛好者' #定義字符串print(str*3) #輸出相同的字符串3次lt=[4,5,6] #定義列表print(lt*5) #輸出相同的列表數(shù)據(jù)5次id='2004010020'name='張宏偉'print('學(xué)號:'+id+',姓名:'+name)str="biancheng"print('c'instr)str="biancheng"print(‘c’notinstr)二、相關(guān)知識(6)和序列相關(guān)的內(nèi)置函數(shù)。str="biancheng"print(max(str)) #找出最大的字符并輸出print(min(str)) #找出最小的字符并輸出print(sorted(str)) #對字符串中的元素進行排序并輸出函數(shù)功能len()計算序列的長度,即返回序列中包含多少個元素max()找出序列中的最大元素min()找出序列中的最小元素list()將序列轉(zhuǎn)換為列表str()將序列轉(zhuǎn)換為字符串sum()計算序列元素之和。sorted()對元素進行排序reversed()反向序列中的元素enumerate()將序列組合為一個索引序列,多用在for循環(huán)中列表是Python中最靈活的有序序列,它可以存儲任意類型的元素。開發(fā)人員可以對列表中的元素進行添加、刪除、修改等操作。二、相關(guān)知識2.列表[element1,element2,element3,...,elementn]["IlikePython!",1,[2,3,4],3.0]使用中括號“[]”創(chuàng)建列表時,只需要在“[]”中使用逗號分隔每個元素即可。使用中括號創(chuàng)建列表list_one=[] #空列表list_two=['p','y','t','h','o','n']#列表中元素類型均為字符串類型list_three=[1,'a','&',2.3] #列表中元素類型不同二、相關(guān)知識(1)創(chuàng)建列表使用list()函數(shù)創(chuàng)建列表時,需要給該函數(shù)傳入一個可迭代類型的數(shù)據(jù)。使用list()函數(shù)創(chuàng)建列表list0=list('python')#字符串類型是可迭代類型list1=list([1,'python'])#列表類型是可迭代類型tuple1=('Python','Java','C++','JavaScript’)list2=list(tuple1) #將元組轉(zhuǎn)換成列表dict1={'a':100,'b':42,'c’:9}list3=list(dict1) #將字典轉(zhuǎn)換成列表range1=range(1,6)list4=list(range1) #將區(qū)間轉(zhuǎn)換成列表列表的創(chuàng)建方式可以使用索引訪問列表中的某個元素,也可以使用切片訪問列表中的一組元素。url=list("Pythoniseasytolearn,soIlikeitverymuch.")#使用索引訪問列表中的某個元素print(url[3]) #使用正索引并輸出元素print(url[-4]) #使用負索引并輸出元素#使用切片訪問列表中的一組元素print(url[9:18]) #使用正數(shù)切片并輸出元素print(url[9:18:3]) #指定步長并輸出元素print(url[-6:-1]) #使用負數(shù)切片并輸出元素二、相關(guān)知識(2)訪問列表元素常使用del關(guān)鍵字來刪除列表。intlist=[1,45,8,34]print(intlist)delintlistprint(intlist)二、相關(guān)知識(3)刪除列表dellistname使用extend()函數(shù)添加列表元素l=['Python','C++','Java']l.extend('C') #追加元素print(l)t=('JavaScript','C#','Go')l.extend(t) #追加元組,元祖被拆分成多個元素print(l)l.extend(['Ruby','SQL']) #追加列表,列表被拆分成多個元素print(l)二、相關(guān)知識(4)添加列表元素listname.extend(obj)使用append()函數(shù)添加列表元素l=['Python','C++','Java']l.append('PHP') #追加元素print(l)t=('JavaScript','C#','Go')l.append(t) #追加元組,整個元組被當(dāng)成一個元素print(l)l.append(['Ruby','SQL'])#追加列表,整個列表被當(dāng)成一個元素print(l) 二、相關(guān)知識listname.append(obj)使用insert()函數(shù)插入列表元素。l=['Python','C++','Java']l.insert(1,'C') #插入元素print(l)t=('C#','Go')l.insert(2,t) #插入元組,整個元祖被當(dāng)成一個元素print(l)l.insert(3,['Ruby','SQL']) #插入列表,整個列表被當(dāng)成一個元素print(l)l.insert(0,"")#插入字符串,整個字符串被當(dāng)成一個元素print(l)二、相關(guān)知識listname.insert(index,obj)使用“+”連接列表。language=["Python","C++","Java"]birthday=[1991,1998,1995]info=language+birthdayprint("language=",language)print("birthday=",birthday)print("info=",info)二、相關(guān)知識可以使用“+”運算符將多個序列連接起來,生成一個新的列表,原有的列表不會改變使用del關(guān)鍵字根據(jù)索引刪除列表元素lang=["Python","C++","Java","PHP","Ruby","MATLAB"]dellang[2]#使用正索引print(lang)dellang[-2]#使用負索引print(lang)二、相關(guān)知識(5)刪除列表元素dellistname[index]lang=["Python","C++","Java","PHP","Ruby","MATLAB"]dellang[1:4]print(lang)lang.extend(["SQL","C#","Go"])dellang[-5:-2]print(lang)dellistname[start:end]使用pop()函數(shù)根據(jù)索引刪除列表元素nums=[40,36,89,2,36,100,7]nums.pop(3)print(nums)nums.pop()print(nums)二、相關(guān)知識listname.pop(index)nums=[40,36,89,2,36,100,7]nums[2]=-26#使用正索引nums[-3]=-66.2#使用負索引print(nums)使用remove()函數(shù)根據(jù)元素值刪除列表元素使用clear()函數(shù)刪除列表所有元素nums=[40,36,89,2,36,100,7]nums.remove(36)#第一次刪除36print(nums)nums.remove(36)#第二次刪除36print(nums)nums.remove(78)#刪除78print(nums)可以修改單個元素也可以修改一組nums=[40,36,89,2,36,100,7]nums[2]=-26#使用正索引nums[-3]=-66.2#使用負索引nums[1:4]=[45.25,-77,-52.5]#修改第1~4個元素的值(不包括第4個元素)nums[4:4]=[-77,-52.5,999]#在索引為4的位置插入元素nums[1:6:2]=[0.025,-99,20.5]#步長為2,為第1、3、5個元素賦值s=list("Hello")s[2:4]="XYZ"二、相關(guān)知識(6)修改列表元素使用index()函數(shù)查找元素的位置listname.index(obj,start,end)二、相關(guān)知識(7)查找列表元素nums=[40,36,89,2,36,100,7,-20.5,-999]print(nums.index(2)) #檢索并輸出列表中的所有元素print(nums.index(100,3,7)) #檢索并輸出索引為3~7的元素print(nums.index(7,4)) #檢索并輸出索引為4之后的元素print(nums.index(55)) #檢索并輸出索引為一個不存在的元素使用count()函數(shù)統(tǒng)計某個元素出現(xiàn)的次數(shù)listname.count(obj)二、相關(guān)知識nums=[40,36,89,2,36,100,7,-20.5,36]print("36出現(xiàn)了%d次"%nums.count(36))#統(tǒng)計并輸出元素出現(xiàn)的次數(shù)ifnums.count(100):#判斷一個元素是否存在print("列表中存在100這個元素")else:print("列表中不存在100這個元素")列表是一個可迭代對象,它可以通過for循環(huán)遍歷元素。二、相關(guān)知識(8)遍歷列表sList=['張國強','李子奇','胡麗麗','宋倩倩','高紅可']foriinsList:print(i,',今天在1011教室召開主題班會,請準(zhǔn)時參加!')sort()方法能夠?qū)α斜碓嘏判颍摲椒ǖ恼Z法格式如下:sort(key=None,reverse=False)參數(shù)如下:key
--
表示指定的排序規(guī)則。reverse
--
表示控制列表元素排序的方式。二、相關(guān)知識(9)列表排序sorted()方法可以按升序方式排列列表元素,該方法的返回值是升序排列后的新列表。li_one=[4,3,2,1]li_two=sorted(li_one)print(li_one)#原列表print(li_two)#排序后列表[4,3,2,1][1,2,3,4]二、相關(guān)知識reverse()方法用于將列表中的元素倒序排列,即把原列表中的元素從右至左依次排列存放。li_one=['a','b','c','d']li_one.reverse()print(li_one)['d','c','b','a']二、相關(guān)知識二、相關(guān)知識3.Random庫函數(shù)說明random()返回(0,1]的隨機實數(shù)randint(x,y)返回[x,y]的隨機整數(shù)choice(seq)從序列seq中隨機返回一個元素uniform(x,y)返回[x,y]的隨機浮點數(shù)importrandoma=random.random()#隨機生成0~1的實數(shù)n=random.randint(1,100)#隨機生成1~100的整數(shù)colors=['red','blue','green','yellow','black']color=random.choice(colors)#隨機選取列表中的一個元素print('隨機生成的實數(shù)是:',a)print('隨機生成的整數(shù)是:',n)print('隨機生成的顏色是:',color)二、相關(guān)知識4.相關(guān)turtle庫函數(shù)說明turtle.bgcolor(*args):設(shè)置或返回背景顏色。turtle.clear():從屏幕中刪除海龜?shù)睦L圖。不移動海龜,海龜?shù)臓顟B(tài)和位置以及其他海龜?shù)睦L圖不受影響。三、任務(wù)分析
畫布背景為黑色,需要設(shè)置標(biāo)題,隱藏海龜形狀,另外為了方便計算點的位置,需要設(shè)置畫布大小。
定義一個顏色列表,在繪制點時隨機從顏色列表中選取顏色。定義一個新列表,用于存放100個點的位置。
圖中的點的位置在變化,其顏色也在變化,可以考慮使用清空畫布操作,重新設(shè)置點的位置和顏色后繪制,重復(fù)上述過程,即可實現(xiàn)霓虹燈閃爍效果。需要使用tracer()函數(shù)關(guān)閉動畫的自動刷新功能。三、任務(wù)分析經(jīng)過上述分析,程序需要循環(huán)實現(xiàn)以下功能。清空畫布,清空位置列表。隨機生成100個位置并加入位置列表。遍歷位置列表,隨機選取顏色,在相應(yīng)位置繪制彩點。更新屏幕顯示內(nèi)容。隨機設(shè)置休眠時間。動畫實現(xiàn)原理如圖所示。四、任務(wù)實現(xiàn)(1)在PyCharm中,選擇“File”→“NewProject…”,在彈出的對話框中將項目命名為“chapter04”,單擊“Create”按鈕,創(chuàng)建新項目。(2)在PyCharm中,右擊左側(cè)列表中的項目名稱“chapter04”,選擇“New”→“PythonFile”,在彈出的對話框中將文件命名為“4-1夜幕下的霓虹燈.py”,按“Enter”鍵,進入代碼編輯界面。(3)在新建文件中導(dǎo)入庫。除了導(dǎo)入海龜作圖庫turtle,還需要導(dǎo)入time庫和random庫,用于控制點的顏色、位置和閃爍時間間隔。。importtime #導(dǎo)入time庫importturtleast #導(dǎo)入海龜作圖庫importrandom #導(dǎo)入random庫四、任務(wù)實現(xiàn)(4)設(shè)置畫布大小為800×600、背景為黑色、標(biāo)題為“夜幕下的霓虹燈”,關(guān)閉自動刷新功能,隱藏海龜形狀,設(shè)置筆的狀態(tài)為抬起。(5)定義顏色列表并設(shè)置列表值,定義一個位置列表。位置會隨時變化,所以位置列表的初始值為空。t.setup(800,600) #設(shè)置畫布大小t.bgcolor('black') #設(shè)置背景為黑色t.title('夜幕下的霓虹燈’) #設(shè)置標(biāo)題t.tracer(0,0) #關(guān)閉自動刷新功能t.hideturtle() #隱藏海龜形狀t.penup() #抬起筆#定義顏色列表cs=['red','orange','yellow','green','white','gray','cyan','blue','purple’,
'pink','magenta']poses=[]#定義空位置列表四、任務(wù)實現(xiàn)(6)循環(huán)實現(xiàn)以下功能:清空畫布;清空位置列表;隨機生成100個位置并加入位置列表;遍歷位置列表,隨機設(shè)置顏色,在相應(yīng)位置繪制彩點;更新屏幕顯示內(nèi)容;隨機設(shè)置休眠時間;休眠。whileTrue:
t.clear()#清空畫布
poses.clear()#清空位置列表
#隨機生成100個位置并加入位置列表
for_inrange(100):
x=random.randint(-400,400)
y=random.randint(-300,300)
poses.append([x,y])
#遍歷位置列表,隨機設(shè)置顏色,在相應(yīng)位置繪制彩點
forposinposes:
t.color(random.choice(cs))
t.goto(pos)
t.dot(20)
t.update()#更新屏幕顯示內(nèi)容
ti=min(0.1+random.random(),0.5)#隨機設(shè)置休眠時間
time.sleep(ti)#休眠任務(wù)4.2旋轉(zhuǎn)摩天輪一、任務(wù)描述在游樂園里,我們經(jīng)常看到摩天輪,乘客坐在旋轉(zhuǎn)的摩天輪上,可以從高處俯瞰四周景色。請使用海龜作圖庫turtle實現(xiàn)摩天輪旋轉(zhuǎn)的動畫效果。給定背景圖片,摩天輪的座艙圍繞中心勻速旋轉(zhuǎn),如圖所示。
二、相關(guān)知識
元組也是由一系列按特定順序排列的元素組成,元組是不可變序列,元組的所有元素都放在一對圓括號“()”中,相鄰元素之間用逗號分隔。
從存儲內(nèi)容上看,元組可以存儲整數(shù)、實數(shù)、字符串、列表、元組等任何類型的數(shù)據(jù)
在Python中,元組的數(shù)據(jù)類型為tuple,通過type()函數(shù)即可查。1.元組(element1,element2,...,elementn)("biancheng",1,[2,'a'],("abc",3.0))
ptint(type(("biancheng",1,[2,'a'],("abc",3.0))))使用圓括號“()”創(chuàng)建元組,并將元組中的元素用逗號進行分隔。使用圓括號創(chuàng)建元組2.
創(chuàng)建元組二、相關(guān)知識tuplename=(element1,element2,...,elementn)num=(7,14,21,28,35)course=("人郵教育","")abc=("Python",19,[1,2],('c',2.0))當(dāng)使用圓括號“()”創(chuàng)建元組時,如果元組中只包含一個元素,那么需要在該元素的后面添加逗號,從而保證Python解釋器能夠識別其為元組類型。二、相關(guān)知識當(dāng)通過tuple()函數(shù)創(chuàng)建元組時,如果不傳入任何數(shù)據(jù),就會創(chuàng)建一個空元組;如果要創(chuàng)建包含元素的元組,就必須傳入可迭代類型的數(shù)據(jù)。使用tuple()函數(shù)創(chuàng)建元組二、相關(guān)知識tup1=tuple("hello") #將字符串轉(zhuǎn)換成元組print(tup1)list1=['Python','Java','C++','JavaScript']tup2=tuple(list1) #將列表轉(zhuǎn)換成元組print(tup2)dict1={'a':100,'b':42,'c':9}tup3=tuple(dict1) #將字典轉(zhuǎn)換成元組print(tup3)range1=range(1,6)tup4=tuple(range1) #將區(qū)間轉(zhuǎn)換成元組print(tup4)print(tuple()) #創(chuàng)建空元組并輸出tuple(data)元組可以使用索引訪問元組中的元素。元組還可以使用切片來訪問元組中的元素3.訪問元組元素url=tuple("https:///book")#使用索引訪問元組中的某個元素print(url[3]) #使用正索引并輸出print(url[-4]) #使用負索引并輸出#使用切片訪問元組中的一組元素print(url[9:18]) #使用正數(shù)切片并輸出print(url[9:18:3]) #使用指定步長切片并輸出print(url[-6:-1]) #使用負數(shù)切片并輸出tuplename[i]#i可以為正數(shù),也可以為負數(shù)tuplename[start:end:step]二、相關(guān)知識元組是不可變序列,元組中的元素不能被修改,所以只能創(chuàng)建一個新的元組去替代舊的元組。可以通過連接多個元組(使用“+”可以連接元組)的方式向元組中添加新元素4.修改元組tup=(100,0.5,-36,73)print(tup)tup=('人郵教育',"/book")#對元組重新賦值print(tup)tup1=(100,0.5,-36,73)tup2=(3+12j,-54.6,99)print(tup1+tup2)print(tup1)print(tup2)二、相關(guān)知識當(dāng)創(chuàng)建的元組不再使用時,可以通過del關(guān)鍵字將其刪除5.刪除元組tup=('人郵教育',"https:///book")print(tup)deltupprint(tup)二、相關(guān)知識
turtle.shape(type_,data):表示海龜形狀的數(shù)據(jù)結(jié)構(gòu)建模,type_的取值為字符串"polygon"、"image"或"compound"。"polygon"表示多邊形元組,"image"表示圖片,"compound"表示復(fù)合形狀,必須使用addcomponent()函數(shù)來構(gòu)建。addcomponent(poly,fill,outline=None):可以用來構(gòu)造復(fù)合的形狀poly表示多邊形,即由數(shù)值對構(gòu)成的元組,fill表示填充顏色,outline用于指定多邊形的輪廓。turtle.register_shape(name,shape=None):注冊自定義形狀,name表示形狀名稱,shape表示復(fù)合類對象。6.相關(guān)turtle庫函數(shù)說明二、相關(guān)知識三、任務(wù)分析
摩天輪的座艙需要學(xué)習(xí)者自行繪制,座艙是由一個粉色三角形和一個灰色三角形組成的。座艙可以用turtle庫的復(fù)合形狀來繪制。turtle庫中有一個shape類,通過shape類可以實例化一個造型,通過addcomponent()函數(shù)將各種形狀添加為造型,最后用register_shape()函數(shù)把造型注冊到造型字典中,我們就可以在程序中使用新建的造型了。1.繪制座艙形狀shape類實例化一個造型addcomponent()函數(shù)將各種形狀添加為造型register_shape()函數(shù)把造型注冊到造型字典三、任務(wù)分析
座艙可以使用turtle庫中的印章功能來實現(xiàn),可以看出座艙的個數(shù)為60。實現(xiàn)方式為:海龜從中心點移動半徑距離,之后蓋座艙印章,再回到中心點,旋轉(zhuǎn)360°/60,即6°,以此類推,共循環(huán)60次,最后海龜回到中心點。
旋轉(zhuǎn)動畫的實現(xiàn)思路為,關(guān)閉畫布自動刷新功能,循環(huán)執(zhí)行以下操作:清空畫布,繪制摩天輪,海龜向左旋轉(zhuǎn)1°,更新畫布內(nèi)容。2.旋轉(zhuǎn)動畫四、任務(wù)實現(xiàn)(1)在PyCharm中,右擊左側(cè)列表中的項目名稱“chapter04”,選擇“New”→“PythonFile”,在彈出的對話框中將文件命名為“4-2旋轉(zhuǎn)摩天輪.py”,按“Enter”鍵,進入代碼編輯界面。(2)在新建文件中導(dǎo)入turtle庫并設(shè)置別名為“t”。importturtleast(3)創(chuàng)建并注冊座艙造型:使用shape("compound")創(chuàng)建復(fù)合形狀對象并取名為diamond;造型左上部分實際上是由折線組成的粉色三角形,將其設(shè)置成記錄三角形頂點的元組ploy1,同理,造型右下部分設(shè)置成記錄三角形頂點的元組ploy2,假設(shè)座艙中心點坐標(biāo)為(0,0),座艙邊長為14,則各頂點的坐標(biāo)設(shè)置如圖所示;使用復(fù)合形狀對象的addcomponent(ploy1,
"gray")函數(shù)將ploy1添加到造型中,并設(shè)置為粉色,同理將ploy2加入造型;最后,使用register_shape("diamond",diamond)函數(shù)把復(fù)合形狀對象diamond注冊到造型字典中,并取名為diamond。四、任務(wù)實現(xiàn)diamond=t.Shape("compound")#新建復(fù)合形狀對象poly1=((-7,-7),(7,-7),(7,7))#右下灰折線頂點元組diamond.addcomponent(poly1,"gray")#將形狀ploy1添加到造型中,顏色為灰色poly2=((-7,-7),(-7,7),(7,7))#左上粉折線頂點元組diamond.addcomponent(poly2,"pink")#將形狀ploy2添加到造型中,顏色為粉色t.register_shape("diamond",diamond)#將復(fù)合形狀注冊到造型字典中,并取名為diamond四、任務(wù)實現(xiàn)(4)設(shè)置窗體標(biāo)題、背景圖片,將海龜形狀設(shè)置為新定義的座艙造型,設(shè)置筆的顏色和寬度。(5)繪制摩天輪:海龜原始位置在中心點,先前進200個單位長度,在該位置蓋印章留下一個座艙印章,再退回到中心點,旋轉(zhuǎn)6°,可使60個座艙均勻分布,依次類推,循環(huán)60次。t.title('旋轉(zhuǎn)摩天輪') #設(shè)置窗體標(biāo)題t.bgpic('bluesky.png') #設(shè)置背景圖片t.color('red') #設(shè)置畫筆顏色t.pensize(2) #設(shè)置畫筆寬度t.shape("diamond") #將海龜形狀設(shè)置為新創(chuàng)建的造型diamondfor_inrange(60): #循環(huán)60次
t.fd(200) #海龜前進200個單位長度
t.stamp() #蓋印章,在當(dāng)前位置留下一個座艙印章
t.bk(200) #退回到中心點
t.rt(360/60) #旋轉(zhuǎn)6°,這樣計算可使60個座艙均勻分布四、任務(wù)實現(xiàn)(6)實現(xiàn)旋轉(zhuǎn)動畫。關(guān)閉畫布自動刷新功能,循環(huán)執(zhí)行以下操作:清空畫布,繪制摩天輪,海龜旋轉(zhuǎn)1°,為下次繪制做準(zhǔn)備,更新畫布內(nèi)容。t.tracer(0) #關(guān)閉畫布自動刷新功能whileTrue:
t.clear() #清空畫布
for_inrange(60): #繪制摩天輪
t.fd(200) #海龜前進200個單位長度
t.stamp() #蓋印章,在當(dāng)前位置留下一個座艙印章
t.bk(200) #退回到中心點
t.rt(360/60) #旋轉(zhuǎn)6°,這樣計算可使60個座艙均勻分布
t.left(1) #海龜向左旋轉(zhuǎn)1°
t.update() #更新畫布內(nèi)容t.mainloop()任務(wù)4.3人民幣大寫轉(zhuǎn)化
在金融業(yè)務(wù)中,人民幣大寫與小寫并存,為的是更加正確無誤地辦理業(yè)務(wù)。大小寫互相參照的方式對賬目的準(zhǔn)確性以及核對有效性提供了更加便利的、有效的依據(jù)。銀行、單位和個人填寫的各種票據(jù)和結(jié)算憑證是辦理支付結(jié)算和現(xiàn)金收付的重要依據(jù)。但人民幣大寫很容易寫錯,本任務(wù)主要實現(xiàn)的功能是,在提示窗口中輸入人民幣小寫金額,單擊“OK”按鈕后生成與小寫金額對應(yīng)的大寫金額。一、任務(wù)描述
二、相關(guān)知識
字典(dict)是一種無序的、可變的類型,它的元素以“鍵值對”(key-value)的形式存儲。字典是Python中唯一的映射類型。1.字典字典的數(shù)據(jù)類型為dict,通過type()函數(shù)即可查看。主要特征解釋字典是通過鍵來獲取元素的字典有時也稱為關(guān)聯(lián)數(shù)組或者哈希(hash)表。它通過鍵將一系列的值聯(lián)系起來,這樣就可以通過鍵從字典中獲取指定項,但不能通過索引來獲取字典是任意數(shù)據(jù)類型的無序集合列表和元組通常會將索引為0對應(yīng)的元素稱為第一個元素,而字典中的元素是無序的字典是可變的,可以任意嵌套字典可以在原處增長或者縮短(無須生成一個副本),支持任意深度的嵌套,即字典存儲的值也可以是列表或其他字典字典中的鍵是唯一的在字典中,不支持同一個鍵出現(xiàn)多次的情況,否則只會保留最后一個鍵值對字典中的鍵是不可變的字典中每個鍵值對的鍵是不可變的,只能使用數(shù)字、字符串或者元組,不能使用列表
使用花括號“{}”創(chuàng)建字典時,字典的鍵(key)和值(value)使用冒號連接,每個鍵值對之間使用逗號分隔。使用花括號{}創(chuàng)建字典{鍵1:值1,鍵2:值2...}2.創(chuàng)建字典dictname={'key1':value1,'key2':value2,...,'keyn':valuen}scores={'數(shù)學(xué)':95,'英語':92,'語文':84}#使用字符串作為鍵print(scores)dict1={(20,30):'great',30:[1,2,3]}#使用元組和整數(shù)作為鍵print(dict1)dict2={}#創(chuàng)建空字典print(dict2)二、相關(guān)知識fromkeys()函數(shù)創(chuàng)建帶有默認值的字典list參數(shù)表示字典中所有鍵的列表;value參數(shù)表示默認值,如果省略,則為空值None。使用fromkeys()函數(shù)創(chuàng)建字典dictname=dict.fromkeys(list,value=None)knowledge=['語文','數(shù)學(xué)','英語']scores=dict.fromkeys(knowledge,60)print(scores)二、相關(guān)知識使用dict()函數(shù)創(chuàng)建字典時,鍵和值使用“=”進行連接。使用dict()函數(shù)創(chuàng)建字典
傳入鍵值對,其中鍵為字符串類型。dict(鍵1=值1,鍵2=值2...)a=dict(str1=value1,str2=value2,str3=value3)傳入元組或列表。demo=[('two',2),('one',1),('three',3)]#方式1demo=[['two',2],['one',1],['three',3]]#方式2demo=(('two',2),('one',1),('three',3))#方式3demo=(['two',2],['one',1],['three',3])#方式4a=dict(demo))與zip()函數(shù)配合使用。keys=['one','two','three’]#鍵還可以是字符串或元組values=[1,2,3]#值還可以是字符串或元組a=dict(zip(keys,values))二、相關(guān)知識字典中的鍵是唯一的。當(dāng)創(chuàng)建字典時出現(xiàn)重復(fù)的鍵——若使用dict()函數(shù)創(chuàng)建字典,提示語法錯誤;若使用花括號創(chuàng)建字典,鍵對應(yīng)的值會被覆蓋。二、相關(guān)知識因為字典中的鍵是唯一的,所以可以通過鍵獲取對應(yīng)的值。color_dict={'purple':'紫色','green':'綠色','black':'黑色'}color_dict['purple']二、相關(guān)知識3.訪問字典dictname[key]通過“鍵”訪問字典如果字典中不存在待訪問的鍵,會引發(fā)KeyError異常。color_dict={'purple':'紫色','green':'綠色','black':'黑色'}color_dict['red']Traceback(mostrecentcalllast):KeyError:'red'二、相關(guān)知識
為了避免引起KeyError異常,當(dāng)訪問字典元素時可以先使用in與notin檢測某個鍵是否存在。if'red'incolor_dict:print(color_dict['red'])else:print('鍵不存在')二、相關(guān)知識
為了避免引起KeyError異常,當(dāng)訪問字典元素時可以先使用in與notin檢測某個鍵是否存在。if'red'incolor_dict:print(color_dict['red'])else:print('鍵不存在')二、相關(guān)知識Python更推薦使用dict提供的get()函數(shù)來獲取指定鍵對應(yīng)的值。a=dict(two=0.65,one=88,three=100,four=-59)print(a.get('one’))a=dict(two=0.65,one=88,three=100,four=-59)print(a.get('five','該鍵不存在'))二、相關(guān)知識dictname.get(key[,default])通過get()函數(shù)訪問字典
和刪除列表、元組一樣,刪除字典也可以使用del關(guān)鍵字。二、相關(guān)知識4.刪除字典a=dict(two=0.65,one=88,three=100,four=-59)print(a)delaprint(a)(1)向字典中添加鍵值對二、相關(guān)知識5.字典基本操作直接給不存在的鍵賦值dictname[key]=valuea={'數(shù)學(xué)':95}print(a)a['語文']=89#添加鍵值對print(a)a['英語']=90#添加鍵值對print(a)(2)修改字典中的鍵值對鍵的名稱不能修改,只能修改值a={'數(shù)學(xué)':95,'語文':89,'英語':90}print(a)a['語文']=100print(a)(3)從字典中刪除指定鍵值對二、相關(guān)知識使用del關(guān)鍵字a={'數(shù)學(xué)':95,'語文':89,'英語':90}dela['語文']#使用del關(guān)鍵字刪除鍵值對dela['數(shù)學(xué)']print(a)(4)判斷字典中是否存在指定的鍵值對使用in或notin關(guān)鍵字a={'數(shù)學(xué)':95,'語文':89,'英語':90}print('數(shù)學(xué)'ina)#判斷a中是否包含名為'數(shù)學(xué)'的鍵并輸出結(jié)果print('物理'ina)#判斷a中是否包含名為'物理'的鍵并輸出結(jié)果(1)keys()、values()和items()函數(shù)二、相關(guān)知識6.字典的常用函數(shù)keys()函數(shù)用于返回字典中的所有鍵。values()函數(shù)用于返回字典中所有鍵對應(yīng)的值。items()函數(shù)用于返回字典中所有的鍵值對。scores={'數(shù)學(xué)':95,'語文':89,'英語':90}print(scores.keys())print(scores.values())print(scores.items())#使用list()函數(shù),將其返回的數(shù)據(jù)轉(zhuǎn)換成列表b=list(scores.keys())#
使用for循環(huán)遍歷這3個方法的返回值forkinscores.keys():print(k,end='')(2)copy()函數(shù)二、相關(guān)知識copy()函數(shù)用于返回一個字典的副本update()函數(shù)可以使用一個字典所包含的鍵值對來更新己有的字典。在使用update()函數(shù)時,如果被更新的字典中已包含對應(yīng)的鍵值對,那么原值會被覆蓋;如果被更新的字典中不包含對應(yīng)的鍵值對,則該鍵值對被添加進去。a={'one':1,'two':2,'three':[1,2,3]}b=a.copy()print(b)(3)update()函數(shù)a={'one':1,'two':2,'three':3}a.update({'one':4.5,'four':9.3})print(a)(4)pop()函數(shù)和popitem()函數(shù)二、相關(guān)知識pop()函數(shù)用來刪除指定的鍵值對,popitem()函數(shù)用來隨機刪除一個鍵值對setdefault()函數(shù)用來返回某個鍵對應(yīng)的值,當(dāng)指定的鍵不存在時,則先設(shè)置一個默認值,然后再返回。(5)setdefault()函數(shù)a={'數(shù)學(xué)':95,'語文':89,'英語':90}a.setdefault('物理',94)#鍵不存在,指定默認值a.setdefault('化學(xué)')#鍵不存在,不指定默認值a.setdefault('數(shù)學(xué)',100)#鍵存在,指定默認值a={'數(shù)學(xué)':95,'語文':89,'英語':90,'化學(xué)':83,'生物':98,'物理':89}print(a)a.pop('化學(xué)')print(a)a.popitem()print(a)三、任務(wù)分析讀數(shù)寫數(shù)歌讀數(shù)寫數(shù)并不難,只要規(guī)律記心間。從低到高先分級,找準(zhǔn)標(biāo)志畫點記。每級開頭中間0,切記只讀一個0。每級末位0不讀,小數(shù)按照順序讀。寫數(shù)從高到低排,小數(shù)部分順次來。哪個數(shù)位沒單位,就用0來占位。三、任務(wù)分析
把一個數(shù)字讀出來,需要分級,每4位為一級;每級開頭有0或中間有0,無論0的個數(shù)有多少只讀一個0;每級末尾的0不用讀;小數(shù)部分沒有單位,但在人民幣數(shù)據(jù)表示中有角和分;在讀每一級4位數(shù)時,數(shù)位“千”“百”“十”需要讀出,而數(shù)位“個”不需要讀。每級又有層級單位如“萬億”“億”“萬”等。如圖所示,可以看出¥105060700.19讀作“壹億零伍佰零陸萬零柒佰元壹角玖分”。三、任務(wù)分析找出規(guī)律后,用編程來實現(xiàn)人民幣大小寫轉(zhuǎn)換,主要思路如下。(1)定義3個字典,分別存放大小寫數(shù)字轉(zhuǎn)換、層級單位
(“億”“億”“萬”“元”“角”“分”)、數(shù)位(“仟”“佰”“拾”)。(2)將數(shù)字分成整數(shù)部分和小數(shù)部分。(3)將整數(shù)部分進行分級,4位一級,對每級的各個數(shù)位進行轉(zhuǎn)換,之后加上層級單位。在分級時,先處理后4位,即最后一級,再處理前一級,依次類推。在對每級數(shù)據(jù)進行逐位轉(zhuǎn)換時,采用倒序方式,即按照個、十、百、千的順序,這樣方便處理每級末尾“0”不讀的情況。在編寫程序過程中可以看出,倒序方便“0”的轉(zhuǎn)換處理。(4)對小數(shù)部分進行處理,四舍五入保留兩位,再轉(zhuǎn)換成大寫。
(5)將整數(shù)部分和小數(shù)部分轉(zhuǎn)換內(nèi)容連接起來。四、任務(wù)實現(xiàn)(1)在PyCharm中,右擊左側(cè)列表中的項目名稱“chapter04”,選擇“New”→“PythonFile”,在彈出的對話框中將文件命名為“4-3人民幣大寫轉(zhuǎn)化.py”,按“Enter”鍵,進入代碼編輯界面。(2)在新建文件中導(dǎo)入turtle庫,設(shè)置窗體標(biāo)題、窗口大小。(3)定義3個字典,分別為大小寫數(shù)字對照字典largenum、層級單位字典level、數(shù)位字典digit。importturtleastt.title('人民幣大寫轉(zhuǎn)化')t.setup(800,400)#設(shè)置大小寫數(shù)字對照字典largenum={0:'零',1:'壹',2:'
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年花藝師考試準(zhǔn)備的意義試題及答案
- 代發(fā)貨合同樣本
- 企業(yè)兼職保潔合同樣本
- 買賣貿(mào)易傭金合同標(biāo)準(zhǔn)文本
- 保姆公司合同樣本
- 公路限高桿合同樣本
- 個人合同簽定合同樣本
- 供暖管道租賃合同樣本
- 關(guān)于工齡延續(xù)合同標(biāo)準(zhǔn)文本
- 產(chǎn)品框架合同樣本
- 課堂教學(xué)技能講座課件匯編
- 復(fù)變函數(shù)與積分變換-西北工業(yè)大學(xué)中國大學(xué)mooc課后章節(jié)答案期末考試題庫2023年
- 護士單人心肺復(fù)蘇技術(shù)操作考核評分標(biāo)準(zhǔn)
- 湖北2022年中國郵政儲蓄銀行湖北省分行社會招聘考試參考題庫含答案詳解
- 2019年四川省廣元市利州區(qū)萬達中學(xué)小升初數(shù)學(xué)擇校考試卷
- 糧食流通管理條例考核試題及答案
- 德語四級真題2023
- TPM培訓(xùn)講義的教案
- 農(nóng)村公路養(yǎng)護工程預(yù)算定額(征求意見稿)
- 2023年社保基金安全警示教育學(xué)習(xí)研討會發(fā)言稿報告(4篇)
- 院感知識考試試題及答案
評論
0/150
提交評論