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

海哥  金牌会员 | 2024-6-20 14:16:29 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 534|帖子 534|积分 1602

一:樱花树

   运行效果:

    完备代码如下:
  1. import turtle
  2. import random
  3. from turtle import *
  4. from time import sleep
  5. # 画樱花的躯干(60,t)
  6. def tree(branchLen,t):
  7.     sleep(0.0005)
  8.     if branchLen >3:
  9.         if 8<= branchLen <=12:
  10.             if random.randint(0,2) == 0:
  11.                 t.color('snow') # 白
  12.             else:
  13.                 t.color('lightcoral') # 淡珊瑚色
  14.             t.pensize(branchLen / 3)
  15.         elif branchLen <8:
  16.             if random.randint(0,1) == 0:
  17.                 t.color('snow')
  18.             else:
  19.                 t.color('lightcoral') # 淡珊瑚色
  20.             t.pensize(branchLen / 2)
  21.         else:
  22.             t.color('sienna') # 赭(zhě)色
  23.             t.pensize(branchLen / 10) # 6
  24.         t.forward(branchLen)
  25.         a = 1.5 * random.random()
  26.         t.right(20*a)
  27.         b = 1.5 * random.random()
  28.         tree(branchLen-10*b, t)
  29.         t.left(40*a)
  30.         tree(branchLen-10*b, t)
  31.         t.right(20*a)
  32.         t.up()
  33.         t.backward(branchLen)
  34.         t.down()
  35. # 掉落的花瓣
  36. def petal(m, t):
  37.     for i in range(m):
  38.         a = 200 - 400 * random.random()
  39.         b = 10 - 20 * random.random()
  40.         t.up()
  41.         t.forward(b)
  42.         t.left(90)
  43.         t.forward(a)
  44.         t.down()
  45.         t.color('lightcoral') # 淡珊瑚色
  46.         t.circle(1)
  47.         t.up()
  48.         t.backward(a)
  49.         t.right(90)
  50.         t.backward(b)
  51. def main():
  52.     # 绘图区域
  53.     t = turtle.Turtle()
  54.     # 画布大小
  55.     w = turtle.Screen()
  56.     t.hideturtle() # 隐藏画笔
  57.     getscreen().tracer(1,0)
  58.     w.screensize(bg='wheat')
  59.     t.left(90)
  60.     t.up()
  61.     t.backward(150)
  62.     t.down()
  63.     t.color('sienna')
  64.     # 画樱花的躯干
  65.     tree(60,t)
  66.    
  67.     # 掉落的花瓣
  68.     petal(200, t)
  69.     w.exitonclick()
  70. main()
