python使用海龟turtle实现绘制汉字、中文

news2025/3/10 11:10:16

一、实现要求

        使用python中的turtle库绘制指定汉字、中文


二、实现思路

       1、要想实现汉字的绘制,首先需要知道汉字的笔画坐标,汉字的笔画坐标在网上有,需要使用爬虫技术抓取到指定汉字的笔画坐标信息

  2、根据汉字的笔画坐标信息,使用turrle绘制出相应的笔画,即可实现汉字的绘制


三、代码实现

1、导入需要使用到的模块信息:

import turtle
import requests
from urllib.parse import quote
import re

   

2、首先,汉字的笔画坐标信息,可以在这里获取到:

https://bihua.bmcx.com/web_system/bmcx_com_www/system/file/bihua/get_0/

    因此编写函数向该网址发送数据请求信息:

ef get_word_coordinate(target_word):
    """
    获取指定汉字的笔画坐标
    :param target_word:
    :return:
    """
    url = "https://bihua.bmcx.com/web_system/bmcx_com_www/system/file/bihua/get_0/"

    params = {
        'font': quote(target_word).replace("%", "").lower(),
        'shi_fou_zi_dong': '1',
        'cache_sjs1': '20031914',
    }
    response = requests.get(url, params=params)
    content = response.text
    content = content.replace('hzbh.main(', '').split(');document.getElementById')[0]
    content = content.split('{')[-1].split("}")[0]
    pattern = re.compile(r'\w:\[(.+?)\]')
    result = re.split(pattern, content)
    order_xy_routine = []
    words_cnt = 0
    for r in result:
        sec = re.findall(r'\'.+?\'', r)
        if len(sec):
            orders = sec[1].split('#')
            for order in orders:
                order_str = re.findall(r'\(\d+,\d+\)', order)
                order_xy = [eval(xy) for xy in order_str]
                order_xy_routine.append(order_xy)
            words_cnt += 1
    print(order_xy_routine)
    return order_xy_routine

  该请求需要传递三个参数。数据的发回结果是一个html格式的数据,需要使用到正则表达式进行笔画坐标的解析和处理,最终得到指定汉字的坐标信息,是一个er二维的列表,形式如下所示:

[[(666, 36), (696, 66), (480, 108), (300, 138)], [(510, 102), (510, 558)], [(510, 318), (690, 318), (648, 300), (606, 318)], [(342, 234), (372
, 258), (372, 558), (342, 582), (372, 558), (696, 558), (648, 540), (600, 558)], [(36, 114), (228, 114), (270, 84), (228, 114), (90, 330), (48
, 354), (90, 330), (246, 330), (288, 300), (246, 330), (210, 522), (192, 594), (162, 642), (120, 690), (30, 750)], [(84, 390), (120, 474), (15
6, 540), (204, 600), (270, 654), (318, 678), (372, 690), (726, 702)]]
 

3、编写函数,调用汉字笔画坐标的获取方法,根号就坐标信息,实现指定汉字的绘制

def draw_words(target_words, startx, starty):
    """
    绘制汉字
    :param target_words:
    :param startx:
    :param starty:
    :return:
    """
    turtle.color("black", "black")  # 设置画笔颜色
    turtle.pu()  # 抬起画笔
    coordinates = get_word_coordinate(target_words)
    for index, coordinate in enumerate(coordinates):
        turtle.goto((startx + coordinate[0][0]) / 2, -(starty + coordinate[0][1]) / 2)
        turtle.pd()
        for xy in coordinate:
            x, y = xy
            turtle.goto((startx + x) / 2, -(starty + y) / 2)
        turtle.pu()

  传入三个参数,第一个参数是要绘制的汉字,一次只能一个,如果要实现绘制多个,则调用该方法多次。第二三个参数分别是绘制汉字的起始x、y坐标,用于控制汉字绘制的位置。

4、编写主函数,调用绘制汉字的方法,传入要绘制的汉字,实现汉字的绘制效果

if __name__ == '__main__':
    #要绘制的汉字
    words = ['你','好']
    start_x = -900
    for w in words:
        draw_words(w, start_x, -300)
        start_x+=800
    turtle.done()

  注意画笔的坐标要设置为负数。


四、运行效果

 1、

2、 

 3、

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/542963.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于Kubernetes的电商平台部署:实现高可用、弹性伸缩与容器化管理

▲ 点击上方"DevOps和k8s全栈技术"关注公众号 背景:电商平台的高可用性和可伸缩性是保证用户体验和业务发展的重要因素。Kubernetes(K8s)作为一个容器编排平台,可以提供强大的容器管理和自动化部署能力,使得…

人手一个 Midjourney,StableStudio 重磅开源!

公众号关注 “GitHubDaily” 设为 “星标”,每天带你逛 GitHub! 上个月 19 号,Stability AI 开源大语言模型 StableLM,模型的 Alpha 版本有 30 亿和 70 亿参数,并支持商用。 过去仅一个月,Stability AI 再次…

鉴权管理系统(JWT技术架构)——SpringBoot2+Vue2(一定惊喜满满,万字长文)

初衷: 一直不太理解整个前后端的鉴权,跨域等问题,抽空两个晚上整理出万字文章,也是对于自己的一个交代,现在共享出来,希望大家也能受益,将使用过程在这里一一详述,还是多说一句&…

简述 JavaScript 中 prototype

简述 JavaScript 中 prototype 这篇笔记主要捋一下这么几个概念: JS 的继承构造函数new 的作用及简易实现__proto__ & prototype同样的方法,class 和 prototype 中分别是怎么实现的 基础概念 JS 是通过 prototype chaining 实现继承的语言&#…

linux(缓冲区学习)

