一、Python所有方向的学习路线
Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
二、学习软件
工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。
三、入门学习视频
我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
中国结是一种手工编织工艺品,它身上所显示的情致与智慧正是汉族古老文明中的一个侧面。因为其外观对称精致,可以代表汉族悠久的历史,符合中国传统装饰的习俗和审美观念,故命名为中国结。中国结代表着团结幸福平安,特别是在民间,它精致的做工深受大众的喜爱。其主要组成部分如下图所示。
2 设计中国结对象
基于Python Turtle库实现绘制,首先设计一个中国结对象,画笔颜色就选择中国红。再定义一个__goto()函数封装turtle库对画笔移动的操作。
import turtle as t
class chineseKnot:
'''
\* @breif: 中国结
'''
def \_\_init\_\_(self) -> None:
# 画笔初始化
self.t = t
self.t.pensize(10)
self.t.setup(700, 700)
self.t.pencolor("red")
self.t.speed(14)
# 结心坐标
self.x = 0
self.y = 200
'''
\* @breif: 画笔移动到指定位置
\* @param[in]: x -> 画笔移动位置横坐标
\* @param[in]: y -> 画笔移动位置纵坐标
\* @retval: None
'''
def \_\_goto(self, x: int, y: int) -> None:
self.t.penup()
self.t.goto(x,y)
self.t.pendown()
3 绘制结体
def drawBody(self) -> None:
for i in range(11):
self.__goto(self.x - i \* 10 \* sqrt(2), self.y - i \* 10 \* sqrt(2))
self.t.seth(-45)
self.t.fd(200)
self.__goto(self.x + i \* 10 \* sqrt(2), self.y - i \* 10 \* sqrt(2))
self.t.seth(-135)
self.t.fd(200)
4 绘制耳翼
def drawEdge(self) -> None:
for i in range(4):
# 左上角
self.__goto(-10 \* sqrt(2) - i \* 20 \* sqrt(2),
200 - 10 \* sqrt(2) - i \* 20 \* sqrt(2))
self.t.seth(135)
self.t.fd(20)
self.t.circle(10, 180)
self.t.fd(20)
# 右上角
self.__goto(10 \* sqrt(2) + i \* 20 \* sqrt(2),
200 - 10 \* sqrt(2) - i \* 20 \* sqrt(2))
self.t.seth(45)
self.t.fd(20)
self.t.circle(-10, 180)
self.t.fd(20)
# 左下角
self.__goto(-10 \* sqrt(2) - i \* 20 \* sqrt(2),
200 - 190 \* sqrt(2) + i \* 20 \* sqrt(2))
self.t.seth(-135)
self.t.fd(20)
self.t.circle(-10, 180)
self.t.fd(20)
# 右下角
self.__goto(10 \* sqrt(2) + i \* 20 \* sqrt(2),
200 - 190 \* sqrt(2) + i \* 20 \* sqrt(2))
self.t.seth(-45)
self.t.fd(20)
self.t.circle(10, 180)
self.t.fd(20)
# 左侧
self.t.seth(-45)
self.__goto(90 \* sqrt(2), 200 - 110 \* sqrt(2))
self.t.circle(20,270)
self.__goto(-90 \* sqrt(2), 200 - 110 \* sqrt(2))
self.t.circle(-20,270)
# 右侧
self.__goto(80 \* sqrt(2), 200 - 120 \* sqrt(2))
self.t.circle(40,270)
self.__goto(-80 \* sqrt(2), 200 - 120 \* sqrt(2))
self.t.circle(-40,270)
5 绘制挂耳和流苏
def drawAdorn(self):
# 上侧
self.__goto(self.x, self.y)
self.t.pensize(14)
self.t.seth(90)
self.t.fd(60)
self.__goto(0,320)
self.t.seth(180)
self.t.circle(30,360)
# 下侧
self.__goto(0,200 - 200 \* sqrt(2))
self.t.pensize(40)
self.t.seth(-90)
self.t.fd(20)
self.t.pensize(2)
for i in range(11):
self.__goto(-20 + 4 \* i, 200 - 200 \* sqrt(2))
self.t.seth(-90)
self.t.fd(200)
6 完整代码,一键运行
import turtle as t
from math import sqrt
class chineseKnot:
'''
\* @breif: 中国结
'''
def \_\_init\_\_(self) -> None:
# 画笔初始化
self.t = t
self.t.pensize(10)
self.t.setup(700, 700)
self.t.pencolor("red")
self.t.speed(14)
# 结心坐标
self.x = 0
self.y = 200
'''
\* @breif: 画中国结
\* @param[in]: None
\* @retval: None
'''
def drawKnot(self) -> None:
self.drawBody()
self.drawEdge()
self.drawAdorn()
self.t.hideturtle()
self.t.done()
'''
\* @breif: 画中国结主体部分
\* @param[in]: None
\* @retval: None
'''
def drawBody(self) -> None:
for i in range(11):
self.__goto(self.x - i \* 10 \* sqrt(2), self.y - i \* 10 \* sqrt(2))
self.t.seth(-45)
self.t.fd(200)
self.__goto(self.x + i \* 10 \* sqrt(2), self.y - i \* 10 \* sqrt(2))
self.t.seth(-135)
self.t.fd(200)
'''
\* @breif: 画中国结边缘部分
\* @param[in]: None
\* @retval: None
'''
def drawEdge(self) -> None:
for i in range(4):
# 左上角
self.__goto(-10 \* sqrt(2) - i \* 20 \* sqrt(2),
200 - 10 \* sqrt(2) - i \* 20 \* sqrt(2))
self.t.seth(135)
self.t.fd(20)
self.t.circle(10, 180)
self.t.fd(20)
# 右上角
self.__goto(10 \* sqrt(2) + i \* 20 \* sqrt(2),
200 - 10 \* sqrt(2) - i \* 20 \* sqrt(2))
self.t.seth(45)
self.t.fd(20)
self.t.circle(-10, 180)
self.t.fd(20)
# 左下角
self.__goto(-10 \* sqrt(2) - i \* 20 \* sqrt(2),
200 - 190 \* sqrt(2) + i \* 20 \* sqrt(2))
self.t.seth(-135)
self.t.fd(20)
self.t.circle(-10, 180)
self.t.fd(20)
# 右下角
**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**
**[需要这份系统化学习资料的朋友,可以戳这里获取](https://bbs.csdn.net/forums/4304bb5a486d4c3ab8389e65ecb71ac0)**
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**