复制代码
二:呆萌小鸭子

   运行效果:

    完备代码如下:
  1. from turtle import *
  2. #扁嘴
  3. pensize(2)
  4. pu()
  5. goto(-100,100)#上嘴最高顶点
  6. seth(-50)
  7. pd()
  8. color('#6C3100','#FADD77')
  9. begin_fill()
  10. fd(16)
  11. vertex_right = pos()#嘴最右顶点
  12. rt(50)
  13. fd(12)
  14. vertex_down = pos()#下嘴最低顶点
  15. rt(80)
  16. fd(30)
  17. circle(-3,200)
  18. vertex_left = pos()#嘴最左顶点
  19. goto(-100,100)
  20. end_fill()
  21. goto(vertex_left)#回到最左顶点
  22. circle(-3,-200)#扁嘴
  23. goto(vertex_right)
  24.    
  25. #身体
  26. #头颈背尾曲线
  27. color('#B6A88E')
  28. pu()
  29. goto(-100,100)
  30. pd()
  31. seth(80)
  32. circle(-36,160)
  33. fd(25)
  34. circle(115,20)
  35. circle(60,55)
  36. circle(-200,20)
  37. circle(110,20)
  38. color('#7D6A4C')
  39. circle(40,40)
  40. color('#B6A88E')
  41. seth(-100)
  42. circle(-180,30)
  43. circle(-20,50)
  44. #右鸭腿
  45. circle(20,70)
  46. color('#736856')
  47. circle(-12,120)
  48. leg_pos1 = pos()#定位左腿位置
  49. fd(25)
  50. #前胸肚曲线
  51. pu()
  52. goto(vertex_down)
  53. pd()
  54. seth(-10)
  55. color('#B9AD9D')
  56. circle(-40,50)
  57. circle(-80,48)
  58. color('#736856')
  59. circle(250,5)
  60. circle(50,75)
  61. color('#B9AD9D')
  62. circle(220,28)
  63. #左鸭腿
  64. pu()
  65. seth(175)
  66. fd(40)
  67. pd()
  68. seth(-120)
  69. fd(8)
  70. circle(-10,120)
  71. leg_pos2 = pos()#定位右腿位置
  72. fd(15)
  73. #眼睛
  74. color('black')
  75. #左眼
  76. pu()
  77. goto(vertex_down - (1,-29))
  78. pd()
  79. dot(4,'black')
  80. #右眼
  81. pu()
  82. goto(vertex_down + (23,20))
  83. pd()
  84. dot(4,'black')
  85. #翅膀
  86. color('#BCB2A6')
  87. pu()
  88. goto(vertex_down - (-75,130))
  89. seth(130)
  90. pd()
  91. circle(-25,130)
  92. circle(-100,30)
  93. fd(85)
  94. point = pos()
  95. rt(137)
  96. fd(52)
  97. circle(-100,58)
  98. pu()
  99. goto(point)
  100. lt(30)
  101. pd()
  102. fd(60)
  103. pu()
  104. goto(point)
  105. pd()
  106. lt(10)
  107. fd(70)
  108. #腿部
  109. #左腿
  110. def leg(pos0):#鸭腿绘制函数
  111.     pensize(8)
  112.     color('#ECC578')
  113.     pu()
  114.     goto(pos0)
  115.     seth(0)
  116.     fd(7)
  117.     seth(-90)
  118.     fd(8.5)
  119.     pd()
  120.     fd(20)#腿长
  121. leg(leg_pos1)
  122. leg(leg_pos2)
  123. #小红靴——函数
  124. def boot(pos0):
  125.     pensize(2)
  126.     color('#B4070B','#FBA06B')
  127.     pu()
  128.     goto(pos0)#靴子右上顶点
  129.     pd()
  130.     begin_fill()
  131.     seth(140)
  132.     circle(25,80)
  133.     seth(-80)
  134.     fd(35)
  135.     circle(-2,60)#靴低
  136.     fd(20)
  137.     circle(4,180)   
  138.     seth(5)
  139.     fd(30)
  140.     circle(2,60)
  141.    
  142.     goto(pos0)#右侧线条
  143.     end_fill()
  144.    
  145. boot(leg_pos1-(-20,30))
  146. boot(leg_pos2-(-20,30))
  147. #小雨滴
  148. color('#77DDFF','#D8E8E5')
  149. fd_ls = [200,140,250,240,230,220,180,250]
  150. lt_ls = [30,60,60,100,125,170,200,330]
  151. for i in range(8):
  152.     pu()
  153.     home()   
  154.     lt(lt_ls[i])
  155.     fd(fd_ls[i])
  156.     pd()
  157.     seth(-78)
  158.     fd(15)
  159.     begin_fill()
  160.     circle(-3,200)
  161.     end_fill()
  162.     fd(15)
  163. #文字
  164. pu()
  165. goto(vertex_left)
  166. seth(180)
  167. fd(150)
  168. seth(-90)
  169. fd(300)
  170. color('black')
  171. write('呆萌小鸭子',font=("Arial",15,"normal"))
  172.    
  173. hideturtle()
  174. done()
