当前位置:   article > 正文

快要圣诞节啦,快去给小伙伴们分享漂亮的圣诞树吧_pycharm圣诞树

pycharm圣诞树

最近翻到一篇知乎,上面有不少用Python(大多是turtle库)绘制的树图,感觉很漂亮,我整理了一下,挑了一些我觉得不错的代码分享给大家(这些我都测试过,确实可以生成喔~)

重中之重,就是将这些代码封装成.exe文件,在别人的电脑没有pycharm的时候也可以运行展示效果

第一种圣诞树


效果(有绘制过程)
代码

  1. from turtle import *
  2. import time
  3. setup(500, 500, startx=None, starty=None)
  4. speed(0)
  5. pencolor("pink")
  6. pensize(10)
  7. penup()
  8. hideturtle()
  9. goto(0, 150)
  10. showturtle()
  11. pendown()
  12. shape(name="classic")
  13. # 1
  14. seth(-120)
  15. for i in range(10):
  16. fd(12)
  17. right(2)
  18. penup()
  19. goto(0, 150)
  20. seth(-60)
  21. pendown()
  22. for i in range(10):
  23. fd(12)
  24. left(2)
  25. seth(-150)
  26. penup()
  27. fd(10)
  28. pendown()
  29. for i in range(5):
  30. fd(10)
  31. right(15)
  32. seth(-150)
  33. penup()
  34. fd(8)
  35. pendown()
  36. for i in range(5):
  37. fd(10)
  38. right(15)
  39. seth(-155)
  40. penup()
  41. fd(5)
  42. pendown()
  43. for i in range(5):
  44. fd(7)
  45. right(15)
  46. # 2
  47. penup()
  48. goto(-55, 34)
  49. pendown()
  50. seth(-120)
  51. for i in range(10):
  52. fd(8)
  53. right(5)
  54. penup()
  55. goto(50, 35)
  56. seth(-60)
  57. pendown()
  58. for i in range(10):
  59. fd(8)
  60. left(5)
  61. seth(-120)
  62. penup()
  63. fd(10)
  64. seth(-145)
  65. pendown()
  66. for i in range(5):
  67. fd(10)
  68. right(15)
  69. penup()
  70. fd(10)
  71. seth(-145)
  72. pendown()
  73. for i in range(5):
  74. fd(12)
  75. right(15)
  76. penup()
  77. fd(8)
  78. seth(-145)
  79. pendown()
  80. for i in range(5):
  81. fd(10)
  82. right(15)
  83. penup()
  84. seth(-155)
  85. fd(8)
  86. pendown()
  87. for i in range(5):
  88. fd(11)
  89. right(15)
  90. # 3
  91. penup()
  92. goto(-100, -40)
  93. seth(-120)
  94. pendown()
  95. for i in range(10):
  96. fd(6)
  97. right(3)
  98. penup()
  99. goto(80, -39)
  100. seth(-50)
  101. pendown()
  102. for i in range(10):
  103. fd(6)
  104. left(3)
  105. seth(-155)
  106. penup()
  107. fd(10)
  108. pendown()
  109. for i in range(5):
  110. fd(8)
  111. right(10)
  112. penup()
  113. fd(8)
  114. seth(-145)
  115. pendown()
  116. for i in range(7):
  117. fd(8)
  118. right(10)
  119. penup()
  120. fd(8)
  121. seth(-145)
  122. pendown()
  123. for i in range(7):
  124. fd(7)
  125. right(10)
  126. penup()
  127. fd(8)
  128. seth(-145)
  129. pendown()
  130. for i in range(7):
  131. fd(7)
  132. right(10)
  133. penup()
  134. fd(8)
  135. seth(-140)
  136. pendown()
  137. for i in range(7):
  138. fd(6)
  139. right(10)
  140. # 4
  141. penup()
  142. goto(-120, -95)
  143. seth(-130)
  144. pendown()
  145. for i in range(7):
  146. fd(10)
  147. right(5)
  148. penup()
  149. goto(100, -95)
  150. seth(-50)
  151. pendown()
  152. for i in range(7):
  153. fd(10)
  154. left(5)
  155. penup()
  156. seth(-120)
  157. fd(10)
  158. seth(-155)
  159. pendown()
  160. for i in range(6):
  161. fd(8)
  162. right(10)
  163. penup()
  164. seth(-160)
  165. fd(10)
  166. seth(-155)
  167. pendown()
  168. for i in range(6):
  169. fd(8)
  170. right(10)
  171. penup()
  172. seth(-160)
  173. fd(10)
  174. seth(-155)
  175. pendown()
  176. for i in range(6):
  177. fd(8)
  178. right(10)
  179. penup()
  180. seth(-160)
  181. fd(10)
  182. seth(-160)
  183. pendown()
  184. for i in range(6):
  185. fd(8)
  186. right(10)
  187. penup()
  188. seth(-160)
  189. fd(10)
  190. seth(-160)
  191. pendown()
  192. for i in range(6):
  193. fd(8)
  194. right(10)
  195. penup()
  196. seth(-160)
  197. fd(10)
  198. seth(-165)
  199. pendown()
  200. for i in range(5):
  201. fd(10)
  202. right(11)
  203. # 5
  204. penup()
  205. goto(-70, -165)
  206. seth(-85)
  207. pendown()
  208. for i in range(3):
  209. fd(5)
  210. left(3)
  211. penup()
  212. goto(70, -165)
  213. seth(-95)
  214. pendown()
  215. for i in range(3):
  216. fd(5)
  217. right(3)
  218. seth(-170)
  219. penup()
  220. fd(10)
  221. pendown()
  222. pendown()
  223. for i in range(10):
  224. fd(12)
  225. right(2)
  226. # 6
  227. penup()
  228. goto(70, -165)
  229. pendown()
  230. seth(-90)
  231. pensize(8)
  232. pencolor("#de8891")
  233. circle(-20, 90)
  234. penup()
  235. goto(30, -185)
  236. pendown()
  237. seth(-180)
  238. pensize(8)
  239. pencolor("#de8891")
  240. fd(40)
  241. penup()
  242. goto(-5, -170)
  243. pendown()
  244. seth(-180)
  245. pensize(8)
  246. pencolor("#de8891")
  247. fd(35)
  248. def guest(x, y, z):
  249. penup()
  250. goto(x, y)
  251. seth(-z)
  252. pendown()
  253. for angel in range(5):
  254. fd(10)
  255. right(10)
  256. def guet(x, y, z):
  257. penup()
  258. goto(x, y)
  259. seth(-z)
  260. pendown()
  261. for angel in range(5):
  262. fd(10)
  263. left(10)
  264. def qu(x, y, z):
  265. penup()
  266. goto(x, y)
  267. seth(-z)
  268. pendown()
  269. for angel in range(5):
  270. fd(6)
  271. right(10)
  272. seth(-150)
  273. fd(20)
  274. # 树枝
  275. guest(-70, -150, 160)
  276. guest(100, -150, 160)
  277. guet(110, -110, 50)
  278. guest(160, -140, 150)
  279. qu(80, -120, 180)
  280. guest(70, -85, 165)
  281. guest(-40, -85, 165)
  282. guet(90, -50, 50)
  283. guest(130, -80, 150)
  284. pencolor("pink")
  285. qu(-40, -60, 180)
  286. pencolor('#de8891')
  287. qu(80, -30, 180)
  288. pencolor("pink")
  289. qu(40, 10, 180)
  290. pencolor("#de8891")
  291. guest(-60, 30, 120)
  292. guest(-20, -20, 150)
  293. guet(45, 40, 60)
  294. guest(-30, 40, 170)
  295. guest(-30, 110, 115)
  296. guet(40, 90, 60)
  297. guest(80, 50, 160)
  298. pencolor("#de8891")
  299. def hdj(x, y):
  300. penup()
  301. goto(x, y)
  302. seth(80)
  303. pendown()
  304. pensize(2)
  305. circle(5)
  306. seth(10)
  307. fd(15)
  308. seth(120)
  309. fd(20)
  310. seth(240)
  311. fd(20)
  312. seth(180)
  313. fd(20)
  314. seth(-60)
  315. fd(20)
  316. seth(50)
  317. fd(20)
  318. seth(-40)
  319. fd(30)
  320. seth(-130)
  321. fd(5)
  322. seth(135)
  323. fd(30)
  324. seth(-60)
  325. fd(30)
  326. seth(-150)
  327. fd(6)
  328. seth(110)
  329. fd(30)
  330. def uit(x, y):
  331. penup()
  332. goto(x, y)
  333. pendown()
  334. pensize(2)
  335. circle(5)
  336. seth(-10)
  337. fd(15)
  338. seth(90)
  339. fd(15)
  340. seth(200)
  341. fd(15)
  342. seth(160)
  343. fd(15)
  344. seth(-90)
  345. fd(15)
  346. seth(10)
  347. fd(15)
  348. seth(-60)
  349. fd(20)
  350. seth(-180)
  351. fd(5)
  352. seth(110)
  353. fd(20)
  354. seth(-90)
  355. fd(20)
  356. seth(-180)
  357. fd(6)
  358. seth(70)
  359. fd(15)
  360. hideturtle()
  361. def yut(x, y, z):
  362. penup()
  363. goto(x, y)
  364. pendown()
  365. seth(z)
  366. for po in range(5):
  367. fd(4)
  368. left(36)
  369. def ytu(x, y, z):
  370. penup()
  371. goto(x, y)
  372. pendown()
  373. seth(z)
  374. for kk in range(5):
  375. fd(4)
  376. left(36)
  377. # 小蝴蝶结
  378. seth(0)
  379. uit(40, -160)
  380. hdj(-80, -120)
  381. yut(-67, -115, 120)
  382. yut(-86, -123, 150)
  383. hdj(40, -50)
  384. yut(52, -45, 130)
  385. yut(34, -55, 160)
  386. seth(0)
  387. uit(-20, -60)
  388. ytu(-4, -60, 100)
  389. ytu(-20, -60, 120)
  390. hdj(-30, 20)
  391. yut(-15, 25, 130)
  392. yut(-40, 20, 180)
  393. uit(30, 70)
  394. ytu(45, 70, 100)
  395. ytu(30, 70, 120)
  396. # 大蝴蝶结
  397. pencolor("#f799e6")
  398. pensize(5)
  399. penup()
  400. seth(0)
  401. goto(0, 150)
  402. pendown()
  403. circle(10)
  404. seth(-15)
  405. fd(40)
  406. seth(90)
  407. fd(40)
  408. seth(200)
  409. fd(40)
  410. seth(160)
  411. fd(40)
  412. seth(-90)
  413. fd(40)
  414. seth(15)
  415. fd(40)
  416. seth(-70)
  417. pencolor("#f799e6")
  418. pensize(4)
  419. fd(40)
  420. seth(-180)
  421. fd(10)
  422. seth(100)
  423. fd(40)
  424. seth(-100)
  425. fd(40)
  426. seth(-180)
  427. fd(10)
  428. seth(70)
  429. fd(40)
  430. penup()
  431. seth(0)
  432. goto(0, 130)
  433. pencolor("pink")
  434. pendown()
  435. def iou(x, y, z):
  436. penup()
  437. goto(x, y)
  438. pencolor("#f799e6")
  439. pendown()
  440. seth(z)
  441. for po in range(10):
  442. fd(4)
  443. left(18)
  444. seth(0)
  445. iou(35, 145, 100)
  446. iou(-7, 145, 110)
  447. pencolor("red")
  448. pensize(7)
  449. penup()
  450. goto(-35, 135)
  451. pendown()
  452. # 圣诞帽
  453. seth(-20)
  454. pensize(2)
  455. penup()
  456. goto(-30, -120)
  457. pencolor("black")
  458. pendown()
  459. fillcolor("red")
  460. fd(30)
  461. circle(4, 180)
  462. fd(30)
  463. circle(4, 180)
  464. penup()
  465. goto(-25, -115)
  466. seth(75)
  467. pendown()
  468. begin_fill()
  469. for i in range(5):
  470. fd(6)
  471. right(20)
  472. seth(-10)
  473. for i in range(5):
  474. fd(8)
  475. right(15)
  476. seth(145)
  477. for i in range(5):
  478. fd(5)
  479. left(2)
  480. seth(90)
  481. for i in range(5):
  482. fd(1)
  483. left(2)
  484. seth(-90)
  485. for i in range(4):
  486. fd(4)
  487. right(6)
  488. seth(161)
  489. fd(30)
  490. end_fill()
  491. pensize(1)
  492. pencolor("black")
  493. def koc(x, y, size):
  494. pensize(2)
  495. pencolor("black")
  496. penup()
  497. goto(x, y)
  498. pendown()
  499. begin_fill()
  500. fillcolor("yellow")
  501. for i in range(5):
  502. left(72)
  503. fd(size)
  504. right(144)
  505. fd(size)
  506. end_fill()
  507. # 星星
  508. seth(-15)
  509. koc(-120, -70, 10)
  510. seth(10)
  511. koc(100, -20, 10)
  512. seth(-10)
  513. koc(10, 40, 10)
  514. seth(30)
  515. koc(-80, 60, 10)
  516. koc(100, -150, 10)
  517. koc(-140, -150, 10)
  518. koc(20, 120, 10)
  519. # 袜子
  520. seth(-20)
  521. pensize(2)
  522. penup()
  523. goto(-20, 80)
  524. pencolor("black")
  525. pendown()
  526. fillcolor("red")
  527. fd(25)
  528. circle(4, 180)
  529. fd(25)
  530. circle(4, 180)
  531. penup()
  532. goto(-15, 80)
  533. pendown()
  534. begin_fill()
  535. fillcolor("red")
  536. seth(-120)
  537. fd(20)
  538. seth(150)
  539. fd(5)
  540. circle(7, 180)
  541. fd(15)
  542. circle(5, 90)
  543. fd(30)
  544. seth(160)
  545. fd(18)
  546. end_fill()
  547. penup()
  548. seth(0)
  549. goto(100, -230)
  550. pendown()
  551. write("Merry Christmas", align="right", font=("方正黄草简体", 24, "bold"))
  552. done()

