版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第3單元控制語句任務(wù)3.1選擇繪圖任務(wù)3.2方形炫彩螺任務(wù)3.3嵌套螺旋線學習目標知識目標技能目標素質(zhì)目標掌握if語句的多種語法結(jié)構(gòu)和嵌套使用方法。掌握for和while循環(huán)語句的語法結(jié)構(gòu)。掌握循環(huán)語句的嵌套使用方法。掌握break、continue語句的用法和區(qū)別。能寫出符合語法要求的if、if-else、if-elif-else語句。能結(jié)合具體應(yīng)用情景,寫出符合語法要求的if嵌套語句。能結(jié)合具體應(yīng)用情景,寫出符合語法要求的for、while循環(huán)語句。能結(jié)合具體應(yīng)用情景,寫出符合語法要求的循環(huán)嵌套語句。能運用break、continue語句控制循環(huán)程序。引導(dǎo)學習者提高規(guī)范編程的思想意識。培養(yǎng)學習者考慮周全、精益求精的工匠精神。培養(yǎng)學習者創(chuàng)新意識和創(chuàng)造能力。培養(yǎng)學習者團隊意識和溝通能力。教學內(nèi)容任務(wù)3.1選擇繪圖一、任務(wù)描述
使用海龜作圖庫turtle繪制圖形。在對話框中輸入1則繪制紅色的正方形,輸入2則繪制綠色的圓形,輸入3則繪制藍色的三角形,輸入4則繪制一只橙色的海龜,如果輸入其他數(shù)據(jù)則提示“選擇錯誤!”。
二、相關(guān)知識datetime庫包含date、time、datetime、timedelta、timezone、tzinfo等類,內(nèi)置許多與日期和時間相關(guān)的函數(shù)。1.datetime庫序號類名稱描述類型1MAXYEAR9999,指能支持的最大年份int2MINYEAR1,指能支持的最小年份int3date表示日期的類,常用的屬性有year、month、daytype4datetime表示日期時間的類,常用的屬性有hour、minute、second、microsecondtype5time表示時間的類type6timedelta表示時間間隔的類,即兩個時間點的間隔??梢宰鎏?、小時、分鐘、秒、毫秒、微秒的時間間隔計算type7timezone表示時區(qū)的類type8tzinfo表示時區(qū)的相關(guān)信息的類type二、相關(guān)知識(1)創(chuàng)建基于date、time、datetime三個類的對象:importdatetimedate_sample=datetime.date(2021,7,20)#年,月,日time_sample=datetime.time(12,20,33)#時,分,秒datetime_sample=datetime.datetime(2021,7,20,12,20,33)#年,月,日,時,分,秒(2)獲取當前時間fromdatetimeimportdatetimenow=datetime.now() #獲取當前日期和時間print(now.year) #輸出年print(now.month) #輸出月print(now.day) #輸出日print(now.hour) #輸出時print(now.minute) #輸出分print(now.second) #輸出秒二、相關(guān)知識(3)計算時間間隔delta1=datetime(2022,6,30,20)-datetime(2022,2,2,1)print(delta1)print(type(delta1))(4)轉(zhuǎn)換字符串stamp=datetime(2022,6,22,10,56,50)print(str(stamp))#輸出強制轉(zhuǎn)換后的字符串#格式化轉(zhuǎn)換字符串print(stamp.strftime("%Y/%m/%d%H:%M:%S"))print(stamp.strftime("%Y-%m-%d%H:%M:%S"))print(stamp.strftime("%Y/%m/%d"))print(stamp.strftime("%Y-%m-%d"))2.條件語句程序中的語句默認自上而下順序執(zhí)行。流程控制意指在程序執(zhí)行時,通過一些特定的指令更改程序中語句的執(zhí)行順序,使程序產(chǎn)生跳躍、回溯等現(xiàn)象。二、相關(guān)知識
程序開發(fā)中經(jīng)常會用到條件判斷,比如,用戶登錄時需判斷用戶名和密碼是否全部正確,進而決定用戶是否能夠成功登錄。類似這種需求的功能,都可以使用if語句實現(xiàn)。二、相關(guān)知識if單分支雙分支多分支if-elseif-elif-elseif語句可使程序產(chǎn)生分支,根據(jù)分支數(shù)量的不同,if語句分為單分支、雙分支和多分支語句。二、相關(guān)知識if條件表達式:
代碼塊if語句由if關(guān)鍵字、條件表達式和代碼塊三部分組成,它根據(jù)表達式的判斷結(jié)果選擇是否執(zhí)行相應(yīng)的代碼塊。二、相關(guān)知識if關(guān)鍵字可以理解為“如果”,當條件表達式的值為True時,則執(zhí)行代碼塊。二、相關(guān)知識importdatetime#導(dǎo)入datetime庫IDNumber= #身份證號碼year=datetime.date.today().year #獲取當前日期的年份age=year-int(IDNumber[6:10]) #當前年份減去出生年份為年齡ifage>=18: #如果年齡大于或等于18,則輸出成年人print("成年人")if條件表達式:
代碼塊1else:
代碼塊2if-else語句產(chǎn)生兩個分支,可根據(jù)條件表達式的判斷結(jié)果選擇執(zhí)行哪一個分支。二、相關(guān)知識如果if條件表達式結(jié)果為True,則執(zhí)行代碼塊1;如果條件表達式結(jié)果為False,則執(zhí)行代碼塊2。二、相關(guān)知識importdatetime#導(dǎo)入datetime庫IDNumber= #身份證號碼year=datetime.date.today().year #獲取當前日期的年份age=year-int(IDNumber[6:10]) #當前年份減去出生年份為年齡ifage>=18: #如果年齡大于或等于18,print("成年人")#則輸出成年人,否則輸出未成年人else:print("未成年人")if條件表達式1:
代碼塊1elif條件表達式2:
代碼塊2elif條件表達式3:
代碼塊3elif條件表達式n-1:
代碼塊n-1else:
代碼塊n如果程序需要處理多種情況,那么可以使用if-elif-else語句。二、相關(guān)知識若條件表達式1的結(jié)果為True,則執(zhí)行代碼塊1;若條件表達式2的結(jié)果為True,則執(zhí)行代碼塊2,以此類推,若else前面的條件表達式結(jié)果都為False,則執(zhí)行代碼塊n。二、相關(guān)知識importdatetime#導(dǎo)入datetime庫IDNumber= #身份證號碼year=datetime.date.today().year #獲取當前日期的年份age=year-int(IDNumber[6:10]) #當前年份減去出生年份為年齡ifage>18: #如果年齡大于18,則輸出成年人print("成年人")elifage==18: #如果年齡等于18,則需進一步處理print("是否成年還需要對比出生月份和日期")else: #如果年齡小于18,則為未成年人print("未成年人")3.條件結(jié)構(gòu)的嵌套if語句可以嵌套if語句,根據(jù)對齊格式來確定if語句之間的邏輯關(guān)系。二、相關(guān)知識if條件表達式1:
if條件表示式2:#if嵌套
代碼塊1else:
代碼塊2else:
代碼塊3二、相關(guān)知識importdatetime #導(dǎo)入datetime庫IDNumber=#身份證號碼year=datetime.date.today().year#獲取當前日期的年份age=year-int(IDNumber[6:10])#當前年份減去出生年份為年齡ifage>18:#如果年齡大于18,則輸出成年人print("成年人")elifage==18: #如果年齡等于18,則需進一步處理month1=datetime.date.today().month#獲取當前日期的月份month2=int(IDNumber[10:12])#獲取身份證中的月份month=month1-month2;ifmonth>0: #如果當前月份比身份證上的月份大,則輸出成年人print("成年人")elifmonth==0:#當前月份與身份證上的月份相同,則進一步處理day1=datetime.date.today().day#獲取當前日期的日期day2=int(IDNumber[12:14]) #獲取身份證中的日期day=day1-day2;ifday>=0:#如果當前日期比身份證上的日期大或相等,則輸出成年人print("成年人")else:#當前日期比身份證上的日期小,則輸出未成年人print("未成年人")else:#當前月份比身份證上的月份小,則輸出未成年人print("未成年人")else:#如果年齡小于18,則輸出未成年人print("未成年人")4.相關(guān)turtle庫函數(shù)說明turtle.shape(shape):設(shè)置海龜?shù)男螤?,參?shù)值有“arrow”“turtle”“circle”“square”“triangle”“classic”等,默認值為“classic”。turtle.shapesize(stretch_wid=None,stretch_len=None,outline=None):設(shè)置形狀拉伸大小和輪廓線。turtle.stamp():在海龜當前位置印制一個海龜形狀。turtle.clearstamps(n=None):刪除全部或前/后n個海龜印章。如果n為None,則刪除全部印章,如果n>0,則刪除前n個印章,否則刪除后n個印章。二、相關(guān)知識三、任務(wù)分析turtle庫中的shape()函數(shù)可以設(shè)置海龜?shù)男螤?,可以通過改變海龜形狀得到正方形、圓形、三角形及海龜?shù)膱D形??梢允褂胹hapesize()函數(shù)設(shè)置形狀的大小,使用stamp()函數(shù)在畫筆當前位置印制一個與海龜形狀相同的圖形,使用numinput()函數(shù)設(shè)置輸入選項。四、任務(wù)實現(xiàn)(1)在PyCharm中,選擇“File”→“NewProject…”,在彈出的對話框中將項目命名為“chapter03”,單擊“Create”按鈕,創(chuàng)建新項目。(2)在PyCharm中,右擊左側(cè)列表中的項目名稱“chapter03”,選擇“New”→“PythonFile”,在彈出的對話框中將文件命名為“3-1選擇繪圖.py”,按“Enter”鍵,進入代碼編輯界面。(3)在新文件中指定文件編碼為UTF-8,添加文件功能注釋。(4)導(dǎo)入turtle庫并取別名為t,提示輸入選項并設(shè)置海龜形狀的大小為10。#-*-coding:utf-8-*-"""使用海龜作圖庫turtle繪制圖形,在對話框中輸入1則繪制紅色的正方形,輸入2則繪制綠色的圓形,輸入3則繪制藍色的三角形,輸入4則繪制一只橙色的海龜,如果輸入其他數(shù)據(jù)則提示
"選擇錯誤!"。"""importturtleast#導(dǎo)入庫#提示輸入選項,并記錄輸入選項的值shape=t.numinput('繪圖','請選擇:1--正方形2--圓形3--三角形4--海龜')t.shapesize(10)#設(shè)置海龜形狀大小四、任務(wù)實現(xiàn)(5)使用條件語句,根據(jù)輸入的選項值繪制不同的形狀:先設(shè)置畫筆的形狀,然后設(shè)置顏色,最后使用蓋印章命令繪制圖形。ifshape==1:#如果選項為1,則設(shè)置形狀為正方形、顏色為紅色,蓋印章t.shape('square')t.color('red')t.stamp()elifshape==2:#如果選項為2,則設(shè)置形狀為圓形、顏色為綠色,蓋印章t.shape('circle')t.color('green')t.stamp()elifshape==3:#如果選項為3,則設(shè)置形狀為三角形、顏色為藍色,蓋印章t.shape('triangle')t.color('blue')t.stamp()elifshape==4:#如果選項為4,則設(shè)置形狀為海龜形狀、顏色為橙色,蓋印章t.shape('turtle')t.color('orange')t.stamp()else:#如果選項為其他數(shù)據(jù),則隱藏形狀,輸出文字t.hideturtle()t.write('選擇有誤',font=('Arial',20,'normal'))t.mainloop()任務(wù)3.2方形炫彩螺一、任務(wù)描述海龜作圖庫turtle可以用于繪制漂亮的圖形,可結(jié)合循環(huán)語句繪制絢麗的螺旋線,如圖所示。其中(a)中的線條為紅色,線條轉(zhuǎn)折的角度為90°;(b)中的顏色為藍色,線條轉(zhuǎn)折的角度發(fā)生了變化;(c)中的顏色是漸變的,可嘗試使用for和while兩種循環(huán)語句編寫。while條件表達式:
代碼塊while循環(huán)是一個條件循環(huán)語句,當條件滿足時重復(fù)執(zhí)行代碼塊,直到條件不滿足為止。二、相關(guān)知識1.while循環(huán)語句首先判斷條件表達式的結(jié)果是否為True,若結(jié)果為True執(zhí)行while循環(huán)中的代碼塊,然后再次判斷條件表達式的結(jié)果是否為True,若結(jié)果仍為True,則再次執(zhí)行代碼塊...直至條件表達式的結(jié)果為False時結(jié)束循環(huán)。二、相關(guān)知識s=0 #s存放累加和n=1 #n存放累加項whilen<=100: #循環(huán)條件s+=n #循環(huán)體,實現(xiàn)累加求和n+=1 #循環(huán)體,實現(xiàn)循環(huán)條件n加1print("1+2+3+…+100=",s)例如:用while循環(huán)語句計算1+2+3+…+100的和for循環(huán)語句通常用在已知重復(fù)執(zhí)行次數(shù)的循環(huán)中,for循環(huán)可以遍歷任何序列,如一個列表或者一個字符串,針對序列中的每個元素運行一次循環(huán)體。for目標變量in序列對象:
代碼塊
二、相關(guān)知識2.for循環(huán)語句序列對象除了已經(jīng)學過的字符串外,還包括列表、元組、字典、集合等。str="Whatwesharetodaymaygiveparentsnewinspiration."count=0 #記錄a的數(shù)目的變量forcinstr: #依次從字符串中獲取字符ifc=='a': #如果獲取的字符為a,則數(shù)目加1count+=1print("字符串str中含有",count,"個a!")二、相關(guān)知識(1)for循環(huán)遍歷序列例如,計算一個字符串中含有幾個字符afor循環(huán)range()函數(shù)可生成一個左閉右開的整數(shù)范圍。foriinrange(3):print("Hello")foriinrange(起始值,結(jié)束值,步長):
執(zhí)行語句(2)for循環(huán)與range()函數(shù)搭配foriinrange(1,3):print("Hello")foriinrange(1,9,2):print("Hello")for循環(huán)
例如:輸入10個數(shù),求出其中的最大數(shù)和最小數(shù)。x=int(input("請輸入數(shù)字:")) #輸入第一個數(shù)max=min=x #將第一個數(shù)賦給記錄最大值和最小值的變量foriinrange(1,10): #循環(huán)9次
x=int(input("請輸入數(shù)字:")) #輸入一個數(shù)字
ifx>max: #比最大值大,將新輸入的數(shù)賦給最大值
max=x
elifx<min: #比最小值小,將新輸入的數(shù)賦給最小值
min=xprint("max={0},min={1}".format(max,min))for循環(huán)
例如:輸出100以內(nèi)的3的倍數(shù),每行顯示10個數(shù),并計算它們的和s=0 #存儲和的變量count=0 #記錄3的倍數(shù)的數(shù)目forninrange(0,100,3): #從0開始至99結(jié)束,步長為3
print(n,end='\t') #輸出3的倍數(shù),不換行
count+=1 #數(shù)目加1
if(count%10==0): #輸出10個數(shù)后換行
print()
s+=n #3的倍數(shù)的累加和print("\n100以內(nèi)3的倍數(shù)數(shù)字之和為:",s)turtle.pencolor(color):沒有參數(shù)傳入,返回當前畫筆顏色;傳入?yún)?shù)表示設(shè)置畫筆顏色,其值可以是字符串如“green”“red”等,也可以是RGB三元組。turtle.colormode(mode):用于返回顏色模式或?qū)⑵湓O(shè)置為1.0或255。參數(shù)mode默認為1,即RGB取值范圍為0~1,如果設(shè)置為255,則RGB取值范圍為0~255。turtle.pensize(n):設(shè)置畫筆寬度,默認為1。turtle.tracer(n,delay):用于打開或關(guān)閉繪圖動畫,并設(shè)置更新圖紙的延遲時間。二、相關(guān)知識3.相關(guān)turtle函數(shù)說明三、任務(wù)分析分析圖(a),從中心點開始繪制一條線段,向左旋轉(zhuǎn)90°,再繪制一條略長的線段,再旋轉(zhuǎn)90°,以此類推。圖(b)在圖(a)的基礎(chǔ)上修改了旋轉(zhuǎn)角度,從外圍的線條可以看出基本上屬于四邊形,旋轉(zhuǎn)角度略大于90°。圖(c)的顏色是漸變的,在編碼過程中不能設(shè)置固定的線條顏色。三、任務(wù)分析
在第1單元中我們安裝了第三方庫coloradd,該庫中的coloradd()函數(shù)可以對三原色的顏色進行改變,格式為coloradd(三原色,增量),可以通過循環(huán)語句逐漸改變?nèi)珜崿F(xiàn)顏色漸變效果。方形炫彩螺的線條沒有縫隙,這可以通過增加畫筆寬度,減少每次線條增加的長度來實現(xiàn)。四、任務(wù)實現(xiàn)(1)在PyCharm中,右擊左側(cè)列表中的項目名稱“chapter03”,選擇“New”→“PythonFile”,在彈出的對話框中將文件命名為“3-2彩色螺旋線.py”,按“Enter”鍵,進入代碼編輯界面。(2)新建Python文件,導(dǎo)入turtle庫,設(shè)置窗體大小和畫筆顏色。(3)繪制圖(a)。按照任務(wù)分析中的思路,先繪制一條2個單位長度的線段,向左旋轉(zhuǎn)90°,再繪制一條增加2個單位長度的線段,再向左旋轉(zhuǎn)90°,依次類推,循環(huán)繪制80條線段,完成圖(a)的繪制。importturtleastt.setup(600,400,200,100)#設(shè)置窗體大小為600×400,窗體左上角在屏幕的(200,100)位置t.pencolor('red')forninrange(80): #循環(huán)80次,從0開始
t.forward(2+2*n) #線段長度從2開始,依次增加2
t.left(90) #旋轉(zhuǎn)90°t.mainloop()四、任務(wù)實現(xiàn)(4)將步驟(2)中的顏色設(shè)置為藍色,步驟(3)中的旋轉(zhuǎn)角度設(shè)置為91°,代碼作如下修改,再次運行,繪制出圖(b)。t.pencolor('red')
t.pencolor('blue’)t.left(90)
t.left(91)(5)新建Python文件,取名為“3-2方形炫彩螺.py”,導(dǎo)入turtle、coloradd庫,標題為“方形炫彩螺”,顏色模式為255,定義顏色color變量并設(shè)置初始值為青色(0,255,255),將畫筆寬度設(shè)置為8。importturtleimportcoloraddturtle.title('方形炫彩螺') #設(shè)定標題turtle.colormode(255) #設(shè)定顏色模式color=(0,255,255) #青色元組turtle.pensize(8) #畫筆寬度四、任務(wù)實現(xiàn)(6)使用for循環(huán)配合range()繪制炫彩螺,循環(huán)的次數(shù)越多,色彩越豐富,在此設(shè)置為循環(huán)800次。循環(huán)次數(shù)多,繪制速度會很慢,可以使用turtle.tracer()關(guān)閉動畫并且設(shè)置刷新屏幕的時間以實現(xiàn)更好的視覺效果。循環(huán)體內(nèi),每次移動i/2,旋轉(zhuǎn)角度也適當減小,不需要每次循環(huán)都改變顏色,可以循環(huán)5次改變一次顏色,根據(jù)實際情況自行調(diào)整。turtle.tracer(10) #每10ms更新一次turtle.hideturtle() #隱藏海龜形狀foriinrange(800): #重復(fù)800次
turtle.fd(i/2) #移動i/2
turtle.rt(90.2) #右轉(zhuǎn)90.2°
ifi%5==0:
color=coloradd.coloradd(color,0.01)#當是5的整數(shù)時讓顏色改變一次
turtle.pencolor(color)#畫筆顏色turtle.mainloop() #主循環(huán),刷新組件四、任務(wù)實現(xiàn)(7)將步驟(6)中的for循環(huán)語句改成while循環(huán)語句,實現(xiàn)相同的效果。使用while循環(huán)需要有循環(huán)變量的初始值、退出條件,循環(huán)體內(nèi)需要有循環(huán)變量改變的過程,避免出現(xiàn)死循環(huán)。turtle.tracer(10) #每10ms更新一次turtle.hideturtle() #隱藏海龜形狀i=0 #循環(huán)變量初始值,用于記錄循環(huán)次數(shù)whilei<800: #重復(fù)800次
turtle.fd(i/2) #移動i/2
turtle.rt(90.2) #右轉(zhuǎn)90.2°
ifi%5==0:
color=coloradd.coloradd(color,0.01)#當是5的整數(shù)時讓顏色改變一次
turtle.pencolor(color) #畫筆顏色
i+=1 #循環(huán)變量遞增,缺少該句會出現(xiàn)死循環(huán)turtle.mainloop() #主循環(huán),刷新組件任務(wù)3.3嵌套螺旋線一、任務(wù)描述使用turtle庫繪制多彩的嵌套螺旋線,在圖(a)所示窗口中輸入嵌套螺旋線的邊數(shù),如果輸入的是2則繪制圖(b)所示的具有2個分支的螺旋線,如果輸入的是3則繪制圖(c)所示的具有3個分支的螺旋線,依次類推。(a)(b)(c)(d)(e)二、相關(guān)知識For循環(huán)嵌套:for循環(huán)嵌套是指for循環(huán)語句中嵌套while或for循環(huán)語句。例如,輸出九九乘法表。1.循環(huán)嵌套for臨時變量1in可迭代對象:
代碼塊1for臨時變量2in可迭代對象:
代碼塊2foriinrange(1,10):#外循環(huán),用來控制行數(shù)forjinrange(1,i+1):#內(nèi)循環(huán)用來控制輸出幾個算式,與外循環(huán)的行數(shù)i有關(guān)print('{}*{}={}'.format(i,j,i*j),end='\t’)#輸出算式print()#內(nèi)循環(huán)結(jié)束后換行二、相關(guān)知識(2)while循環(huán)嵌套:while循環(huán)嵌套是指while循環(huán)語句中嵌套while或for循環(huán)語句。例如,輸出九九乘法表。while循環(huán)條件1:
代碼塊1while循環(huán)條件2:
代碼塊2......i=1 #設(shè)置外循環(huán)的循環(huán)變量初始值whilei<10: #外循環(huán),用來控制行數(shù)j=1 #設(shè)置內(nèi)循環(huán)的循環(huán)變量初始值whilej<i+1: #內(nèi)循環(huán)用來控制輸出幾個算式,與外循環(huán)的行數(shù)i有關(guān)print('{}*{}={}'.format(i,j,i*j),end='\t’)#輸出算式j(luò)+=1 #內(nèi)循環(huán)變量遞增i+=1 #外循環(huán)變量遞增print() #內(nèi)循環(huán)結(jié)束后換行跳出整個循環(huán)break語句跳出本次循環(huán)continue語句循環(huán)語句一般會在執(zhí)行完所有的情況后自然結(jié)束,但是有些情況下需要停止當前正在執(zhí)行的循環(huán),也就是跳出循環(huán)。二、相關(guān)知識2.循環(huán)控制語句for臨時變量in可迭代對象:
執(zhí)行語句if條件表達式:
代碼塊break(1)break語句:用于跳出離它最近一級的循環(huán),通常與if語句結(jié)合使用,放在if語句代碼塊中。二、相關(guān)知識while條件表達式:
代碼塊if條件表達式:
代碼塊breakbreak語句也可以用于while循環(huán),其格式如下所示:二、相關(guān)知識二、相關(guān)知識例如,判斷一串字符串中是否包含數(shù)字字符,在使用for循環(huán)遍歷字符串時,若遍歷到數(shù)字,使用break語句結(jié)束循環(huán)。str='我們班有45位同學。'flag=False #設(shè)置標記,用于記錄是否含有數(shù)字,默認不含有forcinstr:print(c,end='') #輸出遍歷到的字符ifc>='0'andc<='9':print("\nstr字符串中含有數(shù)字")flag=True #找到數(shù)字后,設(shè)置標記變量breakifnotflag: #如果標記變量仍為False,表示沒有數(shù)字print("str字符串中不包含數(shù)字")s=0 #存放累加和foriinrange(1,101):#循環(huán)100次ifi%2!=0:#如果是奇數(shù),跳過后面的語句,進入下一輪循環(huán)continues+=i;#累加和print("100以內(nèi)的偶數(shù)和為:",s)當執(zhí)行到continue語句時,程序會忽略當前循環(huán)中剩余的代碼,重新開始執(zhí)行下一次循環(huán)。(2)continue語句用于跳出當前循環(huán),繼續(xù)執(zhí)行下一次循環(huán)。二、相關(guān)知識3.相關(guān)turtle庫函數(shù)說明turtle.position():返回海龜當前的坐標。turtle.heading():返回海龜當前的朝向。turtle.setposition(x,y):將海龜移動到一個坐標(x,y)。turtle.setheading(angle):設(shè)置當前畫筆運動方向為angle角度。turtle.dot(r):繪制一個指定直徑為r的圓點。二、相關(guān)知識三、任務(wù)分析通過分析效果圖,可以得出如下結(jié)論。嵌套螺旋線有幾條分支,分支上的螺旋線就有幾條邊。需要使用循環(huán)嵌套,外循環(huán)用來控制繪制多少條螺旋線并依次放置在不同的分支上,內(nèi)循環(huán)用來控制每條螺旋線的邊數(shù)。隨著外循環(huán)的次數(shù)增多,內(nèi)循環(huán)繪制的螺旋逐漸增大,即循環(huán)的次數(shù)增多。螺旋線為彩色,可將顏色組合成以逗號分隔的字符串,并通過字符串分割函數(shù)split()進行處理??梢韵染帉懲庋h(huán)代碼,用圓點代替螺旋線,待圓點輪廓符合要求后再編寫內(nèi)循環(huán)代碼,用螺旋線代替圓點。四、任務(wù)實現(xiàn)(1)在PyCharm中,右擊左側(cè)列表中的項目名稱“chapter03”,選擇“New”→“PythonFile”,在彈出的對話框中將文件命名為“3-3嵌套螺旋線.py”,按“Enter”鍵,進入代碼編輯界面。(2)導(dǎo)入turtle庫,提示輸入嵌套螺旋線邊數(shù)并記錄,設(shè)置顏色字符串并使用逗號進行分隔,每10ms刷新一次屏幕,以提高繪圖效率。importturtleast#記錄輸入邊數(shù)sides=int(t.numinput("邊數(shù)","嵌套螺旋線有幾條邊?
(2~5)",4,2,5))#設(shè)置顏色字符串并進行分隔colors="red,orange,blue,green,purple".split(',')t.tracer(10)#每10ms刷新一次屏幕四、任務(wù)實現(xiàn)(3)編寫外循環(huán)代碼,先將畫筆顏色設(shè)置為“red”,用紅點代替分支上的螺旋線。外循環(huán)為100次,即繪制100個紅點。循環(huán)體內(nèi)實現(xiàn)的功能與繪制螺旋線思路基本一致,區(qū)別在于不繪制線條,在每次前進后畫圓點。循環(huán)體內(nèi)編碼思路:抬筆→前進一段距離→落筆→畫圓點→旋轉(zhuǎn)(旋轉(zhuǎn)角度與邊數(shù)有關(guān))。t.pencolor('red')forminrange(100): #繪制100個紅點t.penup() #抬筆t.forward(m*4) #前進一段距離t.pendown() #落筆t.dot() #畫圓點t.right(360/sides+2) #旋轉(zhuǎn)角度與邊數(shù)有關(guān),加2用于實現(xiàn)旋轉(zhuǎn)效果,否則為直線四、任務(wù)實現(xiàn)(4)編寫內(nèi)循環(huán)代碼,用螺旋線替代紅點。內(nèi)循環(huán)繪制的整體思路為:記錄畫筆位置→繪制螺旋線→畫筆回到原位置。繪制螺旋線前首先記錄畫筆的位置,螺旋線繪制完成后畫筆需要回到原來的位置,以便外循環(huán)按規(guī)則確定新的螺旋線位置。內(nèi)循環(huán)的循環(huán)次數(shù)與外循環(huán)當前的循環(huán)次數(shù)有關(guān),可以取當前外循環(huán)次數(shù)的1/2,在內(nèi)循環(huán)體中設(shè)置畫筆顏色、前進一段距離(距離與內(nèi)循環(huán)次數(shù)有關(guān))、旋轉(zhuǎn)角度(與邊數(shù)有關(guān),減2出現(xiàn)螺旋效果)等。position=t.position() #記錄外循環(huán)嵌套螺旋線的位置heading=t.heading() #記錄外循環(huán)海龜?shù)姆较騮.pendown()forninrange(int(m/2)):t.pencolor(colors[n%sides])t.forward(2*n)t.right(360/sides-2)t.penup()t.setx(position[0]) #內(nèi)循環(huán)結(jié)束回到外循環(huán)原來的位置,即x軸位置t.sety(position[1]) #內(nèi)循環(huán)結(jié)束回到外循環(huán)原來的位置,即y軸位置t.setheading(heading) #回到外循環(huán)原來的方向四、任務(wù)實現(xiàn)(5)至此,嵌套螺旋線的代碼全部編寫完成,運行并輸入邊數(shù),出現(xiàn)圖3-7中的圖形。importturtleast#記錄輸入邊數(shù)sides=int(t.numinput("邊數(shù)","嵌套螺旋線有幾條邊?
(2~5)",4,2,5))colors="red,orange,blue,green,purple".split(',’)#設(shè)置顏色字符串并進行分隔t.tracer(10) #每10ms刷新一次屏幕forminrange(100): #外循環(huán)為100次,繪制100條螺旋線t.forward(m*4) #前進一段距離position=t.position() #記錄外循環(huán)螺旋線的位置
溫馨提示
- 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)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年長沙衛(wèi)生職業(yè)學院單招綜合素質(zhì)筆試備考試題含詳細答案解析
- 2026年綿陽職業(yè)技術(shù)學院單招綜合素質(zhì)筆試模擬試題含詳細答案解析
- 2026年齊齊哈爾高等師范??茖W校單招綜合素質(zhì)考試備考試題含詳細答案解析
- 2026年山西水利職業(yè)技術(shù)學院單招綜合素質(zhì)筆試模擬試題含詳細答案解析
- 2026貴州貴陽花溪區(qū)孟關(guān)中心完小招聘7人參考考試試題及答案解析
- 2026年安徽揚子職業(yè)技術(shù)學院單招綜合素質(zhì)考試模擬試題含詳細答案解析
- 2026年廣西職業(yè)技術(shù)學院單招職業(yè)技能考試備考題庫含詳細答案解析
- 2026年河南護理職業(yè)學院單招綜合素質(zhì)筆試備考試題含詳細答案解析
- 2026年保定幼兒師范高等??茖W校單招綜合素質(zhì)考試參考題庫含詳細答案解析
- 2026年重慶人文科技學院單招綜合素質(zhì)筆試模擬試題含詳細答案解析
- 2025年初級電工證考試筆試試題及答案
- 2026山東聊城市新聊泰城市建設(shè)發(fā)展有限公司首批用人招聘10人備考題庫及答案詳解參考
- dbj41河南省城市軌道交通客 運服務(wù)標志設(shè)計標準
- 房地產(chǎn)公司開發(fā)全流程法律風險手冊(定稿)模版
- 2026國家國防科技工業(yè)局所屬事業(yè)單位第一批招聘62人備考題庫帶答案詳解
- 2026中國電信四川公用信息產(chǎn)業(yè)有限責任公司社會成熟人才招聘備考題庫及1套完整答案詳解
- 2025班組三級安全安全教育考試題庫(+答案解析)
- CRM培訓(xùn)教學課件
- 安徽省亳州市2025屆高三上學期期末質(zhì)量檢測生物試卷(含答案)
- 天津市考市直面試真題題+解析
- 研究受試者知情同意書
評論
0/150
提交評論