复制代码
三:计算器

   运行效果:

    完备代码如下:
  1. import tkinter as tk
  2. class Calc(tk.Tk):
  3.     """计算器窗体类"""
  4.     def __init__(self):
  5.         """初始化实例"""
  6.         tk.Tk.__init__(self)
  7.         self.title("计算器")
  8.         self.memory = 0  # 暂存数值
  9.         self.create()
  10.     def create(self):
  11.         """创建界面"""
  12.         btn_list = ["C", "M->", "->M", "/",
  13.                     "7", "8", "9", "*",
  14.                     "4", "5", "6", "-",
  15.                     "1", "2", "3", "+",
  16.                     "+/-", "0", ".", "="]
  17.         r = 1
  18.         c = 0
  19.         for b in btn_list:
  20.             self.button = tk.Button(self, text=b, width=5,
  21.                                     command=(lambda x=b: self.click(x)))
  22.             self.button.grid(row=r, column=c, padx=3, pady=6)
  23.             c += 1
  24.             if c > 3:
  25.                 c = 0
  26.                 r += 1
  27.         self.entry = tk.Entry(self, width=24, borderwidth=2,
  28.                               bg="yellow", font=("Consolas", 12))
  29.         self.entry.grid(row=0, column=0, columnspan=4, padx=8, pady=6)
  30.     def click(self, key):
  31.         """响应按钮"""
  32.         if key == "=":  # 输出结果
  33.             result = eval(self.entry.get())
  34.             self.entry.insert(tk.END, " = " + str(result))
  35.         elif key == "C":  # 清空输入框
  36.             self.entry.delete(0, tk.END)
  37.         elif key == "->M":  # 存入数值
  38.             self.memory = self.entry.get()
  39.             if "=" in self.memory:
  40.                 ix = self.memory.find("=")
  41.                 self.memory = self.memory[ix + 2:]
  42.             self.title("M=" + self.memory)
  43.         elif key == "M->":  # 取出数值
  44.             if self.memory:
  45.                 self.entry.insert(tk.END, self.memory)
  46.         elif key == "+/-":  # 正负翻转
  47.             if "=" in self.entry.get():
  48.                 self.entry.delete(0, tk.END)
  49.             elif self.entry.get()[0] == "-":
  50.                 self.entry.delete(0)
  51.             else:
  52.                 self.entry.insert(0, "-")
  53.         else:  # 其他键
  54.             if "=" in self.entry.get():
  55.                 self.entry.delete(0, tk.END)
  56.             self.entry.insert(tk.END, key)
  57. if __name__ == "__main__":
  58.     Calc().mainloop()