加名字的话就把下面代码的注释Merry Christmas后面或者讲这句话一起改掉都可以


第二种圣诞树

 圣诞树 (动态生成效果)代码:

  1. from turtle import *
  2. import random
  3. import time
  4. n = 100.0
  5. speed("fastest")
  6. screensize(bg='seashell')
  7. left(90)
  8. forward(3*n)
  9. color("orange", "yellow")
  10. begin_fill()
  11. left(126)
  12. for i in range(5):
  13.     forward(n/5)
  14.     right(144)
  15.     forward(n/5)
  16.     left(72)
  17. end_fill()
  18. right(126)
  19. color("dark green")
  20. backward(n*4.8)
  21. def tree(d, s):
  22.     if d <= 0: return
  23.     forward(s)
  24.     tree(d-1, s*.8)
  25.     right(120)
  26.     tree(d-3, s*.5)
  27.     right(120)
  28.     tree(d-3, s*.5)
  29.     right(120)
  30.     backward(s)
  31. tree(15, n)
  32. backward(n/2)
  33. for i in range(200):
  34.     a = 200 - 400 * random.random()
  35.     b = 10 - 20 * random.random()
  36.     up()
  37.     forward(b)
  38.     left(90)
  39.     forward(a)
  40.     down()
  41.     if random.randint(0, 1) == 0:
  42.             color('tomato')
  43.     else:
  44.         color('wheat')
  45.     circle(2)
  46.     up()
  47.     backward(a)
  48.     right(90)
  49.     backward(b)
  50. time.sleep(60)

 第三种樱花树

 动态生成樱花
