c语言樱花飘落代码_用Python画樱花?想得美就能画得美(上)

前段时间疯传的武大学生用Python代码画出樱花,暗藏“武汉加油”,好感人的。

不过他们的代码并不是“画”樱花,而是剪辑一段樱花的视频,把其中的像素替换为“武汉加油”的字样。

今天我教你实实在在地用Python画画。

先看一个最简单又好玩的:五行代码画一个方形的螺旋线。画出来的图是这样的:

6d663572e44dff3eb09cb151214ef615.png

下面是简单的五行代码,你只要懂这几个英文单词,保管看得懂:

  • turtle —— 小海龟,在沙滩上画画的小能手
  • length —— 长度,划线的长度
  • right —— 向右转!
  • forward —— 前进!
  • done —— 完成!
import turtle
for length in range(5,5*31,5): # 画30个线段,每个线段比前一个长度加5
    turtle.right(90)           # 右转90度
    turtle.forward(length)     #
turtle.done( )

怎么样,超级简单易懂吧?

Python就是这样好玩又简单。你要是学C语言的话,也许整本书教完了还没教你画图呢。

你可能会说这个图太简单了。想画实用漂亮一些的图?那画朵玫瑰怎么样啊?这个可能要手绘了。

代码比较长,一点一点画的,所以放后面附录了,这里直接看效果:

1e67868250b6b08d2fe530acc6abb7fc.png
Python手绘玫瑰效果演示https://www.zhihu.com/video/1233988975486377984

附录中的代码,虽然很长,但你完全能看懂每一句话。你可能会注意到,源代码全文主要也就是这样一句话在反复念叨:

turtle.circle(a, b)

这句话的意思就是:请海龟画圆弧,画半径为a、夹角为b那么大(如下图所示)。很自然好懂吧?玫瑰花的大部分线条,都是这样,用一段一段的弧线拼接起来的而已。

137f9bb810986f90704991192eebccfb.png

我们的自然学习法,就是这样子精选好玩的程序,让你在有趣的代码阅读中就完成学习的。

动手练习:

  1. 把本文的两个程序分别复制到你的编程平台上(例如IDLE或Pycharm),运行无误。
  2. 按第一个程序的思想,画一个正六边形(提示:每次转60度)。
  3. 对第二个程序进行调整,画一朵黄玫瑰,并且让枝条细一点。

到此为止我们只画了玫瑰,还没画樱花。

原则上,用类似的方法(弧线拼接),你可以画任何你喜欢的花。但是这个每一步弧线大小的设定和调整是很麻烦的,而且跟手画一样,你必须要有艺术天分才能画好呢。

如果你有艺术底子,你就可以继续朝这个方向走,也许你能同样画出很好看的别的花花草草来,比如樱花 或圣诞树 。但下一篇我们将用美丽的数学方法来画樱花,也可以很艳丽的喔。

这里是《简单又好玩的Python》,欢迎关注。

相关阅读:Henri Jambo:用Python画樱花?想得美就能画得美(下)

(注:为了简单易懂,本文的代码在语法上不是最完美的,下一篇我们继续做其它画图示例时,将使用更严谨的语法。)


附:手绘玫瑰源代码

# https://blog.csdn.net/zaq0123/article/details/78573186
# 原作:QiZhao,完善:HenryJ

import turtle

# 设置初始位置
turtle.penup()                          # 抬笔(移动过程不画线)
turtle.left(90)                         # 左转90度
turtle.fd(200)                          # 前进200点(fd=forward)
turtle.pendown()                        # 落笔,准备画画
turtle.right(90)                        # 右转90度

# 花蕊
turtle.fillcolor("red")                  # 准备填充色为“红色”
turtle.begin_fill()                      # 开始填充封闭空间
turtle.circle(10, 180)                   # 画弧,半径10,180度角
turtle.circle(25, 110)                   # 画弧,半径25,110度角
turtle.left(50)                          # 左转50度
turtle.circle(60, 45)                    # 以下注释略
turtle.circle(20, 170)
turtle.right(24)
turtle.fd(30)
turtle.left(10)
turtle.circle(30, 110)
turtle.fd(20)
turtle.left(40)
turtle.circle(90, 70)
turtle.circle(30, 150)
turtle.right(30)
turtle.fd(15)
turtle.circle(80, 90)
turtle.left(15)
turtle.fd(45)
turtle.right(165)
turtle.fd(20)
turtle.left(155)
turtle.circle(150, 80)
turtle.left(50)
turtle.circle(150, 90)
turtle.end_fill()

# 花瓣1
turtle.left(150)
turtle.circle(-90, 70)
turtle.left(20)
turtle.circle(75, 105)
turtle.setheading(60)
turtle.circle(80, 98)
turtle.circle(-90, 40)

# 花瓣2
turtle.left(180)
turtle.circle(90, 40)
turtle.circle(-80, 98)
turtle.setheading(-83)

# 叶子1
turtle.pensize(2)
turtle.fd(30)
turtle.left(90)
turtle.fd(25)
turtle.left(45)
turtle.fillcolor("green")
turtle.begin_fill()
turtle.circle(-80, 90)
turtle.right(90)
turtle.circle(-80, 90)
turtle.end_fill()

turtle.right(135)
turtle.fd(60)
turtle.left(180)
turtle.fd(85)
turtle.left(90)
turtle.fd(80)

# 叶子2
turtle.right(90)
turtle.right(45)
turtle.fillcolor("green")
turtle.begin_fill()
turtle.circle(80, 90)
turtle.left(90)
turtle.circle(80, 90)
turtle.end_fill()

turtle.left(135)
turtle.fd(60)
turtle.left(180)
turtle.fd(60)
turtle.right(90)
turtle.circle(200, 60)

turtle.hideturtle()
turtle.done()

Python自然学习法全部源代码网址:

  • https://github.com/globien/easy-python
  • https://gitee.com/globien/easy-python
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值