如果能夠找到規(guī)律,可以讓代碼變得更簡單。上述代碼中其實就是調(diào)用circle()函數(shù)四次,每次傳入?yún)?shù)不同而已。
為平定等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計制作服務(wù),及平定網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為做網(wǎng)站、成都網(wǎng)站建設(shè)、平定網(wǎng)站設(shè)計,以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!
我們可以加入循環(huán),循環(huán)就是重復(fù)不停地做相同的事情;再找到循環(huán)變量和畫圓參數(shù)之間的規(guī)律即可。
第一個圓的半徑為50,每次按15的節(jié)奏遞減,直到繪制完半徑為5的圓。這樣就可以使用range()函數(shù),傳入如下參數(shù):range(50,0,-15)。
或者由小到大繪制,傳入這樣的參數(shù)也可以:range(5,51,15)。
還可以這樣:循環(huán)四次,循環(huán)變量i依次為0、1、2、3,再在繪制圓的過程中構(gòu)造遞減的表達式:100/2-i*15。
分析這個表達式,當i等于0時,結(jié)果為50,繪制半徑為50的圓;當i等于1時,結(jié)果為35,繪制半徑為35的圓……正好符合題目要求的參數(shù)值。
【擴展】思考如何繪制以坐標原點為中心的同心圓呢?
仔細觀察畫筆繪制圓的軌跡,可發(fā)現(xiàn):默認小海龜從坐標原點出發(fā),逆時針旋轉(zhuǎn)一圈畫圓;然后,再回到起始點。
所以,繪制同心圓。我們需要將畫筆向下移動一定的距離,即改變y的坐標,x坐標保持不變?yōu)?。參考代碼如下:
循環(huán)體內(nèi),每次需要抬筆和落筆功能。
02
案例二:繪制一個正多邊形
繪制正多邊形有這樣一個結(jié)論:用360°去除以繪制的邊數(shù),即可得到旋轉(zhuǎn)角度。
比如:正三角形的旋轉(zhuǎn)角度(360/3=120°)、正四邊形的旋轉(zhuǎn)角度(360/4=90°)、正八邊形的旋轉(zhuǎn)角度(360/8=45°)。其他以此類推。
那么,我們要繪制一個正八邊形呢?
使用循環(huán)結(jié)構(gòu),循環(huán)八次。每次前移一定距離,再旋轉(zhuǎn)(360/邊數(shù))的角度,這里旋轉(zhuǎn)的就是45°角。參考代碼如下:
有了這樣的結(jié)論,其他的正多邊形都可以信手拈來,小菜一碟了。只需要稍微改幾個參數(shù)即可。
03
案例三:繪制由多種顏色組成的正螺旋線
比如,這樣的圖形:
這是由八種顏色組成的正八邊形螺旋線結(jié)構(gòu)圖,顏色依次為:紅(red)、綠(green)、藍(blue)、黃(yellow)、紫(purple)、橙(orange)、黑(black)、粉(pink)等八種。
繪制思路:
首先,需要創(chuàng)建一個顏色列表list,含有八種顏色元素。
第二,前移一定距離,這個距離值是由小到大逐級遞增的過程。
第三,旋轉(zhuǎn)一定角度,可參照案例二的結(jié)論。
最后,考慮畫筆的顏色,每8次(邊數(shù))為一個周期循環(huán)顏色列表。
參考代碼如下:
其他的正螺旋線,也是如此規(guī)律。
【擴展】如果是有一定旋轉(zhuǎn)角度的螺旋線呢?比如,這樣的圖形:
解題思路:只需要在正螺旋線的基礎(chǔ)上,讓旋轉(zhuǎn)角度多偏移1-2°即可。修改上述案例中最后一行的代碼:
在什么環(huán)境下?安卓?瘟到死?linux?pyS60 ?
用什么GUI?pygtk?wxpython?pyQt?
看不出一點點你求教的誠意。。。
鑒定完畢!
mail:zhangxuhong1024@qq.com
from?turtle?import?*
fillcolor('pink')
begin_fill()
for?i?in?range(8):
forward(100)
right(45)
end_fill()
exitonclick()
假設(shè)每一條邊長長為100
畫八邊形需要在前進100后向右轉(zhuǎn)45度,重復(fù)(也就是循環(huán))8次即可
-設(shè)定填充色:fillecolor(r, g, b)
-開始填充:begin_fill()
-結(jié)束填充:end_fill()
畫一組隨機分布,隨機大小和不同色調(diào)的心形。先初始化一個填充顏色。然后,在畫每個圖形繪制之前使用begin_fill()以及繪制之后使用end_fill()。這樣就能得到一個填充效果。
import turtle as t
import random as r
def pink():
color = (1, r.random(), 1)
return color
def randomrange(min, max):
return min + (max- min)*r.random()
def moveto(x, y):
t.penup()
t.goto(x, y)
t.pendown()
def heart(r, a):
factor = 180
t.seth(a)
t.circle(-r, factor)
t.fd(2 * r)
t.right(90)
t.fd(2 * r)
t.circle(-r, factor)
t.setup(800, 800, 200, 200)
t.speed(9)
t.pensize(1)
t.penup()
for i in range(20):
t.goto(randomrange(-300, 300), randomrange(-300, 300))
t.begin_fill()
t.fillcolor(pink())
heart(randomrange(10, 50), randomrange(0, 90))
t.end_fill()
moveto(400, -400)
t.done()
""" 2、編程計算:個位數(shù)為7且能被3整除的4位數(shù)共有多少個。
"""
print len([n for n in xrange(1000,10000) if (n % 10 == 7 and n % 3 == 0)])
#!/usr/bin/python
# encoding: utf-8
#
# filename: baidu.py
# date June, 2013
"""
5、有20支猴子要選取猴王,采用了這樣的方法:
20支猴子依次編了號(1-20)并圍坐一圈,1,2,3開始報數(shù),報到3的被淘汰。最后一支猴子為王。
請問猴王的編號是多少,其余被淘汰的猴子的編號是多少?編程實現(xiàn)或?qū)懗鼍幊趟悸贰?/p>
"""
class Rang:
def __init__(self, lst):
self.lst = lst
def run(self):
buff = self.lst
rque = []
byps = []
caid = 1
loopflag = True
while loopflag:
while buff:
a = buff.pop(0)
if caid == 3:
byps.append(a)
caid = 0
else:
rque.append(a)
caid += 1
buff, rque = rque, []
if len(buff) == 1:
king = buff[0]
loopflag = False
return king, byps
rang = Rang(range(1,21))
king, bypass = rang.run()
print u"猴王的編號", king
print u"被淘汰的猴子的編號是", bypass
第一步,打開python語言命令窗口,聲明一個函數(shù)print_color,調(diào)用range遍歷,打印星號,如下圖所示:
第二步,接著調(diào)用第一步中的函數(shù),然后查看打印結(jié)果,可以發(fā)現(xiàn)生成一個三角形,如下圖所示:
第三步,再次定義一個函數(shù)four_tu,利用循環(huán)生成星號,注意查看函數(shù)生成的圖形。
第四步,調(diào)用上述步驟中定義的函數(shù),然后查看打印圖形組合的形狀。
第五步,如果在定義的函數(shù)內(nèi),多次調(diào)用print()方法打印星號,會是什么樣的結(jié)果呢。
第六步,在后續(xù)步驟中,調(diào)用函數(shù)打印結(jié)果,可以發(fā)現(xiàn)生成一個不規(guī)則的圖形。
名稱欄目:Python函數(shù)畫八邊形 六邊形的繪制python
標題路徑:http://chinadenli.net/article10/hgcego.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供建站公司、網(wǎng)站維護、ChatGPT、手機網(wǎng)站建設(shè)、靜態(tài)網(wǎng)站、網(wǎng)頁設(shè)計公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)