效果图(这个是动态的):
实现代码

  1. import turtle as T
  2. import random
  3. import time
  4. # 画樱花的躯干(60,t)
  5. def Tree(branch, t):
  6.     time.sleep(0.0005)
  7.     if branch > 3:
  8.         if 8 <= branch <= 12:
  9.             if random.randint(0, 2) == 0:
  10.                 t.color('snow')  # 白
  11.             else:
  12.                 t.color('lightcoral')  # 淡珊瑚色
  13.             t.pensize(branch / 3)
  14.         elif branch < 8:
  15.             if random.randint(0, 1) == 0:
  16.                 t.color('snow')
  17.             else:
  18.                 t.color('lightcoral')  # 淡珊瑚色
  19.             t.pensize(branch / 2)
  20.         else:
  21.             t.color('sienna')  # 赭(zhě)色
  22.             t.pensize(branch / 10)  # 6
  23.         t.forward(branch)
  24.         a = 1.5 * random.random()
  25.         t.right(20 * a)
  26.         b = 1.5 * random.random()
  27.         Tree(branch - 10 * b, t)
  28.         t.left(40 * a)
  29.         Tree(branch - 10 * b, t)
  30.         t.right(20 * a)
  31.         t.up()
  32.         t.backward(branch)
  33.         t.down()
  34. # 掉落的花瓣
  35. def Petal(m, t):
  36.     for i in range(m):
  37.         a = 200 - 400 * random.random()
  38.         b = 10 - 20 * random.random()
  39.         t.up()
  40.         t.forward(b)
  41.         t.left(90)
  42.         t.forward(a)
  43.         t.down()
  44.         t.color('lightcoral')  # 淡珊瑚色
  45.         t.circle(1)
  46.         t.up()
  47.         t.backward(a)
  48.         t.right(90)
  49.         t.backward(b)
  50. # 绘图区域
  51. t = T.Turtle()
  52. # 画布大小
  53. w = T.Screen()
  54. t.hideturtle()  # 隐藏画笔
  55. t.getscreen().tracer(5, 0)
  56. w.screensize(bg='wheat')  # wheat小麦
  57. t.left(90)
  58. t.up()
  59. t.backward(150)
  60. t.down()
  61. t.color('sienna')
  62. # 画樱花的躯干
  63. Tree(60, t)
  64. # 掉落的花瓣
  65. Petal(200, t)
  66. w.exitonclick()
  67.  #飘落效果
  68. #效果图:
  69. #代码:
  70. from turtle import *
  71. from random import *
  72. from math import *
  73. def tree(n,l):
  74.     pd()#下笔
  75.     #阴影效果
  76.     t = cos(radians(heading()+45))/8+0.25
  77.     pencolor(t,t,t)
  78.     pensize(n/3)
  79.     forward(l)#画树枝
  80.     if n>0:
  81.         b = random()*15+10 #右分支偏转角度
  82.         c = random()*15+10 #左分支偏转角度
  83.         d = l*(random()*0.25+0.7) #下一个分支的长度
  84.         #右转一定角度,画右分支
  85.         right(b)
  86.         tree(n-1,d)
  87.         #左转一定角度,画左分支
  88.         left(b+c)
  89.         tree(n-1,d)
  90.         #转回来
  91.         right(c)
  92.     else:
  93.         #画叶子
  94.         right(90)
  95.         n=cos(radians(heading()-45))/4+0.5
  96.         pencolor(n,n*0.8,n*0.8)
  97.         circle(3)
  98.         left(90)
  99.         #添加0.3倍的飘落叶子
  100.         if(random()>0.7):
  101.             pu()
  102.             #飘落
  103.             t = heading()
  104.             an = -40 +random()*40
  105.             setheading(an)
  106.             dis = int(800*random()*0.5 + 400*random()*0.3 + 200*random()*0.2)
  107.             forward(dis)
  108.             setheading(t)
  109.             #画叶子
  110.             pd()
  111.             right(90)
  112.             n = cos(radians(heading()-45))/4+0.5
  113.             pencolor(n*0.5+0.5,0.4+n*0.4,0.4+n*0.4)
  114.             circle(2)
  115.             left(90)
  116.             pu()
  117.             #返回
  118.             t=heading()
  119.             setheading(an)
  120.             backward(dis)
  121.             setheading(t)
  122.     pu()
  123.     backward(l)#退回
  124. bgcolor(0.5,0.5,0.5)#背景色
  125. ht()#隐藏turtle
  126. speed(0)#速度 1-10渐进,0 最快
  127. tracer(0,0)
  128. pu()#抬笔
  129. backward(100)
  130. left(90)#左转90度
  131. pu()#抬笔
  132. backward(300)#后退300
  133. tree(12,100)#递归7层
  134. done()