复制代码
四:皮卡丘

   运行效果:

    完备代码如下:
  1. from turtle import *
  2. '''
  3. 绘制皮卡丘头部
  4. '''
  5. def face(x,y):
  6.     """画脸"""
  7.     begin_fill()
  8.     penup()
  9.     # 将海龟移动到指定的坐标
  10.     goto(x, y)
  11.     pendown()
  12.     # 设置海龟的方向
  13.     setheading(40)
  14.     circle(-150, 69)
  15.     fillcolor("#FBD624")
  16.     # 将海龟移动到指定的坐标
  17.    
  18.     penup()
  19.     goto(53.14, 113.29)
  20.     pendown()
  21.     setheading(300)
  22.     circle(-150, 30)
  23.     setheading(295)
  24.     circle(-140, 20)
  25.     print(position())
  26.     forward(5)
  27.     setheading(260)
  28.     circle(-80, 70)
  29.     print(position())
  30.     penup()
  31.     goto(-74.43,-79.09)
  32.     pendown()
  33.     penup()
  34.     # 将海龟移动到指定的坐标
  35.     goto(-144,103)
  36.     pendown()
  37.     setheading(242)
  38.     circle(110, 35)
  39.     right(10)
  40.     forward(10)
  41.     setheading(250)
  42.     circle(80, 115)
  43.     print(position())
  44.     penup()
  45.     goto(-74.43,-79.09)
  46.     pendown()
  47.     setheading(10)
  48.     penup()
  49.     goto(-144, 103)
  50.     pendown()
  51.     penup()
  52.     goto(x, y)
  53.     pendown()
  54.     end_fill()
  55.     # 下巴
  56.     penup()
  57.     goto(-50, -82.09)
  58.     pendown()
  59.     pencolor("#DDA120")
  60.     fillcolor("#DDA120")
  61.     begin_fill()
  62.     setheading(-12)
  63.     circle(120, 25)
  64.     setheading(-145)
  65.     forward(30)
  66.     setheading(180)
  67.     circle(-20, 20)
  68.     setheading(143)
  69.     forward(30)
  70.     end_fill()
  71. def eye():
  72.     """画眼睛"""
  73.     # 左眼
  74.     color("black","black")
  75.     penup()
  76.     goto(-110, 27)
  77.     pendown()
  78.     begin_fill()
  79.     setheading(0)
  80.     circle(24)
  81.     end_fill()
  82.     # 左眼仁
  83.     color("white", "white")
  84.     penup()
  85.     goto(-105, 51)
  86.     pendown()
  87.     begin_fill()
  88.     setheading(0)
  89.     circle(10)
  90.     end_fill()
  91.     # 右眼
  92.     color("black", "black")
  93.     penup()
  94.     goto(25, 40)
  95.     pendown()
  96.     begin_fill()
  97.     setheading(0)
  98.     circle(24)
  99.     end_fill()
  100.     # 右眼仁
  101.     color("white", "white")
  102.     penup()
  103.     goto(17, 62)
  104.     pendown()
  105.     begin_fill()
  106.     setheading(0)
  107.     circle(10)
  108.     end_fill()
  109. def cheek():
  110.     """画脸颊"""
  111.     # 右边
  112.     color("#9E4406", "#FE2C21")
  113.     penup()
  114.     goto(-130, -50)
  115.     pendown()
  116.     begin_fill()
  117.     setheading(0)
  118.     circle(27)
  119.     end_fill()
  120.     # 左边
  121.     color("#9E4406", "#FE2C21")
  122.     penup()
  123.     goto(53, -20)
  124.     pendown()
  125.     begin_fill()
  126.     setheading(0)
  127.     circle(27)
  128.     end_fill()
  129. def nose():
  130.     """画鼻子"""
  131.     color("black", "black")
  132.     penup()
  133.     goto(-40, 38)
  134.     pendown()
  135.     begin_fill()
  136.     circle(7,steps = 3)
  137.     end_fill()
  138. def mouth():
  139.     """画嘴"""
  140.     color("black", "#F35590")
  141.     # 嘴唇
  142.     penup()
  143.     goto(-10, 22)
  144.     pendown()
  145.     begin_fill()
  146.     setheading(260)
  147.     forward(60)
  148.     circle(-11, 150)
  149.     forward(55)
  150.     print(position())
  151.     penup()
  152.     goto(-38.46, 21.97)
  153.     pendown()
  154.     end_fill()
  155.     # 舌头
  156.     color("#6A070D", "#6A070D")
  157.     begin_fill()
  158.     penup()
  159.     goto(-10.00, 22.00)
  160.     pendown()
  161.     penup()
  162.     goto(-14.29, -1.7)
  163.     pendown()
  164.     penup()
  165.     goto(-52, -5)
  166.     pendown()
  167.     penup()
  168.     goto(-60.40, 12.74)
  169.     pendown()
  170.     penup()
  171.     goto(-38.46, 21.97)
  172.     pendown()
  173.     penup()
  174.     goto(-10.00, 22.00)
  175.     pendown()
  176.     end_fill()
  177.     color("black","#FFD624")
  178.     penup()
  179.     goto(-78, 15)
  180.     pendown()
  181.     begin_fill()
  182.     setheading(-25)
  183.     for i in range(2):
  184.         setheading(-25)
  185.         circle(35, 70)
  186.     end_fill()
  187.     color("#AB1945", "#AB1945")
  188.     penup()
  189.     goto(-52, -5)
  190.     pendown()
  191.     begin_fill()
  192.     setheading(40)
  193.     circle(-33, 70)
  194.     goto(-16,-1.7)
  195.     penup()
  196.     goto(-18,-17)
  197.     pendown()
  198.     setheading(155)
  199.     circle(25, 70)
  200.     end_fill()
  201. def ear():
  202.     """画耳朵"""
  203.     # 左耳
  204.     color("black","#FFD624")
  205.     penup()
  206.     goto(-145, 93)
  207.     pendown()
  208.     begin_fill()
  209.     setheading(165)
  210.     circle(-248,50)
  211.     right(120)
  212.     circle(-248,50)
  213.     end_fill()
  214.     color("black", "black")
  215.     penup()
  216.     goto(-240, 143)
  217.     pendown()
  218.     begin_fill()
  219.     setheading(107)
  220.     circle(-170, 25)
  221.     left(80)
  222.     circle(229, 15)
  223.     left(120)
  224.     circle(300, 15)
  225.     end_fill()
  226.     # 右耳
  227.     color("black", "#FFD624")
  228.     penup()
  229.     goto(30, 136)
  230.     pendown()
  231.     begin_fill()
  232.     setheading(64)
  233.     circle(-248, 50)
  234.     right(120)
  235.     circle(-248, 50)
  236.     end_fill()
  237.     color("black", "black")
  238.     penup()
  239.     goto(160, 200)
  240.     pendown()
  241.     begin_fill()
  242.     setheading(52)
  243.     circle(170, 25)
  244.     left(116)
  245.     circle(229, 15)
  246.     left(71)
  247.     circle(-300, 15)
  248.     end_fill()
  249. def setting():
  250.     """设置参数"""
  251.     pensize(2)
  252.     # 隐藏海龟
  253.     hideturtle()
  254.     speed(10)
  255. def main():
  256.     """主函数"""
  257.     setting()
  258.     face(-132,115)
  259.     eye()
  260.     cheek()
  261.     nose()
  262.     mouth()
  263.     ear()
  264.     done()
  265. if __name__ == '__main__':
  266.     main()
