Python-5个有趣的小程序【每一个都附完整源码】

小程序 0

一:樱花树

运行效果:
在这里插入图片描述

完整代码如下:

import turtleimport randomfrom turtle import *from time import sleep# 画樱花的躯干(60,t)def tree(branchLen,t):    sleep(0.0005)    if branchLen >3:        if 8<= branchLen <=12:            if random.randint(0,2) == 0:                t.color('snow') # 白            else:                t.color('lightcoral') # 淡珊瑚色            t.pensize(branchLen / 3)        elif branchLen <8:            if random.randint(0,1) == 0:                t.color('snow')            else:                t.color('lightcoral') # 淡珊瑚色            t.pensize(branchLen / 2)        else:            t.color('sienna') # 赭(zhě)色            t.pensize(branchLen / 10) # 6        t.forward(branchLen)        a = 1.5 * random.random()        t.right(20*a)        b = 1.5 * random.random()        tree(branchLen-10*b, t)        t.left(40*a)        tree(branchLen-10*b, t)        t.right(20*a)        t.up()        t.backward(branchLen)        t.down() # 掉落的花瓣def petal(m, t):    for i in range(m):        a = 200 - 400 * random.random()        b = 10 - 20 * random.random()        t.up()        t.forward(b)        t.left(90)        t.forward(a)        t.down()        t.color('lightcoral') # 淡珊瑚色        t.circle(1)        t.up()        t.backward(a)        t.right(90)        t.backward(b) def main():    # 绘图区域    t = turtle.Turtle()    # 画布大小    w = turtle.Screen()    t.hideturtle() # 隐藏画笔    getscreen().tracer(1,0)    w.screensize(bg='wheat')    t.left(90)    t.up()    t.backward(150)    t.down()    t.color('sienna')     # 画樱花的躯干    tree(60,t)        # 掉落的花瓣    petal(200, t)    w.exitonclick() main()

二:呆萌小鸭子

运行效果:
在这里插入图片描述

完整代码如下:

from turtle import * #扁嘴pensize(2) pu()goto(-100,100)#上嘴最高顶点seth(-50)pd()color('#6C3100','#FADD77')begin_fill()fd(16)vertex_right = pos()#嘴最右顶点rt(50)fd(12)vertex_down = pos()#下嘴最低顶点rt(80)fd(30)circle(-3,200)vertex_left = pos()#嘴最左顶点goto(-100,100)end_fill()goto(vertex_left)#回到最左顶点circle(-3,-200)#扁嘴goto(vertex_right)    #身体#头颈背尾曲线color('#B6A88E')pu()goto(-100,100)pd() seth(80)circle(-36,160)fd(25)circle(115,20)circle(60,55)circle(-200,20)circle(110,20)color('#7D6A4C')circle(40,40)color('#B6A88E')seth(-100)circle(-180,30)circle(-20,50) #右鸭腿circle(20,70)color('#736856')circle(-12,120)leg_pos1 = pos()#定位左腿位置fd(25) #前胸肚曲线pu()goto(vertex_down)pd()seth(-10)color('#B9AD9D')circle(-40,50)circle(-80,48)color('#736856')circle(250,5)circle(50,75)color('#B9AD9D')circle(220,28) #左鸭腿pu()seth(175)fd(40)pd()seth(-120)fd(8)circle(-10,120)leg_pos2 = pos()#定位右腿位置fd(15) #眼睛color('black')#左眼pu()goto(vertex_down - (1,-29))pd()dot(4,'black')#右眼pu()goto(vertex_down + (23,20))pd()dot(4,'black') #翅膀color('#BCB2A6')pu()goto(vertex_down - (-75,130))seth(130)pd()circle(-25,130)circle(-100,30)fd(85)point = pos()rt(137)fd(52)circle(-100,58) pu()goto(point)lt(30)pd()fd(60) pu()goto(point)pd()lt(10)fd(70)#腿部#左腿def leg(pos0):#鸭腿绘制函数    pensize(8)    color('#ECC578')    pu()    goto(pos0)    seth(0)    fd(7)    seth(-90)    fd(8.5)    pd()    fd(20)#腿长 leg(leg_pos1)leg(leg_pos2) #小红靴——函数def boot(pos0):    pensize(2)    color('#B4070B','#FBA06B')    pu()    goto(pos0)#靴子右上顶点    pd()    begin_fill()    seth(140)    circle(25,80)    seth(-80)    fd(35)     circle(-2,60)#靴低    fd(20)    circle(4,180)        seth(5)    fd(30)    circle(2,60)        goto(pos0)#右侧线条    end_fill()    boot(leg_pos1-(-20,30))boot(leg_pos2-(-20,30))  #小雨滴color('#77DDFF','#D8E8E5')fd_ls = [200,140,250,240,230,220,180,250]lt_ls = [30,60,60,100,125,170,200,330]for i in range(8):    pu()    home()        lt(lt_ls[i])    fd(fd_ls[i])     pd()    seth(-78)    fd(15)    begin_fill()    circle(-3,200)    end_fill()    fd(15) #文字pu()goto(vertex_left)seth(180)fd(150)seth(-90)fd(300)color('black')write('呆萌小鸭子',font=("Arial",15,"normal"))    hideturtle()done()