暗系的

代码如下

  1. from turtle import *
  2. from random import *
  3. from math import *
  4. def tree(n, l):
  5.     pd()
  6.     t = cos(radians(heading() + 45)) / 8 + 0.25
  7.     pencolor(t, t, t)
  8.     pensize(n / 4)
  9.     forward(l)
  10.     if n > 0:
  11.         b = random() * 15 + 10
  12.         c = random() * 15 + 10
  13.         d = l * (random() * 0.35 + 0.6)
  14.         right(b)
  15.         tree(n - 1, d)
  16.         left(b + c)
  17.         tree(n - 1, d)
  18.         right(c)
  19.     else:
  20.         right(90)
  21.         n = cos(radians(heading() - 45)) / 4 + 0.5
  22.         pencolor(n, n, n)
  23.         circle(2)
  24.         left(90)
  25.     pu()
  26.     backward(l)
  27. bgcolor(0.5, 0.5, 0.5)
  28. ht()
  29. speed(0)
  30. tracer(0, 0)
  31. left(90)
  32. pu()
  33. backward(300)
  34. tree(13, 100)
  35. done()

下面就是这波的重中之重,就是将这些代码封装成.exe文件,在别人的电脑没有pycharm的时候也可以运行展示效果。

pip install pyinstaller

下载pyinstaller就可以转换成.exe文件了

进入代码的路径,终端输入下面代码
pyinstaller -F --onefile ***.py

***是文件名字

py转exe

之后会生成一个dist的文件夹,那个便可以直接运行

然后这个exe文件可以直接发给别人,没有解释器也可以看到效果哦

 

感兴趣的话就赶紧尝试一下吧!

哥哥姐姐们麻烦随手一个赞赞

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号