16个python实例解析

  • 实例1: 温度转换
  • 实例2: Python蟒蛇绘制
  • 实例3: 天天向上的力量
  • 实例4: 文本进度条
  • 实例5:身体质量指数BMI
  • 实例6: 圆周率的计算
  • 实例7: 七段数码管绘制
  • 实例8: 科赫雪花小包裹
  • 实例9: 基本统计值计算
  • 实例10: 文本词频统计
  • 实例11: 自动轨迹绘制
  • 实例12: 政府工作报告词云
  • 实例13: 体育竞技分析
  • 实例14: 第三方库安装脚本
  • 实例15: 霍兰德人格分析雷达图
  • 实例16: 玫瑰花绘制

前排提示

**在pycharm中可用Screen().setup(650, 350, 200, 200)替换setup(650, 350, 200, 200)**

来源:https://blog.csdn.net/rong11417/article/details/104002872

1.温度转化实例

#TempConvert.py
val=input("请输入带温度表示符号的温度值(例如:32C):")
if val[-1] in ['C','c']:
    f = 1.8*float(val[0:-1])+32
    print("转换后的温度为:%.2fF"%f)
elif val[-1] in ['F','f']:
    c = (float(val[0:-1])-32)/1.8
    print("转换后的温度为:%.2fC"%c)
else:
    print("输入有误")

2.画蛇~

import turtle
def drawSnake(rad,angle,len,neckrad):
    for i in range(len):
        turtle.circle(rad,angle)
        turtle.circle(-rad,angle)
    turtle.circle(rad,angle/2)
    turtle.fd(rad)
    turtle.circle(neckrad+1,180)
    turtle.fd(rad*2/3)
def main():
    turtle.setup(1300,800,0,0)
    pythonsize=30
    turtle.pensize(pythonsize)
    turtle.pencolor("pink")
    turtle.seth(-40)
    drawSnake(40,80,5,pythonsize/2)

main()

'''
Turtle的turtle.setup()函数用于启动一个图形窗口,它有四个参数
turtle.setup(width,height,startx,starty)
分别是:启动窗口的宽度,高度,表示窗口启动时窗口左上角在屏幕中的坐标位置
(显示屏幕也是坐标系,左上角为原点,向左和向下分别是x轴和y轴)
'''
#turtle.pensize()函数表示小乌龟运动轨迹的宽度,包含一个参数。
#turtle.pencolor()函数表示小乌龟运动轨迹的颜色,包含一个输入参数。(RGB方式)
#turtle.seth(angle)表示小乌龟启动时运动的方向,它表示一个输入参数,角度值。

3.天天向上的力量

#DayDayUpQ1.py
dayup = pow(1.001,365)
daydown = pow(0.999,365)
print("向上:{:.2f},向下:{:.2f}".format(dayup,daydown))
#DayDayUpQ2.py
dayfactor=0.01
dayup = pow(1+dayfactor,365)
daydown = pow(1-dayfactor,365)
print("向上:{:.2f},向下:{:.2f}".format(dayup,daydown))
#DayDayUpQ3.py
dayup=1.0
dayfactor=0.01
for i in range(365):
    if i % 7 in[6,0]:
        dayup=dayup*(1-dayfactor)
    else:
        dayup=dayup*(1+dayfactor)
print("工作日的力量:{:.2f}".format(dayup))
#DayDayUpQ4.py
def dayUP(df):
    dayup=1
    for i in range(365):
        if i % 7 in[6,0]:
            dayup=dayup*(1-0.01)
        else:
            dayup=dayup*(1+df)
    return dayup
dayfactor=0.01
while dayUP(dayfactor)<37.78:
    dayfactor+=0.001
print("工作日的努力参数是:{:.3f}".format(dayfactor))

获取星期字符串

#WeekNamePrintV2.py
weekStr = "一二三四五六日"
weekId = eval(input("请输入星期数字(1-7):"))
print("星期" + weekStr[weekId-1])

4.文本进度条

#TextProBarV2.py
import time
scale=50
print("执行开始".center(scale//2,"-"))
# " / "就表示 浮点数除法,返回浮点结果;" // "表示整数除法。
start=time.perf_counter()
for i in range(scale+1):
    a='*'*i         #*个数
    b='.'*(scale-i) #.个数
    c=(i/scale)*100 #百分之几
    dur=time.perf_counter() - start
    print("\r{:^3.0f}%[{}->{}]{:.2f}s".format(c,a,b,dur),end='')
    time.sleep(0.1)
print("\n"+"执行结束".center(scale//2,"-"))

5.身体质量指数BMI

BMI:Body Mass Index

BMI = 体重 (kg) / 身高2 (m2)

#CalBMIv3.py
height,weight = eval(input("请输入身高(米)和体重\(公斤)[逗号隔开]:"))
bmi = weight/pow(height,2)
print("BMI数值为:{:.2f}".format(bmi))
who,nat="",""
if bmi<18.5:
    who,nat="偏瘦","偏瘦"
elif 18.5<=bmi<24:
    who,nat="正常","正常"
elif 24<=bmi<25:
    who,nat="正常","偏胖"
elif 25<=bmi<28:
    who,nat="偏胖","偏胖"
elif 28<=bmi<30:
    who,nat="偏胖","肥胖"
else:
    who,nat="肥胖","肥胖"
print("BMI指标为:国际'{0}',国内'{1}'".format(who,nat))

6.圆周率的计算(蒙特卡罗方法)

#CalPiV2.py
from random import random
from time import perf_counter
DARTS=1000*1000
hits=0.0
start=perf_counter()
for i in range(1,DARTS+1):
    x,y=random(),random()
    dist=pow(x**2+y**2,0.5)
    if dist<=1.0:
        hits=hits+1
pi=4*(hits/DARTS)
end=perf_counter()
time=end - start
print("圆周率值是:{}".format(pi))
print("运行时间是:{:.5f}s".format(time))

7.小心脏和七段数码管的绘制

#HeartDraw.py
#填充
import turtle

turtle.speed(5)

turtle.setup(1440,900,200,200)
turtle.pensize(16)
turtle.color('red','red')

# color('red','blue')
# 颜色(‘画笔色’,‘填充色’)

turtle.begin_fill()

turtle.penup()
turtle.seth(90)
turtle.fd(300)
turtle.pendown()
turtle.seth(-90)

turtle.seth(45)
turtle.circle(-200,180)
turtle.fd(400)
turtle.right(90)
turtle.fd(400)
turtle.circle(-200,180)

turtle.end_fill()

turtle.done()
#七段数码管绘制V2.py
#年月日
import turtle,time

def drawGap():      #绘制数码管间隔
    turtle.penup()
    turtle.fd(5)

def drawLine(draw): #绘制单段数码管

    drawGap()

    turtle.pendown() if draw else turtle.penup()
    turtle.fd(40)

    drawGap()

    turtle.right(90)
def drawDigit(digit):#根据数字绘制七段数码管
    drawLine(True) if digit in [2,3,4,5,6,8,9] else drawLine(False)
    drawLine(True) if digit in [0,1,3,4,5,6,7,8,9] else drawLine(False)
    drawLine(True) if digit in [0,2,3,5,6,8,9] else drawLine(False)
    drawLine(True) if digit in [0,2,6,8] else drawLine(False)
    turtle.left(90)
    drawLine(True) if digit in [0,4,5,6,8,9] else drawLine(False)
    drawLine(True) if digit in [0,2,3,5,6,7,8,9] else drawLine(False)
    drawLine(True) if digit in [0,1,2,3,4,7,8,9] else drawLine(False)
    turtle.left(180)
    turtle.penup()
    turtle.fd(20)

def drawDate(date): #data为日期,格式为'%Y-%m=%d+'
    turtle.pencolor("red")
    for i in date:
        if i == '-':
            turtle.write('年',font=("Arial",18,"normal"))
            turtle.pencolor("green")
            turtle.fd(40)
        elif i == '=':
            turtle.write('月',font=("Arial",18,"normal"))
            turtle.pencolor("blue")
            turtle.fd(40)
        elif i == '+':
            turtle.write('日',font=("Arial",18,"normal"))
        else:
            drawDigit(eval(i))
def main():
    turtle.speed(10)
    turtle.penup()
    turtle.fd(-350)
    turtle.pensize(5)
    drawDate(time.strftime('%Y-%m=%d+',time.gmtime()))
    turtle.hideturtle()
    turtle.done()

main()
#七段数码管绘制+心脏V3.py
#优化为北京时间而非UTC时间
#心脏非填充
#年月日时分秒

import turtle,time
from datetime import datetime, timedelta

def drawGap():      #绘制数码管间隔
    turtle.penup()
    turtle.fd(5)

def drawLine(draw): #绘制单段数码管

    drawGap()

    turtle.pendown() if draw else turtle.penup()
    turtle.fd(30)

    drawGap()

    turtle.right(90)
def drawDigit(digit):#根据数字绘制七段数码管
    drawLine(True) if digit in [2,3,4,5,6,8,9] else drawLine(False)
    drawLine(True) if digit in [0,1,3,4,5,6,7,8,9] else drawLine(False)
    drawLine(True) if digit in [0,2,3,5,6,8,9] else drawLine(False)
    drawLine(True) if digit in [0,2,6,8] else drawLine(False)
    turtle.left(90)
    drawLine(True) if digit in [0,4,5,6,8,9] else drawLine(False)
    drawLine(True) if digit in [0,2,3,5,6,7,8,9] else drawLine(False)
    drawLine(True) if digit in [0,1,2,3,4,7,8,9] else drawLine(False)
    turtle.left(180)
    turtle.penup()
    turtle.fd(20)

def drawDate(date): #data为日期,格式为'%Y-%m=%d+'
    turtle.pencolor("red")
    for i in date:
        if i == '-':
            turtle.write('年',font=("Arial",18,"normal"))
            turtle.pencolor("green")
            turtle.fd(40)
        elif i == '=':
            turtle.write('月',font=("Arial",18,"normal"))
            turtle.pencolor("blue")
            turtle.fd(40)
        elif i == '+':
            turtle.write('日',font=("Arial",18,"normal"))
        else:
            drawDigit(eval(i))

def drawTime(time):#time为时间,格式为'%H-%M=%S+'
    turtle.pencolor("purple")
    for i in time:
        if i == '-':
            turtle.write('时',font=("Arial",18,"normal"))
            turtle.pencolor("purple")
            turtle.fd(40)
        elif i == '=':
            turtle.write('分',font=("Arial",18,"normal"))
            turtle.fd(40)
        elif i == '+':
            turtle.write('秒',font=("Arial",18,"normal"))
        else:
            drawDigit(eval(i))

#HeartDraw.py
def HeartDraw():

    turtle.setup(1440,900,200,200)
    turtle.pensize(16)
    turtle.color('red','red')

    # color('red','blue')
    # 颜色(‘画笔色’,‘填充色’)

    turtle.penup()
    turtle.seth(90)
    turtle.fd(300)
    turtle.pendown()
    turtle.seth(-90)

    turtle.seth(45)
    turtle.circle(-200,180)
    turtle.fd(400)
    turtle.right(90)
    turtle.fd(400)
    turtle.circle(-200,180)
def main():
    turtle.speed(5)
    HeartDraw()
    turtle.speed(0.1)
    turtle.left(45)
    turtle.right(90)
    turtle.up()
    turtle.fd(200)
    turtle.down()
    turtle.left(90)
    turtle.penup()
    turtle.fd(-270)
    turtle.pensize(5)
    drawDate(time.strftime('%Y-%m=%d+',time.gmtime()))

    turtle.penup()
    turtle.seth(-90)
    turtle.fd(100)
    turtle.seth(-180)
    turtle.fd(500)
    turtle.seth(0)
    turtle.down()


    now_time = datetime.now()
    utc_time = now_time - timedelta(hours=8)              # UTC只是比北京时间提前了8个小时
    utc_time = utc_time.strftime("%H-%M-%S+")
    now_time = now_time.strftime("%H-%M-%S+")
    drawTime(now_time)

    turtle.hideturtle()
    turtle.done()

main()

实例8: 科赫雪花小包裹

#科赫曲线.py
import turtle as t
def koch(size,n):
    if n==0:
        t.fd(size)
    else:
        for angle in [0, 60, -120, 60]:
            t.left(angle)
            koch(size/3,n-1)
def main():
    t.setup(800,400)
    t.penup()
    t.goto(-300,-50)
    t.pendown()
    t.pensize(2)
    koch(600,3)
    t.hideturtle() #3阶科赫曲线,阶数
main()
#多阶科赫.py
#KochDrawV1.py
import turtle as t
def koch(size,n):
    if n==0:
        t.fd(size)
    else:
        for angle in [0,60,-120,60]:
            t.left(angle)
            koch(size/3,n-1)
def main():
    t.delay(0)
    t.setup(800,400)
    t.penup()
    t.goto(-200,100)
    t.pendown()
    t.pensize(2)
    level=3
    koch(400,level) #3阶科赫曲线,阶数
    t.right(120)
    koch(400,level)
    t.right(120)
    koch(400,level)
    t.hideturtle()
    t.done()
main()

实例9: 基本统计值计算

#基本统计值计算CalStatisticsV1.py
def getNum():
    nums=[]
    iNumStr=input("请输入数字(回车退出):")
    while iNumStr !="":
        nums.append(eval(iNumStr))
        iNumStr=input("请输入数字(回车退出):")
    return nums
#计算平均值
def mean(numbers):
    s=0.0
    for num in numbers:
        s=s+num
    return s/len(numbers)
#计算方差
def dev(numbers,mean):
    sdev=0.0
    for num in numbers:
        sdev=sdev+(num-mean)**2
    return pow(sdev/(len(numbers)-1),0.5)
#计算中位数
def median(numbers):
    sorted(numbers)
    size=len(numbers)
    if size%2==0:
        med=(numbers[size//2-1]+numbers[size//2]/2)
    else:
        med=numbers[size//2]
    return med
n=getNum()
m=mean(n)
print("平均值:{},方差:{:.2},中位数:{}.".format(m,dev(n,m),median(n)))

实例10: 文本词频统计

哈姆雷特

#CallHamletV1.py 
def getText():
    #打开文本文件
    txt=open("hamlet.txt","r").read()
    #文本全小写
    txt=txt.lower()
    #文本去噪及归一化(把符号之类的化成空格)
    for ch in '!"#$%&()*+,-./:;<=>?@[\\]^_{|}·~‘’':
        txt=txt.replace(ch," ")
    return txt

#启动!
hamletTxt=getText()

#单词切片,变成列表
words=hamletTxt.split()

#定义空字典counts(有“键”有“值”)
counts={}

#通过这样2行的代码,逐一的遍历列表中的每一个元素,
#并用字典类型去记录每一个元素出现的次数。

for word in words:
    #在字典的“键”挨个写上字典的每一个词,然后在对应的“值”上写上次数。
    counts[word]=counts.get(word,0)+1
#将字典类型转变为列表类型便于操作
'''
字典(Dictionary) items() 函数以列表返回可遍历的(键, 值) 元组数组,
可以用于 for 来循环遍历。用法:dict.items()
'''
items=list(counts.items())

#用来指定列表中使用哪一个多元选项的列作为排序列,
#下列代码是指定键值对的第二个元素排序
#而默认的排序方法是从小到大,reverse设为True,那么返回的排序就是从大到小
items.sort(key=lambda x:x[1],reverse=True)
#至此,items中的第1个元素,就是出现单词次数最多的元素

#将其中的前10个出现最多的单词以及它对应的次数打印出来
for i in range(10):
    word,count=items[i]
    print("{0:<10}{1:>5}".format(word,count))

三国演义

#CalThreeKingdomsV1.py
import jieba
txt=open("threekingdoms.txt","r",encoding="utf-8").read()
excludes={"将军","却说","荆州","二人","不可","不能","如此","商议","如何","主公","左右","军马","引兵"}
words=jieba.lcut(txt)

counts={}
for word in words:
    if len(word)==1:
        continue
    elif word =="诸葛亮"or word =="孔明曰":
        rword="孔明"
    elif word =="关公"or word =="云长":
        rword="关羽"   
    elif word =="玄德"or word =="玄德曰":
        rword="刘备"
    elif word =="曹操"or word =="丞相":
        rword="曹操"
    else:
        rword=word
    counts[rword]=counts.get(rword,0)+1
for word in excludes:
    del counts[word]
items=list(counts.items())  
items.sort(key=lambda x:x[1],reverse=True)
for i in range(10):
    word,count=items[i]
    print("{0:<10}{1:>5}".format(word,count))


'''

def getText():

    #打开文本文件
    txt=open("hamlet.txt","r").read()
    #文本全小写
    txt=txt.lower()
    #文本去噪及归一化(把符号之类的化成空格)
    for ch in '!"#$%&()*+,-./:;<=>?@[\\]^_{|}·~‘’':
        txt=txt.replace(ch," ")
    return txt

#启动!
hamletTxt=getText()

#单词切片,变成列表
words=hamletTxt.split()

#定义空字典counts(有“键”有“值”)
counts={}

#通过这样2行的代码,逐一的遍历列表中的每一个元素,
#并用字典类型去记录每一个元素出现的次数。

for word in words:
    #在字典的“键”挨个写上字典的每一个词,然后在对应的“值”上写上次数。
    counts[word]=counts.get(word,0)+1
#将字典类型转变为列表类型便于操作
'''
'''
字典(Dictionary) items() 函数以列表返回可遍历的(键, 值) 元组数组,
可以用于 for 来循环遍历。用法:dict.items()
'''
'''
items=list(counts.items())

#用来指定列表中使用哪一个多元选项的列作为排序列,
#下列代码是指定键值对的第二个元素排序
#而默认的排序方法是从小到大,reverse设为True,那么返回的排序就是从大到小
items.sort(key=lambda x:x[1],reverse=True)
#至此,items中的第1个元素,就是出现单词次数最多的元素

#将其中的前10个出现最多的单词以及它对应的次数打印出来
for i in range(10):
    word,count=items[i]
    print("{0:<10}{1:>5}".format(word,count))

'''

实例11: 自动轨迹绘制

#AutoTraceDraw.py
import turtle as t
t.title('自动轨迹绘制')
t.setup(800, 600, 0, 0)
t.pencolor("red")
t.pensize(5)
#数据读取
datals = []
f = open("data.txt")
for line in f:
    line = line.replace("\n","")
    datals.append(list(map(eval, line.split(","))))
f.close()
#自动绘制
for i in range(len(datals)):
    t.pencolor(datals[i][3],datals[i][4],datals[i][5])
    t.fd(datals[i][0])
    if datals[i][1]:
        t.right(datals[i][2])
    else:
        t.left(datals[i][2])

数据文件:

300,0,144,1,0,0
300,0,144,0,1,0
300,0,144,0,0,1
300,0,144,1,1,0
300,0,108,0,1,1
184,0,72,1,0,1
184,0,72,0,0,0
184,1,720,0,0,0
184,0,72,0,0,0
184,0,72,0,0,0
184,1,72,1,0,1
184,1,72,0,0,0
184,1,72,0,0,0
184,1,72,0,0,0
184,1,72,0,0,0

实例12: 政府工作报告词云

#GovRptWordCloudv1.py
import jieba
import wordcloud
f = open("新时代中国特色社会主义.txt", "r", encoding="utf-8")
t = f.read()
f.close()
ls = jieba.lcut(t)
txt = " ".join(ls)
w = wordcloud.WordCloud( font_path = "msyh.ttc",\
    width = 1000, height = 700, background_color = "white", \
)
w.generate(txt)
w.to_file("grwordcloud.png")
#GovRptWordCloudv2.py
import jieba
import wordcloud
from imageio import imread
mask = imread("bitlogo.png")
f = open("新时代中国特色社会主义.txt", "r", encoding="utf-8")
t = f.read()
f.close()
ls = jieba.lcut(t)
txt = " ".join(ls)
w = wordcloud.WordCloud( font_path = "msyh.ttc", mask = mask\
    width = 1000, height = 700, background_color = "white", \
    )
w.generate(txt)
w.to_file("grwordcloud.png")

实例13: 体育竞技分析

# MatchAnalysis.py
'''
步骤1:打印程序的介绍性信息                   printInof()
步骤2:获得程序运行参数:proA, proB, n        getInputs()
步骤3:利用球员A和B的能力值,模拟n局比赛        simNGames()
步骤4:输出球员A和B获胜比赛的场次及概率        printSummary()
'''

from random import random


def main():
    printInof()
    probA, probB, n = getInputs()
    winsA, winsB = simNGames(n, probA, probB)
    printSummary(winsA, winsB)

# description of this code


def printInof():
    print("这个程序模拟两个选手A和B的某种竞技比赛")
    print("程序运行需要A和B的能力值(以0到1之间1的小数表示)")

# input


def getInputs():
    a = eval(input("请输入选手A的能力值(0-1): "))
    b = eval(input("请输入选手B的能力值(0-1): "))
    n = eval(input("模拟比赛的场次: "))
    return a, b, n

# output


def printSummary(winsA, winsB):
    n = winsA + winsB
    print("竞技分析开始,共模拟{}场比赛".format(n))
    print("选手A获胜{}场比赛,占比{:0.1%}".format(winsA, winsA/n))
    print("选手B获胜{}场比赛,占比{:0.1%}".format(winsB, winsB/n))

# N games


def simNGames(n, probA, probB):
    winsA, winsB = 0, 0
    for i in range(n):
        scoreA, scoreB = simOneGame(probA, probB)
        if scoreA > scoreB:
            winsA += 1
        else:
            winsB += 1
    return winsA, winsB

# One game


def simOneGame(probA, probB):
    scoreA, scoreB = 0, 0
    serving = "A"
    # judge if it's gameOver
    while not gameOver(scoreA, scoreB):
        if serving == "A":
            if random() < probA:
                scoreA += 1
            else:
                serving = "B"
        else:
            if random() < probB:
                scoreB += 1
            else:
                serving = "A"
    return scoreA, scoreB

# gameOver


def gameOver(a, b):
    return a == 15 or b == 15


main()

实例14: 第三方库安装脚本

# BatchInstall.py
import os
libs = {"numpy", "matplotlib", "pillow", "sklearn", "requests",
        "jieba", "beautifulsoup4", "wheel", "networkx", "sympy",
        "pyinstaller", "django", "flask", "werobot", "pyqt5",
        "pandas", "pyopengl", "pypdf2", "docopt", "pygame"}
try:
    for lib in libs:
        os.system("pip install " + lib)
    print("Successful")
except:
    print("Failed Somehow")

实例15: 霍兰德人格分析雷达图

(The below codes probably had an unexpected error.)

# HollandRadarDraw.py
import numpy as np
import matplotlib.pyplot as plt
import matplotlib
matplotlib.rcParams['font.family'] = 'SimHei'
radar_labels = np.array(['研究型(I)', '艺术型(A)', '社会型(S)',
                         '企业型(E)', '常规型(C)', '现实型(R)'])
data = np.array([[0.40, 0.32, 0.35, 0.30, 0.30, 0.88],
                 [0.85, 0.35, 0.30, 0.40, 0.40, 0.30],
                 [0.43, 0.89, 0.30, 0.28, 0.22, 0.30],
                 [0.30, 0.25, 0.48, 0.85, 0.45, 0.40],
                 [0.20, 0.38, 0.87, 0.45, 0.32, 0.28],
                 [0.34, 0.31, 0.38, 0.40, 0.92, 0.28]])  # 数据值
data_labels = ('艺术家', '实验员', '工程师', '推销员', '社会工作者', '记事员')
angles = np.linspace(0, 2*np.pi, 6, endpoint=False)
data = np.concatenate((data, [data[0]]))
angles = np.concatenate((angles, [angles[0]]))
fig = plt.figure(facecolor="white")
plt.subplot(111, polar=True)
plt.plot(angles, data, 'o-', linewidth=1, alpha=0.2)
plt.fill(angles, data, alpha=0.25)
plt.thetagrids(angles*180/np.pi, radar_labels, frac=1.2)
plt.figtext(0.52, 0.95, '霍兰德人格分析', ha='center', size=20)
legend = plt.legend(data_labels, loc=(0.94, 0.80), labelspacing=0.1)
plt.setp(legend.get_texts(), fontsize='large')
plt.grid(True)
plt.savefig('holland_radar.jpg')
plt.show()

实例16: 玫瑰花绘制

# RoseDraw.py
import turtle as t
# 定义一个曲线绘制函数


def DegreeCurve(n, r, d=1):
    for i in range(n):
        t.left(d)
        t.circle(r, abs(d))


# 初始位置设定
s = 0.2  # size
t.setup(450*5*s, 750*5*s)
t.pencolor("black")
t.fillcolor("red")
t.speed(100)
t.penup()
t.goto(0, 900*s)
t.pendown()
# 绘制花朵形状
t.begin_fill()
t.circle(200*s, 30)
DegreeCurve(60, 50*s)
t.circle(200*s, 30)
DegreeCurve(4, 100*s)
t.circle(200*s, 50)
DegreeCurve(50, 50*s)
t.circle(350*s, 65)
DegreeCurve(40, 70*s)
t.circle(150*s, 50)
DegreeCurve(20, 50*s, -1)
t.circle(400*s, 60)
DegreeCurve(18, 50*s)
t.fd(250*s)
t.right(150)
t.circle(-500*s, 12)
t.left(140)
t.circle(550*s, 110)
t.left(27)
t.circle(650*s, 100)
t.left(130)
t.circle(-300*s, 20)
t.right(123)
t.circle(220*s, 57)
t.end_fill()
# 绘制花枝形状
t.left(120)
t.fd(280*s)
t.left(115)
t.circle(300*s, 33)
t.left(180)
t.circle(-300*s, 33)
DegreeCurve(70, 225*s, -1)
t.circle(350*s, 104)
t.left(90)
t.circle(200*s, 105)
t.circle(-500*s, 63)
t.penup()
t.goto(170*s, -30*s)
t.pendown()
t.left(160)
DegreeCurve(20, 2500*s)
DegreeCurve(220, 250*s, -1)
# 绘制一个绿色叶子
t.fillcolor('green')
t.penup()
t.goto(670*s, -180*s)
t.pendown()
t.right(140)
t.begin_fill()
t.circle(300*s, 120)
t.left(60)
t.circle(300*s, 120)
t.end_fill()
t.penup()
t.goto(180*s, -550*s)
t.pendown()
t.right(85)
t.circle(600*s, 40)
# 绘制另一个绿色叶子
t.penup()
t.goto(-150*s, -1000*s)
t.pendown()
t.begin_fill()
t.rt(120)
t.circle(300*s, 115)
t.left(75)
t.circle(300*s, 100)
t.end_fill()
t.penup()
t.goto(430*s, -1070*s)
t.pendown()
t.right(30)
t.circle(-600*s, 35)
t.done()