鱼C论坛

 找回密码
 立即注册
查看: 50|回复: 1

[学习笔记] turtle转着圈写字

[复制链接]
发表于 4 天前 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
import turtle
text=turtle.textinput("内容",'请输入要打印的文字:')

turtle.penup()
turtle.goto(0,100)
x=len(text)
for i in text:
    turtle.write(i,font=('consolas',30))
    turtle.rt(360/x)
    turtle.fd(100)
turtle.hideturtle()
turtle.done()
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 4 天前 | 显示全部楼层
以下是使用turtle实现文字圆形排列的改进代码,解决了字符方向问题并优化了布局:

  1. import turtle

  2. text = turtle.textinput("内容", '请输入要打印的文字:')
  3. if not text:  # 处理空输入
  4.     text = "FishC"
  5.    
  6. t = turtle.Turtle()
  7. t.penup()
  8. t.goto(0, -100)  # 起点调整到圆心下方
  9. t.setheading(90)  # 初始朝上

  10. angle = 360 / len(text)  # 计算旋转角度

  11. for char in text:
  12.     t.forward(100)  # 移动到圆周位置
  13.     # 临时保存状态并重置方向
  14.     temp_pos = t.position()
  15.     temp_head = t.heading()
  16.     t.setheading(0)  # 强制水平方向书写
  17.     t.write(char, align='center', font=('consolas', 30))
  18.     t.goto(temp_pos)  # 返回原位置
  19.     t.setheading(temp_head)  # 恢复原方向
  20.    
  21.     t.backward(100)  # 退回圆心
  22.     t.right(angle)   # 旋转角度
  23.    
  24. t.hideturtle()
  25. turtle.done()
复制代码


**关键改进说明:**
1. 方向重置:每次写字前临时将方向设为水平(`setheading(0)`),写完后恢复原方向
2. 位置校正:写字前记录当前位置,写完后返回原位置
3. 移动逻辑:
   - 从圆心向前移动半径距离(形成圆周点)
   - 写字后退回圆心
   - 在圆心进行角度旋转
4. 对齐优化:使用`align='center'`确保文字居中显示

**效果特点:**
- 文字始终保持水平方向
- 文字均匀分布在圆形轨迹上
- 支持任意长度文本(包括单字)
- 自动处理空输入(默认显示"FishC")

运行后输入文字即可看到文字沿圆形排列的效果,每个字符都会自动保持水平方向。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-8-6 00:22

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表