复制代码
五:表明专用

   运行效果:


    完备代码如下:
  1. import turtle
  2. import time
  3. # 清屏函数
  4. def clear_all():
  5.     turtle.penup()
  6.     turtle.goto(0, 0)
  7.     turtle.color('white')
  8.     turtle.pensize(800)
  9.     turtle.pendown()
  10.     turtle.setheading(0)
  11.     turtle.fd(300)
  12.     turtle.bk(600)
  13. # 重定位海龟的位置
  14. def go_to(x, y, state):
  15.     turtle.pendown() if state else turtle.penup()
  16.     turtle.goto(x, y)
  17. # 画线
  18. # state为真时海龟回到原点,为假时不回到原来的出发点
  19. def draw_line(length, angle, state):
  20.     turtle.pensize(1)
  21.     turtle.pendown()
  22.     turtle.setheading(angle)
  23.     turtle.fd(length)
  24.     turtle.bk(length) if state else turtle.penup()
  25.     turtle.penup()
  26. # 画箭羽
  27. def draw_feather(size):
  28.     angle = 30                          # 箭的倾角
  29.     feather_num = size//6               # 羽毛的数量
  30.     feather_length = size // 3          # 羽毛的长度
  31.     feather_gap = size//10              # 羽毛的间隔
  32.     for i in range(feather_num):
  33.         draw_line(feather_gap, angle+180, False)            # 箭柄,不折返
  34.         draw_line(feather_length, angle + 145, True)        # 羽翼,要折返
  35.     draw_line(feather_length, angle + 145, False)
  36.     draw_line(feather_num*feather_gap, angle, False)
  37.     draw_line(feather_length, angle + 145 + 180, False)
  38.     for i in range(feather_num):
  39.         draw_line(feather_gap, angle+180, False)            # 箭柄,不折返
  40.         draw_line(feather_length, angle - 145, True)        # 羽翼,要折返
  41.     draw_line(feather_length, angle - 145, False)
  42.     draw_line(feather_num*feather_gap, angle, False)
  43.     draw_line(feather_length, angle - 145 + 180, False)
  44. # 画爱心
  45. def draw_heart(size):
  46.     turtle.color('red', 'pink')
  47.     turtle.pensize(2)
  48.     turtle.pendown()
  49.     turtle.setheading(150)
  50.     turtle.begin_fill()
  51.     turtle.fd(size)
  52.     turtle.circle(size * -3.745, 45)
  53.     turtle.circle(size * -1.431, 165)
  54.     turtle.left(120)
  55.     turtle.circle(size * -1.431, 165)
  56.     turtle.circle(size * -3.745, 45)
  57.     turtle.fd(size)
  58.     turtle.end_fill()
  59. # 画箭
  60. def draw_arrow(size):
  61.     angle = 30
  62.     turtle.color('black')
  63.     draw_feather(size)
  64.     turtle.pensize(4)
  65.     turtle.setheading(angle)
  66.     turtle.pendown()
  67.     turtle.fd(size*2)
  68. # 一箭穿心
  69. # 箭的头没有画出来,而是用海龟来代替
  70. def arrow_heart(x, y, size):
  71.     go_to(x, y, False)
  72.     draw_heart(size*1.15)
  73.     turtle.setheading(-150)
  74.     turtle.penup()
  75.     turtle.fd(size*2.2)
  76.     draw_heart(size)
  77.     turtle.penup()
  78.     turtle.setheading(150)
  79.     turtle.fd(size * 2.2)
  80.     draw_arrow(size)
  81. # 画出发射爱心的小人
  82. def draw_people(x, y):
  83.     turtle.penup()
  84.     turtle.goto(x, y)
  85.     turtle.pendown()
  86.     turtle.pensize(2)
  87.     turtle.color('black')
  88.     turtle.setheading(0)
  89.     turtle.circle(60, 360)
  90.     turtle.penup()
  91.     turtle.setheading(90)
  92.     turtle.fd(75)
  93.     turtle.setheading(180)
  94.     turtle.fd(20)
  95.     turtle.pensize(4)
  96.     turtle.pendown()
  97.     turtle.circle(2, 360)
  98.     turtle.setheading(0)
  99.     turtle.penup()
  100.     turtle.fd(40)
  101.     turtle.pensize(4)
  102.     turtle.pendown()
  103.     turtle.circle(-2, 360)
  104.     turtle.penup()
  105.     turtle.goto(x, y)
  106.     turtle.setheading(-90)
  107.     turtle.pendown()
  108.     turtle.fd(20)
  109.     turtle.setheading(0)
  110.     turtle.fd(35)
  111.     turtle.setheading(60)
  112.     turtle.fd(10)
  113.     turtle.penup()
  114.     turtle.goto(x, y)
  115.     turtle.setheading(-90)
  116.     turtle.pendown()
  117.     turtle.fd(40)
  118.     turtle.setheading(0)
  119.     turtle.fd(35)
  120.     turtle.setheading(-60)
  121.     turtle.fd(10)
  122.     turtle.penup()
  123.     turtle.goto(x, y)
  124.     turtle.setheading(-90)
  125.     turtle.pendown()
  126.     turtle.fd(60)
  127.     turtle.setheading(-135)
  128.     turtle.fd(60)
  129.     turtle.bk(60)
  130.     turtle.setheading(-45)
  131.     turtle.fd(30)
  132.     turtle.setheading(-135)
  133.     turtle.fd(35)
  134.     turtle.penup()
  135. # 第一个画面,显示文字
  136. def page0():
  137.     turtle.penup()
  138.     turtle.goto(-350, 0)
  139.     turtle.color('black')
  140.     turtle.write('专属于我们的什么节', font=('宋体', 60, 'normal')) #这里的字大家自己替换
  141.     time.sleep(3)
  142. # 第二个画面,显示发射爱心的小人
  143. def page1():
  144.     turtle.speed(10)
  145.     draw_people(-250, 20)
  146.     turtle.penup()
  147.     turtle.goto(-150, -30)
  148.     draw_heart(14)
  149.     turtle.penup()
  150.     turtle.goto(-20, -60)
  151.     draw_heart(25)
  152.     turtle.penup()
  153.     turtle.goto(250, -100)
  154.     draw_heart(45)
  155.     turtle.hideturtle()
  156.     time.sleep(3)
  157. # 最后一个画面,一箭穿心
  158. def page2():
  159.     turtle.speed(1)
  160.     turtle.penup()
  161.     turtle.goto(-200, -200)
  162.     turtle.color('blue')
  163.     turtle.pendown()
  164.     turtle.write('温轻舟       温轻舟', font=('wisdom', 25, 'normal')) #这里的字大家自己替换
  165.     turtle.penup()
  166.     turtle.goto(0, -180)
  167.     draw_heart(10)
  168.     arrow_heart(20, -60, 51)
  169.     turtle.showturtle()
  170. def main():
  171.     turtle.setup(900, 500)
  172.     page0()
  173.     clear_all()
  174.     page1()
  175.     clear_all()
  176.     page2()
  177.     turtle.done()
  178. main()
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

海哥

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表