1. 程式人生 > >Python繪制五角星等能一筆畫出的角星

Python繪制五角星等能一筆畫出的角星

exit 函數 pytho val gre 重要 偶數 oca 分享

只有奇數和4的整數倍的角星才能一筆畫出,見程序和註釋:

import math
import turtle as t

#這種方法只能畫只在尖角處轉向就可以畫出的角星,\
# 即可以用等長線段(線段長度為不轉彎的最大)不提筆畫完的角星\
#如註釋吊28,29行,則偶數角數變為原來2倍,證明此方法只能畫奇數和4的整數倍的角星\
#即只有奇數和4的整數倍的角星才能一筆畫出

def loop(r,n):
    t.fd(ol(r,n))
    t.right(180-360/(2*n))

def ol(r,n):
    na = (360/(4*n)) / 180 * math.pi
    ol = r * math.cos(na) * 2
    ol 
= int(round(ol)) return ol def relocation(r,n): t.penup() t.left(90) t.fd(r) t.right(180 - 360/(4*n)) t.pendown() def main(r,n): times=n if n in (1,2,3,4,8): print(無法一筆畫出{0:.0f}角星.format(times)) exit() if n%2==0: n/=2 if n%2==1:
print(無法一筆畫出{0:.0f}角星.format(times)) exit() relocation(r,n) for i in range(times): loop(r,n) t.penup() t.goto(0,0) t.seth(0) t.pendown() r=200 n=eval(input(請輸入要繪制的角星的角數n:)) #eval()函數很重要,不要總忘記加!!! t.pensize(8) #註意t.pensize(20)不是t.pensize=20,變量賦值采用=,屬性更改用t.pensize(20)
t.color(green) t.speed(10) t.setup(450,450) main(r,n) t.done()

五角星和十六角星:

技術分享圖片技術分享圖片

Python繪制五角星等能一筆畫出的角星