当前位置:   article > 正文

使用python绘制圣诞树(大合集)_python圣诞树

python圣诞树

最近用代码绘制圣诞树的活动非常火,博主整理了目前较为流行的方法,并对豪华版本中部分复杂部分代码补充了注释。所有代码都是使用常见的库,大家不需要花费额外的学习陈本。

〇、turtle库简介

python turtle库是一个绘图库,可以让你在python中使用turtle来绘制图形。它的使用方法非常简单,可以帮助初学者学习编程的基础知识。

首先,需要在你的python环境中安装turtle库。这可以通过在终端中使用命令 "pip install turtle" 来完成。

然后,在你的python代码中导入turtle模块。这可以通过使用 "import turtle" 来完成。

接下来,你就可以使用turtle中的方法来控制小海龟的移动和绘制图形了。例如,你可以使用 "turtle.forward(distance)" 来让海龟向前移动一段距离,使用 "turtle.left(angle)" 来让海龟向左转一个角度,使用 "turtle.right(angle)" 来让海龟向右转一个角度,使用 "turtle.pencolor(color)" 来设置海龟的画笔颜色,使用 "turtle.pensize(size)" 来设置海龟的画笔粗细等。

你还可以使用turtle库中的其他方法来绘制复杂的图形,例如圆、五边形、六边形等。

一、基础版

  1. height = 5
  2. stars = 1
  3. for i in range(height):
  4. print((' ' * (height - i)) + ('*' * stars))
  5. stars += 2
  6. print((' ' * height) + '|')

最简单的版本,没有用到各种包,纯字符串打印。

二、进阶版

  1. import turtle
  2. screen = turtle.Screen()
  3. screen.setup(800,600)
  4. circle = turtle.Turtle()
  5. circle.shape('circle')
  6. circle.color('red')
  7. circle.speed('fastest')
  8. circle.up()
  9. square = turtle.Turtle()
  10. square.shape('square')
  11. square.color('green')
  12. square.speed('fastest')
  13. square.up()
  14. circle.goto(0,280)
  15. circle.stamp()
  16. k = 0
  17. for i in range(1, 17):
  18. y = 30*i
  19. for j in range(i-k):
  20. x = 30*j
  21. square.goto(x,-y+280)
  22. square.stamp()
  23. square.goto(-x,-y+280)
  24. square.stamp()
  25. if i % 4 == 0:
  26. x = 30*(j+1)
  27. circle.color('red')
  28. circle.goto(-x,-y+280)
  29. circle.stamp()
  30. circle.goto(x,-y+280)
  31. circle.stamp()
  32. k += 2
  33. if i % 4 == 3:
  34. x = 30*(j+1)
  35. circle.color('yellow')
  36. circle.goto(-x,-y+280)
  37. circle.stamp()
  38. circle.goto(x,-y+280)
  39. circle.stamp()
  40. square.color('brown')
  41. for i in range(17,20):
  42. y = 30*i
  43. for j in range(3):
  44. x = 30*j
  45. square.goto(x,-y+280)
  46. square.stamp()
  47. square.goto(-x,-y+280)
  48. square.stamp()
  49. turtle.exitonclick()

使用turtle的版本,很多人Python的兴趣入门都是从python开始的,相信这个对于这个也不存在什么困难。 

三、高级版

  1. from turtle import *
  2. import random
  3. import time
  4. n = 80.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)

在进阶版的基础上,加入了time和random两个常见的包,让图片动起来了。

四、豪华版

  1. import turtle as t # as就是取个别名,后续调用的t都是turtle
  2. from turtle import *
  3. import random as r
  4. import time
  5. n = 100.0
  6. t.pensize(10) # 修改画笔大小
  7. speed("fastest") # 定义速度
  8. screensize(bg='black') # 定义背景颜色,可以自己换颜色
  9. left(90)
  10. forward(3 * n)
  11. color("orange", "yellow") # 定义最上端星星的颜色,外圈是orange,内部是yellow
  12. begin_fill()
  13. left(126)
  14. for i in range(5): # 画五角星
  15. forward(n / 5)
  16. right(144) # 五角星的角度
  17. forward(n / 5)
  18. left(72) # 继续换角度
  19. end_fill()
  20. right(126)
  21. def drawlight(): # 定义画彩灯的方法
  22. if r.randint(0, 30) == 0: # 如果觉得彩灯太多,可以把取值范围加大一些,对应的灯就会少一些
  23. color('tomato') # 定义第一种颜色
  24. circle(6) # 定义彩灯大小
  25. elif r.randint(0, 30) == 1:
  26. color('orange') # 定义第二种颜色
  27. circle(3) # 定义彩灯大小
  28. else:
  29. linewidth = 5
  30. color('dark green') # 其余的随机数情况下画空的树枝
  31. color("dark green") # 定义树枝的颜色
  32. backward(n * 4.8)
  33. def tree(d, s): # 开始画树
  34. if d <= 0: return
  35. forward(s)
  36. tree(d - 1, s * .8)
  37. right(120)
  38. tree(d - 3, s * .5)
  39. drawlight() # 同时调用小彩灯的方法
  40. right(120)
  41. tree(d - 3, s * .5)
  42. right(120)
  43. backward(s)
  44. tree(15, n)
  45. backward(n / 2)
  46. for i in range(200): # 循环画最底端的小装饰
  47. a = 200 - 400 * r.random()
  48. b = 10 - 20 * r.random()
  49. up()
  50. forward(b)
  51. left(90)
  52. forward(a)
  53. down()
  54. if r.randint(0, 1) == 0:
  55. color('tomato')
  56. else:
  57. color('wheat')
  58. circle(2)
  59. up()
  60. backward(a)
  61. right(90)
  62. backward(b)
  63. t.color("dark red", "red") # 定义字体颜色
  64. t.write("Merry Christmas", align="center", font=("Comic Sans MS", 40, "bold")) # 定义文字、位置、字体、大小
  65. def drawsnow(): # 定义画雪花的方法
  66. t.ht() # 隐藏笔头,ht=hideturtle
  67. t.pensize(2) # 定义笔头大小
  68. for i in range(200): # 画多少雪花
  69. t.pencolor("white") # 定义画笔颜色为白色,其实就是雪花为白色
  70. t.pu() # 提笔,pu=penup
  71. t.setx(r.randint(-350, 350)) # 定义x坐标,随机从-350到350之间选择
  72. t.sety(r.randint(-100, 350)) # 定义y坐标,注意雪花一般在地上不会落下,所以不会从太小的纵座轴开始
  73. t.pd() # 落笔,pd=pendown
  74. dens = 6 # 雪花瓣数设为6
  75. snowsize = r.randint(1, 10) # 定义雪花大小
  76. for j in range(dens): # 就是6,那就是画5次,也就是一个雪花五角星
  77. # t.forward(int(snowsize)) #int()取整数
  78. t.fd(int(snowsize))
  79. t.backward(int(snowsize))
  80. # t.bd(int(snowsize)) #注意没有bd=backward,但有fd=forward,小bug
  81. t.right(int(360 / dens)) # 转动角度
  82. drawsnow() # 调用画雪花的方法
  83. t.done() # 完成,否则会直接关闭

并没有引入新的库,但是与高级版相比,绘制的元素更多。 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/人工智能uu/article/detail/884490
推荐阅读
相关标签
  

闽ICP备14008679号