版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第5單元
函數(shù)任務5.1旋轉七彩花任務5.28字印章小海龜任務5.3Fishi拼圖也快樂任務5.4旋轉三葉炫彩扇任務5.5鮮花獻祖國母親學習目標知識目標技能目標素質目標掌握函數(shù)的概念。了解常用的內置函數(shù)。掌握函數(shù)的定義與調用方法。掌握函數(shù)的參數(shù)傳遞方式。掌握局部變量和全局變量的使用方法。了解匿名函數(shù)與遞歸函數(shù)的使用方法。能夠根據(jù)需要使用常用的內置函數(shù)。能夠根據(jù)需要定義函數(shù)并調用函數(shù)以實現(xiàn)其功能。能夠根據(jù)實際情況選擇合適的參數(shù)傳遞方式。能夠根據(jù)需要定義局部變量和全局變量。能夠使用匿名函數(shù)和遞歸函數(shù)簡化程序。培養(yǎng)標準化的編碼規(guī)范能力。培養(yǎng)創(chuàng)新能力,以及分析問題和解決問題的能力。培養(yǎng)團隊意識和溝通能力。教學內容任務5.1旋轉七彩花一、任務描述
還記得七彩花的童話故事嗎?Python不僅可以繪制七彩花,還可以讓它動起來。使用海龜作圖庫turtle實現(xiàn)旋轉花瓣動畫,一朵由七彩葉組成的小花朵,在屏幕中間旋轉。旋轉七彩花如圖5-1所示。
函數(shù)指被封裝起來的、實現(xiàn)某種功能的一段代碼。Python安裝包、標準庫中自帶的函數(shù)統(tǒng)稱為內置函數(shù),用戶自己編寫的函數(shù)稱為自定義函數(shù),不管是哪種函數(shù),其定義和調用方式都是一樣的。二、相關知識1.函數(shù)的概念Python內置了一些實現(xiàn)特定功能的函數(shù),這些函數(shù)無需由Python使用者重新定義便可直接使用。二、相關知識2.內置函數(shù)函數(shù)說明abs()用于計算絕對值,其參數(shù)必須是數(shù)字類型len()用于返回序列對象(如字符串、列表、元組等)的長度map()根據(jù)提供的函數(shù)對指定的序列做映射help()用于返回函數(shù)或庫的使用說明ord()用于返回Unicode字符對應的碼值chr()與ord()功能相反,用于返回碼值對應的Unicode字符filter()用于過濾序列,返回由符合條件的元素組成的新列表abs()函數(shù)用于計算絕對值,其參數(shù)必須是數(shù)字類型。如果參數(shù)是一個復數(shù),那么abs()函數(shù)返回的絕對值是此復數(shù)與它的共軛復數(shù)乘積的平方根。abs()函數(shù)print(abs(-5))print(abs(3.14))print(abs(8+3j))53.148.54400374531753二、相關知識ord()函數(shù)用于返回字符在Unicode編碼表中對應的碼值,其參數(shù)是一個
字符。ord()函數(shù)print(ord('a'))print(ord('A'))9765二、相關知識chr()和ord()函數(shù)的功能相反,可根據(jù)碼值返回相應的Unicode
字符。chr()函數(shù)的參數(shù)是一個整數(shù),取值范圍為0~255。chr()函數(shù)print(chr(97))print(chr(65))aA二、相關知識Python中使用關鍵字def定義函數(shù)。def函數(shù)名([參數(shù)列表]):["函數(shù)文檔字符串"]
函數(shù)體[return語句]接收傳入函數(shù)中的數(shù)據(jù),可省略函數(shù)的說明信息,可省略將結果返回給函數(shù)調用者二、相關知識3.函數(shù)的定義
若函數(shù)的參數(shù)列表為空,這個函數(shù)稱為無參函數(shù)。defweather():print("*"*13)print("日期:4月8日")print("溫度:14~28℃")print("空氣狀況:良")print("*"*13)二、相關知識3.無參函數(shù)的定義與調用無參函數(shù)的調用格式如下:函數(shù)名()無參調用:weather()*************日期:4月8日溫度:14~28℃空氣狀況:良*************
如果需要將函數(shù)內部數(shù)據(jù)傳給外部代碼,就需要使用return語句返回值。例如,定義計算1~500所有整數(shù)之和的函數(shù).無參調用:二、相關知識defsum1to500():sum=0foriinrange(1,501):sum=sum+ireturnsumsum=sum1to500()三、任務分析
本任務使用動畫原理,把所畫的七彩花不斷擦除再重新畫上,并且畫完后旋轉一定的角度,為下次繪圖做準備,這樣就能看到旋轉的動畫。在程序中可以使用tracer()函數(shù)關閉動畫的自動刷新顯示,當繪制完一朵七彩花后,需要調用update()函數(shù)讓它在新的坐標位置顯示出來。動畫實現(xiàn)原理如圖所示。三、任務分析
畫圖的核心代碼是繪制函數(shù),本任務定義兩個函數(shù),一個函數(shù)用來繪制一個花瓣,另一個函數(shù)通過調用繪制花瓣函數(shù)繪制一朵七彩花。四、任務實現(xiàn)(1)在PyCharm中,選擇“File”→“NewProject…”命令,在彈出的對話框中將項目命名為“chapter05”,單擊“Create”按鈕,創(chuàng)建新項目。(2)在PyCharm中,右擊左側列表中的項目名稱chapter05,選擇“New”→“PythonFile”命令,在彈出的對話框中將文件命名為“5-1旋轉七彩花.py”,按“Enter”鍵,進入代碼編輯界面。(3)在新建文件中完成基礎框架的搭建。首先,導入turtle和time兩個庫,海龜作圖庫turtle用于繪制圖形,time庫用于設置七彩花旋轉的速度。其次,初始化窗體樣式,包括設置窗體的背景色、窗體的寬和高、隱藏畫筆形狀、關閉繪圖軌跡等。再次,七彩花有7種顏色,所以定義包含7種顏色的列表。最后,按照任務分析的思路,完成繪制一個花瓣的函數(shù)、繪制一朵七彩花的函數(shù)、實現(xiàn)動畫效果這三部分的注釋工作。四、任務實現(xiàn)(4)導入turtle庫并取別名為t,提示輸入選項并設置海龜形狀的大小為10。importturtleimporttimeturtle.setup(480,360) #設置窗體的寬和高turtle.title('旋轉七彩花') #設置窗口標題turtle.hideturtle() #隱藏畫筆形狀turtle.penup() #抬起筆turtle.tracer(False) #關閉繪圖軌跡cs=['green','purple','pink','red','orange','yellow','blue']#定義繪制一個花瓣函數(shù)draw_petal()
#定義繪制一朵七彩花函數(shù)draw_flower()
#實現(xiàn)動畫效果四、任務實現(xiàn)(4)定義繪制一個花瓣的函數(shù)draw_petal()。繪制思路為:先用circle()畫一個90°的圓弧,之后畫筆向左旋轉90°,再繪制一個90°的圓弧,形成一個閉合的圖形。在圖形內部填充顏色,一個花瓣繪制完成。需要強調的是,在繪制第二個圓弧后,畫筆需要再向左旋轉90°,回到繪制花瓣前的原始方向,為下一次繪制做好準備。#定義繪制花瓣函數(shù)draw_petal()defdraw_petal():
turtle.begin_fill() #開始填充
turtle.circle(100,90) #畫一個90°的圓弧
turtle.left(90) #畫筆向左旋轉90°
turtle.circle(100,90) #再畫一個90°的圓弧
turtle.left(90) #畫筆向左旋轉90°,回到繪制花瓣前的原始方向
turtle.end_fill() #結束填充四、任務實現(xiàn)(5)定義繪制一朵七彩花函數(shù)draw_flower()。繪制思路為:七彩花有7個花瓣,繪制七彩花需要使用循環(huán)語句,而顏色列表恰好有7種顏色,所以可以通過迭代顏色列表實現(xiàn)循環(huán)。循環(huán)體內部實現(xiàn)的主要功能為:設置畫筆顏色和填充顏色,調用draw_petal()函數(shù)繪制一個花瓣,右轉(360/7)°,為下一次繪制花瓣做準備。#定義繪制一朵七彩花函數(shù)draw_flower()defdraw_flower():
forcincs: #迭代顏色表
turtle.color(c) #設置c為畫筆顏色
draw_petal() #畫一個花瓣
turtle.right(360/len(cs)) #右轉(360/7)°四、任務實現(xiàn)(6)實現(xiàn)動畫效果。循環(huán)執(zhí)行如下操作:清除所畫內容,調用draw_flower()函數(shù)繪制一朵七彩花,更新屏幕內容,畫筆向右旋轉2°為下一次繪制做準備,調用time庫中的sleep()函數(shù)控制旋轉的速度。whileTrue:
turtle.clear() #清除所畫內容
draw_flower() #繪制一朵七彩花
turtle.update() #更新屏幕內容
turtle.right(2) #畫筆向右旋轉2°
time.sleep(0.01) #等待0.01s任務5.28字印章小海龜一、任務描述
當你看到一群快樂的紅色小海龜,在沙灘上沿著8字形狀快樂地追逐時,你是不是也會快樂無比呢?使用海龜作圖庫turtle實現(xiàn)8字印章小海龜動畫,即一群漂亮的小海龜排著隊,走出8字形狀,效果如圖所示。
函數(shù)定義之時可以設置參數(shù)列表,參數(shù)之間用逗號分隔。如果函數(shù)有返回值,使用return語句返回。defmodify_weather(today,temp,air_quality):print("*"*13)print(f"日期:{today}")print(f"溫度:{temp}")print(f"空氣狀況:{air_quality}")print("*"*13)形式參數(shù)或形參1.有參函數(shù)的定義與調用二、相關知識定義好的函數(shù)直到被程序調用時才會執(zhí)行。函數(shù)的調用格式如下:函數(shù)名(實參列表)modify_weather('4月6日','15~30℃','優(yōu)')*************日期:4月6日溫度:15~30℃空氣狀況:優(yōu)*************實參二、相關知識
若定義一個函數(shù)來計算某個區(qū)間的整數(shù)之和,此時需要兩個參數(shù),即某個區(qū)間的起始值和終止值,同時需要將計算結果返回。defsumAll(start,end):sum=0foriinrange(start,end+1):sum=sum+ireturnsum二、相關知識sum=sumAll(100,500)三、任務分析
該項任務實現(xiàn)一群小海龜不斷地走出8字圖形,就像我們寫阿拉伯數(shù)字“8”一樣,首先畫上方左側的半個圓,然后在下方畫一個整圓,最后再畫上方右側的半個圓,該項任務也按照這個方法來設計。我們看到的海龜移動效果,實際上是程序在不停地印制“海龜”形狀的印章。實現(xiàn)動畫的思路為:首先,在屏幕的上方同一位置預先印制20個海龜印章,之后沿著寫“8”字的軌跡前進一段距離,在新位置上印制一個新印章,再把最先印制的一個印章刪除,如此重復,就能看到像貪吃蛇一樣的效果。
三、任務分析從程序設計的角度來分析,我們可以先定義初始化函數(shù)、海龜移動函數(shù),然后通過調用海龜移動函數(shù)定義沿著半圓和整圓軌跡移動的移動軌跡函數(shù),最后通過循環(huán)調用移動函數(shù)實現(xiàn)動畫效果。在循環(huán)體內,首先調用沿著上方左側半圓軌跡移動的移動軌跡函數(shù),然后調用沿著下方整圓軌跡移動的移動軌跡函數(shù),最后調用沿著上方右側半圓軌跡移動的移動軌跡函數(shù),實際上就是寫“8”的軌跡。definit():#定義初始化函數(shù)defmove_andturn()#定義海龜移動函數(shù)defmove_circle()#定義移動軌跡函數(shù)init()#初始化whileTrue:#上方左側半圓軌跡移動#下方整圓軌跡移動#上方右側半圓軌跡移動四、任務實現(xiàn)(1)在PyCharm中,右擊左側列表中的項目名稱chapter05,選擇“New”→“PythonFile”命令,在彈出的對話框中將文件命名為“5-28字印章小海龜.py”,按“Enter”鍵,進入代碼編輯界面。(2)在新建文件中導入turtle和time兩個庫,turtle庫用于繪圖,time庫用于控制海龜?shù)囊苿铀俣?。importturtle #導入turtle庫importtime #導入time庫definit():turtle.hideturtle() #隱藏畫筆形狀turtle.penup() #抬起畫筆避免留下移動痕跡turtle.goto(0,100) #畫筆移動到(0,100)turtle.showturtle() #顯示畫筆形狀turtle.shape("turtle")#設定畫筆為海龜造型turtle.color("black","red")#畫筆黑色填充紅色turtle.setheading(180)#設定畫筆運動方向為180°foriinrange(20):#蓋20個重疊海龜印章turtle.stamp()#在當前位置蓋印章(3)為使代碼更加規(guī)范、整潔,將初始化相關的代碼定義為初始化函數(shù)init()。初始化函數(shù)init()主要實現(xiàn)的功能包括設置畫筆初始位置、畫筆的造型、畫筆顏色和填充顏色、畫筆方向,以及印制重疊在一起的20個海龜印章等。四、任務實現(xiàn)(4)定義海龜移動函數(shù)move_and_turn()。海龜移動涉及兩項內容,即移動距離和旋轉角度,將這兩項內容作為函數(shù)參數(shù)。該函數(shù)的主要功能為:旋轉一定角度,前進一段距離,在當前位置印制海龜印章,延遲一段時間,清除最先蓋的一個印章,延遲一段時間。其中,sleep()函數(shù)用來控制海龜移動速度。defmove_and_turn(angle,distance): #angle旋轉角度,distance移動距離#"""移動并且向左旋轉海龜"""turtle.left(angle) #左轉angle°turtle.forward(distance) #前進distance距離turtle.stamp() #印制海龜印章time.sleep(0.001) #延遲0.001sturtle.clearstamps(1) #清除最先印制的一個海龜印章time.sleep(0.001) #延遲0.001s四、任務實現(xiàn)(5)定義海龜移動軌跡函數(shù)move_circle()。該函數(shù)實現(xiàn)海龜移動半圓、移動整圓兩種類型的軌跡,參數(shù)type指明是哪種類型的軌跡,type=1時移動整圓軌跡,type=0時移動半圓軌跡。另外,函數(shù)需要指明移動軌跡中需要多少個海龜印章,用參數(shù)nums表示,海龜每次移動距離用distance表示。該函數(shù)需要調用move_and_turn()函數(shù)使海龜旋轉并前進,旋轉角度由軌跡中海龜印章的數(shù)量以及軌跡類型來決定,如果軌跡為整圓則旋轉角度為(360/nums)°,軌跡為半圓則旋轉角度為(180/nums)°。defmove_circle(type,nums,distance):#type表示軌跡類型,nums表示海龜印章數(shù)量,distance表示每次移動距離foriinrange(nums):iftype==1: #type=1則畫整圓move_and_turn(-360/nums,distance)#向右旋轉,前進一段距離else: #type=0則畫半圓move_and_turn(180/nums,distance)#向左旋轉,前進一段距離四、任務實現(xiàn)(6)實現(xiàn)8字印章小海龜動畫效果。首先調用init()函數(shù)進行初識化,然后循環(huán)運行:調用move_circle()函數(shù)先沿著上方左側半圓軌跡移動,再沿著下方整圓的軌跡移動,最后沿著上方右側半圓軌跡移動。init()#初始化whileTrue:move_circle(0,9,20) #上方左側半圓軌跡移動move_circle(1,18,20) #下方整圓軌跡移動move_circle(0,9,20) #上方右側半圓軌跡移動任務5.3Fish拼圖也快樂一、任務描述還記得曾經玩過的拼圖嗎?通過編程實現(xiàn)拼圖效果,別有一番風味。使用海龜作圖庫turtle,繪制三角形、正方形、圓形、扇形,并用繪制的圖形拼成魚的形狀,F(xiàn)ish拼圖效果如圖5所示。
函數(shù)的參數(shù)傳遞是指將實際參數(shù)傳遞給形式參數(shù)的過程。根據(jù)不同的傳遞形式,函數(shù)的參數(shù)可分為:位置參數(shù)關鍵字參數(shù)默認值參數(shù)不定長參數(shù)1.函數(shù)的參數(shù)傳遞二、相關知識調用函數(shù)時,編譯器會將函數(shù)的實際參數(shù)按照位置順序依次傳遞給形式參數(shù)。defpower(num,n):s=1whilen>0:n=n-1s=s*numreturnsresult=power(6,2)(1)位置參數(shù)二、相關知識關鍵字參數(shù)通過“形式參數(shù)=實際參數(shù)”的格式將實際參數(shù)與形式參數(shù)相關聯(lián),根據(jù)形參的名稱進行參數(shù)傳遞。definfo(name,age,address):print(f'姓名:{name}')print(f'年齡:{age}')print(f'地址:{address}')info(name="李婷婷",age=23,address="山東")(2)關鍵字參數(shù)二、相關知識定義函數(shù)時可以指定形式參數(shù)的默認值。調用函數(shù)時,可分為以下兩種情況:使用參數(shù)的默認值未給默認參數(shù)傳值使用實際參數(shù)的值給默認參數(shù)傳值defconnect(ip,port=3306):print(f"連接地址為:{ip}")print(f"連接端口號為:{port}")print("連接成功")connect('127.0.0.1')connect(ip='127.0.0.1',port=8080)(3)默認參數(shù)二、相關知識若要傳入函數(shù)中的參數(shù)的個數(shù)不確定,可以使用不定長參數(shù)。不定長參數(shù)也稱可變參數(shù),此種參數(shù)接收參數(shù)的數(shù)量可以任意改變。def函數(shù)名([formal_args,]*args,**kwargs):"函數(shù)_文檔字符串"
函數(shù)體[return語句]*args和**kwargs都是不定長參數(shù),它們可搭配使用,亦可單獨使用。(4)不定長參數(shù)二、相關知識不定長參數(shù)*args用于接收不定數(shù)量的位置參數(shù),調用函數(shù)時傳入的所有參數(shù)被*args接收后以元組形式保存。*argsdeftest(*args):
print(args)test(1,2,3,'a','b','c')(1,2,3,'a','b','c')**kwargs用于接收不定數(shù)量的關鍵字參數(shù),調用函數(shù)時傳入的所有參數(shù)被**kwargs接收后以字典形式保存。**kwargsdeftest(**kwargs):print(kwargs){'c':3,'d':4,'a':1,'b':2}test(a=1,b=2,c=3,d=4)二、相關知識三、任務分析
先來分析圖中的拼圖形狀,有三角形、圓形、正方形、扇形等,魚的尾巴可以看作黃色和白色圓形的疊加形狀。如果形狀的繪制通過函數(shù)來實現(xiàn),那么需要分別定義繪制三角形、圓形、正方形、扇形這4個函數(shù)。
繪制三角形的方法為:抬起畫筆,將畫筆移動到某個位置,設置畫筆運動方向,落下畫筆并設置畫筆顏色,前進或后退一定距離(直角邊長),向上或向下旋轉90°,再前進一定距離(直角邊長),最后回到起始位置。通過以上分析,可以確定繪制三角形函數(shù)的參數(shù)應該包括起始點、直角邊長、旋轉角度、顏色。在此,我們使用位置參數(shù)。
繪制圓形的方法為:抬起畫筆,將畫筆移動到某個位置,設置畫筆運動方向,落下畫筆,設置圓形的半徑和填充顏色,調用circle()函數(shù)繪制圓形。參數(shù)應該包括起始點、半徑、顏色,半徑和顏色可以設置為帶有默認值的參數(shù)。三、任務分析
繪制正方形的方法為:抬起畫筆,將畫筆移動到某個位置,設置畫筆運動方向,落下畫筆,設置填充顏色,繪制正方形。繪制正方形函數(shù)的參數(shù)應該包括起始點、顏色、邊長。在此,我們使用不定長參數(shù)*args。
繪制扇形的方法為:抬起畫筆,將畫筆移動到某個位置,設置畫筆運動方向和顏色,落下畫筆,前進半徑長度距離,旋轉90°,繪制弧形,再旋轉90°,前進半徑距離。繪制扇形函數(shù)的參數(shù)應該包括起始點、運動起始方向、顏色、半徑、弧度。在此,我們使用不定長參數(shù)**kwargs。
函數(shù)定義完成后,通過調用函數(shù),傳遞合適的參數(shù),繪制Fish拼圖。四、任務實現(xiàn)(1)在PyCharm中,右擊左側列表中的項目名稱chapter05,選擇“New”→“PythonFile”,在彈出的對話框中將文件命名為“5-3Fish拼圖.py”,按“Enter”鍵,進入代碼編輯界面。(2)在新建文件中導入turtle庫,設置窗口標題為“Fish拼圖”,設置窗口大小為800*600。importturtleturtle.title("Fish拼圖")#設置窗口標題turtle.setup(800,600)#設置窗口尺寸(3)定義繪制三角形的函數(shù)。根據(jù)前面的分析,該函數(shù)有起始點、直角邊長、旋轉角度(90°或-90°)和顏色這4個參數(shù)。函數(shù)的實現(xiàn)過程為:抬起畫筆,首先將畫筆移動到指定位置,設置畫筆運動方向為0°,落下畫筆,設置顏色;然后繪制直角邊,旋轉角度(90°或-90°),再繪制直角邊;最后回到起始位置。四、任務實現(xiàn)(4)定義繪制圓形的函數(shù)。根據(jù)前面的分析,該函數(shù)有起始點、半徑和顏色這3個參數(shù)。函數(shù)的實現(xiàn)過程為:抬起畫筆,首先將畫筆移動到指定位置,設置畫筆運動方向為0°,落下畫筆,設置顏色;然后繪制圓形。四、任務實現(xiàn)(5)定義繪制正方形的函數(shù)。根據(jù)前面的分析,該函數(shù)有起始點、邊長和顏色這3個參數(shù)。函數(shù)的實現(xiàn)過程為:抬起畫筆,首先將畫筆移動到指定位置,設置畫筆運動方向為0°,落下畫筆,設置顏色;然后使用循環(huán)語句繪制正方形。四、任務實現(xiàn)(6)定義繪制扇形的函數(shù)。根據(jù)前面的分析,該函數(shù)有起始點、弧度、運動起始方向、半徑和顏色這5個參數(shù)。函數(shù)的實現(xiàn)過程為:抬起畫筆,首先將畫筆移動到指定位置、設置顏色、設置畫筆運動起始方向,落下畫筆,然后畫筆前進半徑距離,左轉90°,繪制弧形,再次左轉90°,再次前進半徑距離。四、任務實現(xiàn)(7)繪制Fish拼圖。需要注意的是,海龜作圖窗口的中心點坐標為(0,0),中心點右側橫坐標值為正數(shù),左側橫坐標值為負數(shù),中心點上方縱坐標值為正數(shù),下方縱坐標值為負數(shù)。繪制Fish拼圖的過程為:調用繪制三角形函數(shù)繪制頭部和中間的三角形,調用繪制正方形函數(shù)繪制中間的藍色正方形,調用繪制扇形函數(shù)繪制中間的兩個扇形,調用繪制圓形的函數(shù)繪制魚的眼睛和尾巴,具體位置和大小可以多次嘗試,直至畫出漂亮的Fish拼圖。任務5.4旋轉三葉草一、任務描述本任務要求使用海龜作圖庫turtle,繪制旋轉三葉炫彩扇。右側代碼已經實現(xiàn)了繪制一個靜態(tài)的三葉炫彩扇,代碼運行效果如圖。
一、任務描述在現(xiàn)有代碼基礎上,實現(xiàn)旋轉三葉炫彩扇,三葉炫彩扇在旋轉的過程中像霓虹燈一樣不斷變換顏色,效果如圖所示。
變量的作用域是指變量的作用范圍。根據(jù)作用范圍,Python中的變量分為局部變量與全局變量。1.變量的作用域二、相關知識局部變量是在函數(shù)內定義的變量,只在定義它的函數(shù)內生效。defuse_var():
name='python'#局部變量print(name)#函數(shù)內訪問use_var()print(name)#函數(shù)外訪問pythonNameError:name'name'isnotdefined局部變量只能在函數(shù)內部使用,不能在函數(shù)外部使用。結論(1)局部變量二、相關知識全局變量是在函數(shù)外定義的變量,它在程序中任何位置都可以被訪問。count=10#全局變量defuse_var():print(count)#函數(shù)內訪問use_var()print(count)#函數(shù)外訪問1010(2)全局變量二、相關知識函數(shù)中只能訪問全局變量,但不能修改全局變量。count=10defuse_var():count=0#修改全局變量use_var()print(count)10全局變量的值仍然是10。二、相關知識
若要在函數(shù)內部修改全局變量的值,需先在函數(shù)內使用關鍵字“global”進行聲明。count=10defuse_var():
globalcount#聲明全局變量count=0use_var()print(count)0全局變量的值變?yōu)?。二、相關知識匿名函數(shù)是無需函數(shù)名標識的函數(shù),它的函數(shù)體只能是單個表達式。Python中使用關鍵字lambda定義匿名函數(shù)。lambda[arg1[,arg2,.....argn]]:expression[arg1[,arg2,.....argn]]表示匿名函數(shù)的參數(shù),expression是一個表達式。二、相關知識2.匿名函數(shù)匿名函數(shù)與普通函數(shù)主要有以下不同:普通函數(shù)匿名函數(shù)需要使用函數(shù)名進行標識無需使用函數(shù)名進行標識函數(shù)體中可以有多條語句函數(shù)體只能是一個表達式可以實現(xiàn)比較復雜的功能只能實現(xiàn)比較單一的功能可以被其它程序使用不能被其它程序使用二、相關知識為了方便使用匿名函數(shù),應使用變量記錄這個函數(shù)。area=lambdaa,h:(a*h)*0.5print(area(3,4))6.0二、相關知識三、任務分析
旋轉動畫的實現(xiàn)原理為:清除畫面,繪制三葉炫彩扇,刷新屏幕顯示,旋轉一定角度為下次繪制彩扇做準備,重復以上操作即可實現(xiàn)動畫效果。程序運行過程中需要頻繁繪制三葉炫彩扇,所以可以將這項功能定義成函數(shù)。彩扇在旋轉過程中不斷變換顏色,即在函數(shù)內部修改顏色值,故將顏色變量設置為全局變量。另外,可以在此任務中對匿名函數(shù)加以實踐,顏色漸變的代碼可以用匿名函數(shù)進行定義。分析下面關于顏色漸變的代碼,可以看出i是變量,所以匿名函數(shù)的參數(shù)為i。
定義實現(xiàn)顏色漸變功能的匿名函數(shù),并定義變量記錄匿名函數(shù),代碼如下:ifi%8==0: #如果i是8的倍數(shù)color=coloradd.coloradd(color,0.01) #改變顏色增加changecolor=lambdai:coloradd.coloradd(color,0.01)ifi%8==0elsecolor四、任務實現(xiàn)(1)實現(xiàn)顏色漸變功能需要安裝coloradd庫,打開Windows操作系統(tǒng)的命令提示符窗口,輸入以下命令并按“Enter”鍵。(2)在PyCharm中,右擊左側列表中的項目名稱chapter05,選擇“New”→“PythonFile”,在彈出的對話框中將文件命名為“5-4旋轉三葉炫彩扇.py”,按“Enter”鍵,進入代碼編輯界面。pipinstallcoloraddimportturtle,timeimportcoloraddturtle.colormode(255)#顏色模式設置為255turtle.tracer(False)turtle.title('旋轉的三葉炫彩扇')#設定屏幕標題color=(0,255,255)#青色元組turtle.hideturtle()#隱藏海龜turtle.pensize(5)#畫筆寬度angle=0#海龜初始角度為0°(3)在新建文件中輸入已有代碼中的初始化部分。四、任務實現(xiàn)(4)定義匿名函數(shù),實現(xiàn)顏色漸變。匿名函數(shù)的參數(shù)為i,當i為8的倍數(shù)時改變顏色值,否則顏色值不變。#定義匿名函數(shù),賦給變量changecolor=lambdai:coloradd.coloradd(color,0.01)ifi%8==0elsecolor#定義繪制靜態(tài)三葉炫彩扇函數(shù)defdraw_fan(a):globalcolor#聲明為全局變量turtle.setheading(a)foriinrange(600):#迭代600次
turtle.fd(i/2)#移動i/2個單位長度
turtle.rt(120.2)#右轉
turtle.bk(i/2) #倒退
color=changecolor(i) #調用匿名函數(shù)改變顏色值
turtle.color(color) #畫筆顏色turtle.goto(0,0) #回到中心點(5)定義繪制靜態(tài)三葉炫彩扇函數(shù)。參數(shù)a為畫筆運動的起始角度,設置顏色變量為全局變量以便在函數(shù)內部改變顏色值,通過調用匿名函數(shù)修改顏色值。四、任務實現(xiàn)(6)實現(xiàn)旋轉三葉炫彩扇動畫效果。動畫實現(xiàn)思路為:擦除畫面,調用函數(shù)繪制三葉炫彩扇,刷新屏幕顯示,旋轉固定角度為下一次繪制做準備,休眠一定時間以控制旋轉速度,重復以上操作實現(xiàn)動畫效果。whileTrue:turtle.clear() #擦除畫面draw_fan(angle) #繪制三葉扇子turtle.update() #刷新屏幕顯示angle=angle+5 #角度增加time.sleep(0.1) #調整旋轉速度任務5.5鮮花獻祖國母親一、任務描述10月1日是祖國母親的生日,是普天同慶的好日子,繪制一束火紅的鮮花送給祖國母親,祝愿祖國繁榮昌盛、國泰民安。下面的代碼使用海龜作圖庫turtle,利用遞歸函數(shù)繪制簡單二叉樹,運行效果如圖所示
遞歸是一個函數(shù)過程在定義中直接調用自身的一種方法,它通常把一個大型的復雜問題層層轉化為一個與原問題相似,但規(guī)模較小的問題進行求解。二、相關知識遞歸函數(shù)如果一個函數(shù)中調用了函數(shù)本身,這個函數(shù)就是遞歸函數(shù)。遞歸函數(shù)只需少量代碼就可描述出解題過程所需要的多次重復計算,大大地減少了程序的代碼量。二、相關知識函數(shù)遞歸調用時,需要確定兩點:一是遞歸公式,二是邊界條件。遞歸公式是遞歸求解過程中的歸納項,用于處理原問題以及與原問題規(guī)律相同的子問題。遞歸公式邊界條件即終止條件,用于終止遞歸。邊界條件二、相關知識階乘是可利用遞歸方式求解的經典問題。deffactorial(num):ifnum==1:return1else:returnnum*factorial(num-1)二、相關知識三、任務分析
首先分析已有代碼中二叉樹算法的基本原理,函數(shù)draw_tree()是繪制二叉樹的遞歸函數(shù),包含兩個參數(shù),其中l(wèi)ength表示二叉樹第一層的長度,level表示二叉樹的層數(shù)。遞歸函數(shù)的終止條件為level=0,遞歸過程為:畫筆前進length單位距離,左轉45°,繪制長度減半且層數(shù)減1的左側二叉樹,右轉90°,繪制長度減半且層數(shù)減1的右側二叉樹,左轉45°,后退length單位長度回到起始位置。
在二叉樹算法的基礎上進行擴展,繪制一束火紅的鮮花。仔細觀察圖5-9,可以看出,這束鮮花是由多個二叉樹組成的,每個二叉樹樹干的顏色不同,每繪制一層都會畫一個紅點,同一層的二叉樹的角度不是90°,同一層的樹干長度不完全一致,繪制的多個二叉樹的起始角度不同(非豎直的)。三、任務分析
經過分析,繪制火紅的鮮花的實現(xiàn)思路為:定義顏色列表,用于繪制樹干時隨機獲取顏色
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 信息技術課標的心得體會(8篇)
- 俄語專業(yè)生求職信
- 企業(yè)停電停水的應急預案范文(7篇)
- 中秋佳節(jié)致辭(8篇)
- 設計課件網(wǎng)站教學課件
- 諺語講解課件教學課件
- 盲目從眾課件教學課件
- 天桃實驗學校八年級上學期語文1月月考試卷
- 環(huán)境應急預案的編寫要點
- 自建房屋建筑施工合同(2篇)
- 3.9.1 增強安全意識-2024-2025學年初中道德與法治七年級上冊上課課件
- 2024年“泰山杯”山東省網(wǎng)絡安全職業(yè)技能競賽理論試題庫(含答案)
- 廣東省2024年中考歷史真題試卷【附真題答案】
- 2024至2030年中國大型鑄鍛件行業(yè)市場深度研究及投資規(guī)劃建議報告
- 07J901-1實驗室建筑設備(一)
- 異地就醫(yī)備案的個人承諾書
- YDT 4470-2023電信網(wǎng)絡的確定性IP網(wǎng)絡 控制面技術要求
- 基于創(chuàng)客教育理念的幼兒機器人課程的開發(fā)與實踐研究
- 工廠冷庫儲存應急預案方案及流程
- 2024年湖北省十堰市荊楚初中聯(lián)盟八年級中考模擬預測生物試題
- 資源教室檢查方案
評論
0/150
提交評論