一.如何画围棋棋盘。

围棋棋盘共有19纵19横。其中,位于(0,0)的星位叫天元,其余8个星位坐标分别是:(-6,6),(0,6),(6,6),(-6,0),(6,0),(-6,-6),(0,-6),(6,-6)。这里面涉及到绘制等间距网格,我选择for循环来实现。考虑到以后可以修改棋盘大小,所以网格间距和初始点位置都设置成全局变量。其代码如下:

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:857662006 寻找有志同道合的小伙伴,互帮互助,
群里还有不错的视频学习教程和PDF电子书
'''
# 绘制围棋棋盘import turtle# 线与线间隔
n = 30
# 初始点位置
x = -300
y = -300# 定义棋盘样式
turtle.speed(3)
turtle.pencolor('black')
turtle.screensize(400, 400)# 画横线
for i in range(19):turtle.penup()turtle.goto(x, y + n * i)turtle.pendown()turtle.forward(n * 18)# 画竖线
turtle.left(90)
for i in range(19):turtle.penup()turtle.goto(x + n * i, y)turtle.pendown()turtle.forward(n * 18)turtle.right(90)# 画9个星位,每排三个,共三排所以是两层for循环
x_first = x + n * 3
y_first = y + n * 3 - n * 0.25for i in range(3):for j in range(3):turtle.penup()turtle.goto(x_first + 6 * j * n, y_first + 6 * i * n)# 如果按下面写法,则先画左边3个星,再画中间3个# turtle.goto(x_first + 6 * j * n, y_first + 6 * i * n)turtle.pendown()turtle.begin_fill()turtle.fillcolor('blue')# 飞星的半径为1/4个网格间距turtle.circle(n * 0.25)turtle.end_fill()# 隐藏画笔箭头
turtle.hideturtle()turtle.done()

代码运行结果如下图:

题目非常简单,重点是通过画图来感受循环在处理重复性动作时的威力。但凡重复性的工作都可以用循环来处理。这也正是计算机擅长的工作,并且也是程序的意义所在:把人的精力从繁琐的、海量的、重复性的、简单的初级工作中解脱出来。

二.绘制正弦、余弦函数。

其核心思想是:放下画笔,然后让画笔依次通过各个坐标点就画出一条正弦余弦曲线。从这里也可以看出,这也是不断地重复性工作,重复地计算以x为横坐标的点的 y 坐标,然后重复地让画笔通过这些点。所以我也选用for循环。

当然,代码中值得关注的就是 x-0-y 坐标系的绘制。这段代码可以通用。

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:857662006 寻找有志同道合的小伙伴,互帮互助,
群里还有不错的视频学习教程和PDF电子书
'''
# 在正交坐标系下画sin(x)和cos(x)曲线import turtle
import mathturtle.speed(1)# 画 x 轴
turtle.penup()
turtle.goto(-220, 0)
turtle.pendown()
turtle.goto(220, 0)# 画 x 轴箭头
turtle.setheading(150)
turtle.forward(20)
turtle.penup()
turtle.goto(220, 0)
turtle.setheading(-150)
turtle.pendown()
turtle.forward(20)# 显示x
turtle.penup()
turtle.goto(225, 0)
turtle.write('X')# 画 y 轴
turtle.penup()
turtle.goto(0, -100)
turtle.pendown()
turtle.goto(0, 100)# 画 y 轴箭头
turtle.setheading(240)
turtle.forward(20)
turtle.penup()
turtle.goto(0, 100)
turtle.pendown()
turtle.setheading(-60)
turtle.forward(20)# 显示Y
turtle.penup()
turtle.goto(0, 110)
turtle.write('Y')# 画正弦曲线
x = -175
turtle.pensize(2)
turtle.color('blue')
turtle.penup()
turtle.goto(x, 50 * math.sin((x / 100) * 2 * math.pi))
turtle.pendown()
for x in range(-175, 176):turtle.goto(x, 50 * math.sin((x / 100) * 2 * math.pi))# 将-2π的位置标示出来
turtle.penup()
turtle.goto(-100, -20)
turtle.write('-2π')# 将2π的位置标示出来
turtle.penup()
turtle.goto(100, -20)
turtle.write('2π')# 画余弦曲线
x = -175
turtle.pensize(2)
turtle.color('red')
turtle.penup()
turtle.goto(x, 50 * math.cos((x / 100) * 2 * math.pi))
turtle.pendown()
for x in range(-175, 176):turtle.goto(x, 50 * math.cos((x / 100) * 2 * math.pi))turtle.hideturtle()
turtle.done()

运行结果如下:

最后我还是要重复一遍上面的心得:但凡重复性的工作都可以用循环来处理。这也正是计算机擅长的工作,并且也是程序的意义所在:把人的精力从繁琐的、海量的、重复性的、简单的初级工作中解脱出来。
应该把精力放在建模和算法优化上。这才是重点和难点。

python 用turtle库画围棋棋盘和正、余弦函数图形相关推荐

  1. 用python的Turtle库画一个笑脸

    用python的Turtle库画一个笑脸 最近刚了解到python的turtle库,就简单的尝试一下,画一个笑脸. 效果图: 效果图看起来和原图的差别还是有点大,但是没关系,这只是一个尝试而已. 附上 ...

  2. 使用python的turtle库画表情包

    使用python的turtle库画表情包 话不多说,先上效果图,然后是代码 代码如下: import turtleturtle.penup() turtle.goto(-80,20) turtle.c ...

  3. python的turtle库画乔治

    分享一个用python的turtle库画乔治 链接:https://pan.baidu.com/s/1rIAZXGWIyk6zbDv5jlwv2g 提取码:rv6v 复制这段内容后打开百度网盘手机Ap ...

  4. 用Python的turtle库画一颗简单的树(双层递归的思想)

    用Python的turtle库画一颗简单的树(双层递归的思想) 这段时间比较闲,在CSDN上随便逛逛,看到有些用Python来绘图的程序,很有意思.于是作为Python小白的我,也自己动手尝试了一下, ...

  5. python的turtle库画一只小狐狸

    python的turtle库画一只小狐狸 from turtle import * setup(700,600,450,100)#标题输出 pensize(2) pencolor(0,0,0) pen ...

  6. 利用Python的turtle库画自行车

    利用Python的turtle库画自行车 前言 前言总得说点什么.疫情在家,慕课上学习北理工嵩天等老师的<python语言程序设计>[1],觉得turtle画图,挺有意思,既然骑不了自行车 ...

  7. 用python的turtle库画一个小猪佩奇

    小猪佩奇是一个可爱的小猪.她已经四岁了,与她的妈妈,爸爸,和弟弟乔治生活在一起.佩奇最喜欢做的事情是玩游戏,打扮的漂亮,度假,以及在小泥坑里快乐的跳上跳下和与小羊苏西(她最好的朋友)乔治(她的弟弟)一 ...

  8. 利用python的turtle库画一个图形

    今天我们用python的turtle库制作一个简单的图形(新手必看) [注:turtle是python的标准自带库,无需安装!] 好的废话不多说我们开始写代码 #制作人:中将 #一起自学python ...

  9. 用Python的turtle库画太极图

    作为一名中医药大学的学生,对太极图那是情有独钟,这不,我刚开始学Python不久,便想着用turtle库画一个太极图,对turtle库的使用还不熟练,代码量可能有点多-- 后来又尝试了让太极转动起来: ...

最新文章

  1. 各种NLP操作难实现?谷歌开源序列建模框架Lingvo
  2. 别说我懂社交网络: 关于社交网络分析的一头雾水
  3. java 资深工程师必备技能
  4. python随机读取字符_利用python3随机生成中文字符的实现方法
  5. editplus查找文件中的字符串
  6. LeetCode 515. Find Largest Value in Each Tree Row
  7. Halcon数据类型
  8. Java实现10万+并发去重,持续优化!
  9. 调整home和根分区大小
  10. Java设计模式之——代理设计模式
  11. 做添加页面判断用户是否全部填写输入框
  12. 人工智能翻译能否替代人工翻译,人工智能翻译何去何从
  13. astah新建一个项目_Astah SysML
  14. java.lang.Integer常用方法
  15. 夜莺:2019年运营微信个人号的3个营销价值
  16. 完全平方数 (打表)
  17. 前端管中窥豹之CSS篇
  18. python路径为什么要用双反斜杠\\
  19. 关于TVS管的选型和应用
  20. cad刷新快捷键_三天学会CAD制图技巧,入门到精通,学会后你就逆天了

热门文章

  1. 十天学Linux内核之第九天---向内核添加代码
  2. GridView编辑删除操作
  3. 《暗时间》的笔记-我在南大的七年
  4. Brocade说:网络就是云
  5. 解密联想20年的45条法则
  6. js正则贪婪模式_JavaScript正则表达式迷你书之贪婪模式-学习笔记
  7. 【整理】PP 成本收集器简介
  8. abap对采购订单强制置为”交货已完成“状态(BAPI_PO_CHANGE、BAPI_PO_RELEASE、BAPI_PO_RESET_RELEASE)
  9. SAP与其他系统交互的方式
  10. SAP 系统参数设置 RZ10 RZ11