三:计算器

运行效果:
在这里插入图片描述

完整代码如下:

import tkinter as tkclass Calc(tk.Tk):    """计算器窗体类"""    def __init__(self):        """初始化实例"""        tk.Tk.__init__(self)        self.title("计算器")        self.memory = 0  # 暂存数值        self.create()    def create(self):        """创建界面"""        btn_list = ["C", "M->", "->M", "/",                    "7", "8", "9", "*",                    "4", "5", "6", "-",                    "1", "2", "3", "+",                    "+/-", "0", ".", "="]        r = 1        c = 0        for b in btn_list:            self.button = tk.Button(self, text=b, width=5,                                    command=(lambda x=b: self.click(x)))            self.button.grid(row=r, column=c, padx=3, pady=6)            c += 1            if c > 3:                c = 0                r += 1        self.entry = tk.Entry(self, width=24, borderwidth=2,                              bg="yellow", font=("Consolas", 12))        self.entry.grid(row=0, column=0, columnspan=4, padx=8, pady=6)    def click(self, key):        """响应按钮"""        if key == "=":  # 输出结果            result = eval(self.entry.get())            self.entry.insert(tk.END, " = " + str(result))        elif key == "C":  # 清空输入框            self.entry.delete(0, tk.END)        elif key == "->M":  # 存入数值            self.memory = self.entry.get()            if "=" in self.memory:                ix = self.memory.find("=")                self.memory = self.memory[ix + 2:]            self.title("M=" + self.memory)        elif key == "M->":  # 取出数值            if self.memory:                self.entry.insert(tk.END, self.memory)        elif key == "+/-":  # 正负翻转            if "=" in self.entry.get():                self.entry.delete(0, tk.END)            elif self.entry.get()[0] == "-":                self.entry.delete(0)            else:                self.entry.insert(0, "-")        else:  # 其他键            if "=" in self.entry.get():                self.entry.delete(0, tk.END)            self.entry.insert(tk.END, key)if __name__ == "__main__":    Calc().mainloop()

四:皮卡丘

运行效果:
在这里插入图片描述

完整代码如下:

