前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python与分形0016 - 【教程】字符矩阵

python与分形0016 - 【教程】字符矩阵

作者头像
滚神大人
发布2021-12-10 09:15:38
4740
发布2021-12-10 09:15:38
举报
文章被收录于专栏:趣Python

今天写一个简单点的教程,画一个字符矩阵,成品图如下:

想要打印这样一个字符矩阵,需要具备如下一些基本知识:

  1. turtle如何画字符?
  2. turtle的画布上如何排版?

如何画字符?

turtle提供了一个函数,write,可以画文本,具体参数可以参考手册:

turtle.write(arg, move=False, align="left", font=("Arial", 8, "normal")) Write text - the string representation of arg - at the current turtle position according to align (“left”, “center” or “right”) and with the given font. If move is true, the pen is moved to the bottom-right corner of the text. By default, move is False.

字符的Unicode码可以在这个网站上查到:

https://unicode-table.com/

比如,“安”字的unicode码是5B89。

在python中,可以通过ord函数得到一个字符串的unicode码:

代码语言:javascript
复制
>>> x=u'安'
>>> x
'安'
>>> hex(ord(x))
'0x5b89'

通过write函数写一个“安”字,楷体,300p:

代码语言:javascript
复制
turtle.write(u'安', align="center", font=("simkai", 300, "normal"))

画布上如何排版?

又得用点数学知识了。

假设我们画COUNT*COUNT的矩阵,每个字符间距为DIST,为了保证矩阵居中绘制,起始位置必须在左上角位置:

代码语言:javascript
复制
STARTX=-DIST*COUNT//2
STARTY=DIST*COUNT//2

当遍历整个COUNT*COUNT时,我们可以通过求商和取余得到行列值,确定每个字符的位置。

这样就可以很简单的推导出源码了:

代码语言:javascript
复制
# coding: utf-8

import turtle
import math
import time

turtle.setup(width=1.0, height=1.0, startx=None, starty=None)
#turtle.tracer(0)
turtle.ht()

turtle.up()
COUNT=19
DIST=30
FONTSIZE=16
STARTX=-DIST*COUNT//2
STARTY=DIST*COUNT//2

time.sleep(6)

turtle.goto(STARTX, STARTY)
for c in range(COUNT*COUNT):
    x = c%COUNT
    y = c//COUNT
    turtle.goto(STARTX+DIST*x, STARTY-DIST*y)
    turtle.write(chr(0x2600+c), align="center", font=("Arial", FONTSIZE, "normal"))
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-12-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 趣Python 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 如何画字符?
  • 画布上如何排版?
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档