新年快到了,让我们一起用Python编织中国结吧_中国结的编程代码(2)

一、Python所有方向的学习路线

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

二、学习软件

工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。

三、入门学习视频

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!


🔥 作者FrigidWinter

🔥 简介:主攻机器人与人工智能领域的理论研究和工程应用,业余丰富各种技术栈。主要涉足:【机器人(ROS)】【机器学习】【深度学习】【计算机视觉】

🔥 专栏


目录

0 写在前面

小年(1.25)是扫尘、祭灶的日子;随之而来的除夕则是“流浪”在外打工人忙碌一年后,难得的回家团圆的日子。博主在这里预祝大家新年万事顺意,幸福是奋斗出来的!

在这里插入图片描述

1 中国结的组成部分

中国结是一种手工编织工艺品,它身上所显示的情致与智慧正是汉族古老文明中的一个侧面。因为其外观对称精致,可以代表汉族悠久的历史,符合中国传统装饰的习俗和审美观念,故命名为中国结。中国结代表着团结幸福平安,特别是在民间,它精致的做工深受大众的喜爱。其主要组成部分如下图所示。

在这里插入图片描述

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


![在这里插入图片描述](https://img-blog.csdnimg.cn/20210511152217670.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3poaWd1aWd1,size_16,color_FFFFFF,t_70)

**感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的:**



① 2000多本Python电子书(主流和经典的书籍应该都有了)

② Python标准库资料(最全中文版)

③ 项目源码(四五十个有趣且经典的练手项目及源码)

④ Python基础入门、爬虫、web开发、大数据分析方面的视频(适合小白学习)

⑤ Python学习路线图(告别不入流的学习)




**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化学习资料的朋友,可以戳这里获取](https://bbs.csdn.net/forums/4304bb5a486d4c3ab8389e65ecb71ac0)**

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值