from turtle import *'''绘制皮卡丘头部'''def face(x,y):    """画脸"""    begin_fill()    penup()    # 将海龟移动到指定的坐标    goto(x, y)    pendown()    # 设置海龟的方向    setheading(40)    circle(-150, 69)    fillcolor("#FBD624")    # 将海龟移动到指定的坐标        penup()    goto(53.14, 113.29)    pendown()    setheading(300)    circle(-150, 30)    setheading(295)    circle(-140, 20)    print(position())    forward(5)    setheading(260)    circle(-80, 70)    print(position())    penup()    goto(-74.43,-79.09)    pendown()    penup()    # 将海龟移动到指定的坐标    goto(-144,103)    pendown()    setheading(242)    circle(110, 35)    right(10)    forward(10)    setheading(250)    circle(80, 115)    print(position())    penup()    goto(-74.43,-79.09)    pendown()    setheading(10)    penup()    goto(-144, 103)    pendown()    penup()    goto(x, y)    pendown()    end_fill()    # 下巴    penup()    goto(-50, -82.09)    pendown()    pencolor("#DDA120")    fillcolor("#DDA120")    begin_fill()    setheading(-12)    circle(120, 25)    setheading(-145)    forward(30)    setheading(180)    circle(-20, 20)    setheading(143)    forward(30)    end_fill()def eye():    """画眼睛"""    # 左眼    color("black","black")    penup()    goto(-110, 27)    pendown()    begin_fill()    setheading(0)    circle(24)    end_fill()    # 左眼仁    color("white", "white")    penup()    goto(-105, 51)    pendown()    begin_fill()    setheading(0)    circle(10)    end_fill()    # 右眼    color("black", "black")    penup()    goto(25, 40)    pendown()    begin_fill()    setheading(0)    circle(24)    end_fill()    # 右眼仁    color("white", "white")    penup()    goto(17, 62)    pendown()    begin_fill()    setheading(0)    circle(10)    end_fill()def cheek():    """画脸颊"""    # 右边    color("#9E4406", "#FE2C21")    penup()    goto(-130, -50)    pendown()    begin_fill()    setheading(0)    circle(27)    end_fill()    # 左边    color("#9E4406", "#FE2C21")    penup()    goto(53, -20)    pendown()    begin_fill()    setheading(0)    circle(27)    end_fill()def nose():    """画鼻子"""    color("black", "black")    penup()    goto(-40, 38)    pendown()    begin_fill()    circle(7,steps = 3)    end_fill()def mouth():    """画嘴"""    color("black", "#F35590")    # 嘴唇    penup()    goto(-10, 22)    pendown()    begin_fill()    setheading(260)    forward(60)    circle(-11, 150)    forward(55)    print(position())    penup()    goto(-38.46, 21.97)    pendown()    end_fill()    # 舌头    color("#6A070D", "#6A070D")    begin_fill()    penup()    goto(-10.00, 22.00)    pendown()    penup()    goto(-14.29, -1.7)    pendown()    penup()    goto(-52, -5)    pendown()    penup()    goto(-60.40, 12.74)    pendown()    penup()    goto(-38.46, 21.97)    pendown()    penup()    goto(-10.00, 22.00)    pendown()    end_fill()    color("black","#FFD624")    penup()    goto(-78, 15)    pendown()    begin_fill()    setheading(-25)    for i in range(2):        setheading(-25)        circle(35, 70)    end_fill()    color("#AB1945", "#AB1945")    penup()    goto(-52, -5)    pendown()    begin_fill()    setheading(40)    circle(-33, 70)    goto(-16,-1.7)    penup()    goto(-18,-17)    pendown()    setheading(155)    circle(25, 70)    end_fill()def ear():    """画耳朵"""    # 左耳    color("black","#FFD624")    penup()    goto(-145, 93)    pendown()    begin_fill()    setheading(165)    circle(-248,50)    right(120)    circle(-248,50)    end_fill()    color("black", "black")    penup()    goto(-240, 143)    pendown()    begin_fill()    setheading(107)    circle(-170, 25)    left(80)    circle(229, 15)    left(120)    circle(300, 15)    end_fill()    # 右耳    color("black", "#FFD624")    penup()    goto(30, 136)    pendown()    begin_fill()    setheading(64)    circle(-248, 50)    right(120)    circle(-248, 50)    end_fill()    color("black", "black")    penup()    goto(160, 200)    pendown()    begin_fill()    setheading(52)    circle(170, 25)    left(116)    circle(229, 15)    left(71)    circle(-300, 15)    end_fill()def setting():    """设置参数"""    pensize(2)    # 隐藏海龟    hideturtle()    speed(10)def main():    """主函数"""    setting()    face(-132,115)    eye()    cheek()    nose()    mouth()    ear()    done()if __name__ == '__main__':    main()

五:表白专用

运行效果:
在这里插入图片描述
在这里插入图片描述

完整代码如下:

