如何使用Python Turtle在绘制的n边形中对齐文本

2024-09-27 07:18:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我是python的初学者,正在用pythonturtle编写一个简单的程序,提示用户输入一个多边形的边长,该程序应该绘制多边形并在多边形下打印出人(我)的姓名。在

我已经让程序工作,但是我似乎不知道如何让文本打印在多边形下,因为边长可以由用户更改,所以多边形有时会消失,这取决于输入的边长有多大。在

程序应该是这样的: end result

但是,我的每次都是这样的: My result

我的代码如下:

import turtle

print('************************************************')
print('This program draws a randomly colored polygon')
print('with side lengths provided by the user.')
print('************************************************')

polygonSideLength = int(input('Enter length of polygon side: \n'))
numberOfSides = int(5 + (28 / 4))
turnAngle = 360 / numberOfSides

import random
randomColor = random.randint(0,5)
if randomColor == 0:
    fillcolor="red"
elif randomColor == 1:
    fillcolor="green"
elif randomColor == 2:
    fillcolor="blue"
elif randomColor == 3:
    fillcolor="cyan"
elif randomColor == 4:
    fillcolor="magenta"
elif randomColor == 5:
    fillcolor="yellow"
print('Length of polygon side =', polygonSideLength)
print('Number of polygon sides =', numberOfSides)
print('Turn angle at each vertex =', turnAngle)
print('Random fill color is', fillcolor)

turtle.begin_fill()
turtle.pen(pensize = 5, pencolor="black", fillcolor = fillcolor)

count = 0
while (count < numberOfSides):
    turtle.forward(polygonSideLength)
    turtle.right(turnAngle)
    count = count + 1
turtle.end_fill()

turtle.setheading(270)
turtle.penup()
turtle.forward(65)
turtle.left(90)
turtle.forward(130)
turtle.pendown()
turtle.write("polygon drawn by: Name", align = "right", font=("Arial", 12, "normal"))
turtle.hideturtle()
turtle.done()

有人能帮我修改一下代码吗?在


Tags: of程序count多边形sideprintturtleelif
1条回答
网友
1楼 · 发布于 2024-09-27 07:18:16

让我们试着用最简单的方法来解决问题。首先,让你的多边形以窗口为中心。我们可以通过添加:

turtle.backward(polygonSideLength / 2)

在填充多边形绘图开始之前。接下来,让我们把它放到窗口的上半部分,而不是下半部分。我们可以通过改变:

^{pr2}$

收件人:

turtle.left(turnAngle)

换个方向画就行了。现在我们已经将多边形水平居中,垂直居中,我们只需在中心线下方写中心文本,该中心线由字体高度所取代(或两个以留出一些空间):

fontSize = 18
...
turtle.goto(0, -fontSize * 2)

turtle.write("polygon drawn by: Name", align="center", font=("Arial", fontSize, "normal"))

将它们放在一起,并进行一些简单的样式更改,我们得到:

import turtle
import random

colors = ["red", "green", "blue", "cyan", "magenta", "yellow"]

print('************************************************')
print('This program draws a randomly colored polygon')
print('with side lengths provided by the user.')
print('************************************************')

polygonSideLength = int(input('Enter length of polygon side: '))
numberOfSides = 5 + (28 // 4)  # I assume this should be something more interesting...
turnAngle = 360 / numberOfSides
fontSize = 18

randomColor = random.randint(0, 5)
fillcolor = colors[randomColor]

print('Length of polygon side =', polygonSideLength)
print('Number of polygon sides =', numberOfSides)
print('Turn angle at each vertex =', turnAngle)
print('Random fill color is', fillcolor)

turtle.pen(pensize=5, pencolor="black", fillcolor=fillcolor)

turtle.backward(polygonSideLength / 2)

turtle.begin_fill()

for count in range(numberOfSides):
    turtle.forward(polygonSideLength)
    turtle.left(turnAngle)

turtle.end_fill()

turtle.penup()
turtle.setheading(270)

turtle.goto(0, -fontSize * 2)

turtle.write("polygon drawn by: Name", align="center", font=("Arial", fontSize, "normal"))
turtle.hideturtle()

turtle.done()

enter image description here

相关问题 更多 >

    热门问题