目录: 1.对进程是如何和这个进程打开文件进行关联的总结 2.标准输出和标准错误都是往显示器上打印--有何区别 3.缓冲区 --------------------------------------------------------------------------------------------------------------------------- 1.对进程是…

双模齐下,提质增效:知微携手CODING共创BizDevOps体系新篇章

为了提升工作和管理效率,工具建设是许多企业不得不面对的现实,然而在工具建设落地过程中,往往存在一系列的问题。如不同组织、部门之间互不相通,各自为政,工具流程与实际工作所需不符,导致工具建设的结果是…

做实大模型的产业价值,度小满深耕“NLP+金融”

2023年的五月,称得上一句AI之夏。 大模型层出不穷、扎堆发布。 这一轮由大模型推动的AI热潮中, NLP(自然语言处理)技术与金融落地场景的结合备受期待。金融行业是数字化、智能化的先行者,也是大模型技术落地的最佳领域…

chatgpt赋能Python-python3h怎么操作

Python3 SEO操作指南 Python3语言已成为计算机编程领域的标准和主要工具之一。SEO(Search Engine Optimization)是一种促进网站在搜索引擎结果中排名的技术。Python3也可以用来执行SEO操作,本文将介绍如何使用Python3进行SEO操作&#xff0c…

替换字符串的关键字KeywordProcessor

【小白从小学Python、C、Java】 【等级考试500强双证书考研】 【Python-数据分析】 替换字符串的关键字 KeywordProcessor [太阳]选择题 以下说法错误的一项是: from flashtext import KeywordProcessor myKP KeywordProcessor() myKP.add_keyword(English, Math) …

别在碳排放问题上大搞双重标准!

* * * 原创:刘教链 * * * 隔夜比特币从26.5k一线奋力跃升,回升至27.5k一线。 最近美国有些人又要对比特币的碳排放搞双重标准了。说的是比特币挖矿烧掉了多少多少电力,折合多少多少碳排放,因此应当加征多少多少排放税&#xff0c…

springboot+java电影院售票订票选座推荐系统554c6

主页是注册,登录,搜索。 用户在注册之前可以进行搜索查询现在上映的和即将上映的影片信息,但是不能在线购票。购票需注册登录之后方可。 用户可以修改自己注册后的账户信息,注册成功后直接登录。退出网页后,取消登录信…

ChatGPT APP来了,还可以直接订阅Plus账号,操作流程都这篇里面

大家好,我是可夫小子,关注AIGC、读书和自媒体。解锁更多ChatGPT、AI绘画玩法。加:keeepdance,备注:chatgpt,拉你进群。 OpenAI宣布推出聊天机器人ChatGPT的APP,目前已上架苹果App Store&#xf…

三十八、流控效果、热点数据限流、熔断降级、push到配置中心nacos

1、流控效果 流控效果是指请求达到流控阈值时应该采取的措施,包括三种: 快速失败:达到阈值后,新的请求会被立即拒绝并抛出FlowException异常。是默认的处理方式。 warm up:预热模式,对超出阈值的请求同样是…

OpenAI的巨额捐款背后,马斯克到底捐了多少?

来源:Techcrunch 作者:Mark Harris 编译:巴比特 自 2018 年 2 月退出 OpenAI 董事会以来,埃隆马斯克(Elon Musk)一直对 OpenAI 深感失望,这已不是什么秘密,最终他在一封公开信中呼吁…

每日涨停个股增量加入股票池,持续跟踪走势!股票量化分析工具QTYX-V2.6.5

功能概述 目前A股市场的股票每天是有限制最大涨幅的,也就是涨停的概念。比如主板个股最大涨幅是10%,创业板个股最大涨幅是20%等。 对于个股而言并不是随随便便就能被推到涨停板的。或是因为股票发生了重大的利好(资产重组、政策利好、业绩暴增…

【Linux】——常见指令及权限理解

文章目录 1. 前言2. 用户管理3. 常见基本指令3.1 ls指令3.2 pwd指令3.3 cd指令3.4 touch指令3.5 mkdir指令3.6 rmdir指令和rm指令3.7 man指令3.8 cp指令3.9 mv指令3.10 cat指令3.11 more指令3.12 less指令3.13 head指令3.14 tail指令3.15 时间相关的指令3.16 cal指令3.17 find指…

价格战一触即发!阿里云、腾讯云、移动云“先降为敬”

‍数据智能产业创新服务媒体 ——聚焦数智 改变商业 5月16日,中国第三大云计算厂商腾讯云,宣布对多款核心云产品降价;随后,移动云也宣布了对多款云产品降价。如今,已有三家云厂商对产品进行降价。开第一枪的便是市场份…

MoJo:比Python快35000倍的全新编程语言!

大家注意:因为微信最近又改了推送机制,经常有小伙伴说错过了之前被删的文章,比如前阵子冒着风险写的爬虫,再比如一些限时福利,错过了就是错过了。 所以建议大家加个星标,就能第一时间收到推送。&#x1f44…

炼丹师,这是你的梦中情炉吗?

一, 炼丹之痛 无论是学术研究还是工业落地,pytorch几乎都是目前炼丹的首选框架。 pytorch的胜出不仅在于其简洁一致的api设计,更在于其生态中丰富和强大的模型库。 但是我们会发现不同的pytorch模型库提供的训练和验证代码非常不一样。 torchvision官方…

社区供稿 | 中文 LangChain 项目的实现开源工作

Chinese-LangChain 是 yanqiangmiffy 同学的开源项目https://hf.co/spaces/ChallengeHub/Chinese-LangChainhttps://github.com/yanqiangmiffy/Chinese-LangChain 中文 langchain 项目,基于 ChatGLM-6b langchain 实现本地化知识库检索与智能答案生成。 LangChain …