import turtleimport time# 清屏函数def clear_all():    turtle.penup()    turtle.goto(0, 0)    turtle.color('white')    turtle.pensize(800)    turtle.pendown()    turtle.setheading(0)    turtle.fd(300)    turtle.bk(600) # 重定位海龟的位置def go_to(x, y, state):    turtle.pendown() if state else turtle.penup()    turtle.goto(x, y)# 画线# state为真时海龟回到原点,为假时不回到原来的出发点def draw_line(length, angle, state):    turtle.pensize(1)    turtle.pendown()    turtle.setheading(angle)    turtle.fd(length)    turtle.bk(length) if state else turtle.penup()    turtle.penup()# 画箭羽def draw_feather(size):    angle = 30                          # 箭的倾角    feather_num = size//6               # 羽毛的数量    feather_length = size // 3          # 羽毛的长度    feather_gap = size//10              # 羽毛的间隔    for i in range(feather_num):        draw_line(feather_gap, angle+180, False)            # 箭柄,不折返        draw_line(feather_length, angle + 145, True)        # 羽翼,要折返    draw_line(feather_length, angle + 145, False)    draw_line(feather_num*feather_gap, angle, False)    draw_line(feather_length, angle + 145 + 180, False)    for i in range(feather_num):        draw_line(feather_gap, angle+180, False)            # 箭柄,不折返        draw_line(feather_length, angle - 145, True)        # 羽翼,要折返    draw_line(feather_length, angle - 145, False)    draw_line(feather_num*feather_gap, angle, False)    draw_line(feather_length, angle - 145 + 180, False) # 画爱心def draw_heart(size):    turtle.color('red', 'pink')    turtle.pensize(2)    turtle.pendown()    turtle.setheading(150)    turtle.begin_fill()    turtle.fd(size)    turtle.circle(size * -3.745, 45)    turtle.circle(size * -1.431, 165)    turtle.left(120)    turtle.circle(size * -1.431, 165)    turtle.circle(size * -3.745, 45)    turtle.fd(size)    turtle.end_fill()# 画箭def draw_arrow(size):    angle = 30    turtle.color('black')    draw_feather(size)    turtle.pensize(4)    turtle.setheading(angle)    turtle.pendown()    turtle.fd(size*2) # 一箭穿心# 箭的头没有画出来,而是用海龟来代替def arrow_heart(x, y, size):    go_to(x, y, False)    draw_heart(size*1.15)    turtle.setheading(-150)    turtle.penup()    turtle.fd(size*2.2)    draw_heart(size)    turtle.penup()    turtle.setheading(150)    turtle.fd(size * 2.2)    draw_arrow(size)# 画出发射爱心的小人def draw_people(x, y):    turtle.penup()    turtle.goto(x, y)    turtle.pendown()    turtle.pensize(2)    turtle.color('black')    turtle.setheading(0)    turtle.circle(60, 360)    turtle.penup()    turtle.setheading(90)    turtle.fd(75)    turtle.setheading(180)    turtle.fd(20)    turtle.pensize(4)    turtle.pendown()    turtle.circle(2, 360)    turtle.setheading(0)    turtle.penup()    turtle.fd(40)    turtle.pensize(4)    turtle.pendown()    turtle.circle(-2, 360)    turtle.penup()    turtle.goto(x, y)    turtle.setheading(-90)    turtle.pendown()    turtle.fd(20)    turtle.setheading(0)    turtle.fd(35)    turtle.setheading(60)    turtle.fd(10)    turtle.penup()    turtle.goto(x, y)    turtle.setheading(-90)    turtle.pendown()    turtle.fd(40)    turtle.setheading(0)    turtle.fd(35)    turtle.setheading(-60)    turtle.fd(10)    turtle.penup()    turtle.goto(x, y)    turtle.setheading(-90)    turtle.pendown()    turtle.fd(60)    turtle.setheading(-135)    turtle.fd(60)    turtle.bk(60)    turtle.setheading(-45)    turtle.fd(30)    turtle.setheading(-135)    turtle.fd(35)    turtle.penup()# 第一个画面,显示文字def page0():    turtle.penup()    turtle.goto(-350, 0)    turtle.color('black')    turtle.write('专属于我们的什么节', font=('宋体', 60, 'normal')) #这里的字大家自己替换    time.sleep(3) # 第二个画面,显示发射爱心的小人def page1():    turtle.speed(10)    draw_people(-250, 20)    turtle.penup()    turtle.goto(-150, -30)    draw_heart(14)    turtle.penup()    turtle.goto(-20, -60)    draw_heart(25)    turtle.penup()    turtle.goto(250, -100)    draw_heart(45)    turtle.hideturtle()    time.sleep(3) # 最后一个画面,一箭穿心def page2():    turtle.speed(1)    turtle.penup()    turtle.goto(-200, -200)    turtle.color('blue')    turtle.pendown()    turtle.write('温轻舟       温轻舟', font=('wisdom', 25, 'normal')) #这里的字大家自己替换    turtle.penup()    turtle.goto(0, -180)    draw_heart(10)    arrow_heart(20, -60, 51)    turtle.showturtle() def main():    turtle.setup(900, 500)    page0()    clear_all()    page1()    clear_all()    page2()    turtle.done()main()

也许您对下面的内容还感兴趣: