用python的turtle画正方形内切圆_尝试在Python中使用Turtle绘制棋盘格-如何填充其他所有正方形?...

Python的新手,我正在尝试绘制棋盘格.我画了板子,但是现在我必须定义一个函数(一个循环),用黑色填充每个其他正方形.我一直在尝试编写一个循环来执行此操作,有人可以帮忙吗?

这是我的代码:

import turtle

def drawGrid():

turtle.penup()

turtle.goto(-300, 250)

turtle.pendown()

turtle.forward(300)

turtle.right(90)

turtle.forward(300)

turtle.right(90)

turtle.forward(300)

turtle.right(90)

turtle.forward(300)

def drawColumns():

for i in range(4):

turtle.right(90)

turtle.forward(37.5)

turtle.right(90)

turtle.forward(300)

turtle.left(90)

turtle.forward(37.5)

turtle.left(90)

turtle.forward(300)

def drawRows():

turtle.left(180)

rows = 0

while rows <= 3:

rows += 1

turtle.forward(37.5)

turtle.right(90)

turtle.forward(300)

turtle.left(90)

turtle.forward(37.5)

turtle.left(90)

turtle.forward(300)

turtle.right(90)

def main():

drawGrid()

drawColumns()

drawRows()

if __name__ == "__main__":

main()

感谢您的所有帮助!

解决方法:

乌龟填充方法适用于形状,即完全包围的区域.因此,与其绘制网格,不如考虑绘制一系列正方形.

因此,让我们先定义一个简单的函数来绘制一个填充的正方形.它需要一个乌龟对象,其大小为边的长度.

进口龟

def draw_filled_square(this_turtle, size):

"""Draw a square by drawing a line and turning through 90 degrees 4 times"""

this_turtle.pendown()

this_turtle.fill(True)

for _ in range(4):

this_turtle.forward(size)

this_turtle.right(90)

this_turtle.fill(False)

this_turtle.penup()

我们可以这样称呼它:

window = turtle.Screen()

myturtle = turtle.Turtle()

square_size = 90

myturtle.goto(-300, 200)

draw__filled_square(myturtle, square_size)

绘制一个正方形.请注意,它将其放回起始位置,因此我们需要在绘制下一个正方形之前先将其移动.

现在,在实践中,只要绘制框的轮廓,我们只需要绘制实心正方形,未实心正方形可以表示负空间.但是出于解释的目的,我还将画出它们.

为未填充的正方形定义函数很容易-只需复制现有函数,但在开始处设置this_turtle.fill(False)即可.

每当需要按重复序列(1,2,3,4,1,2,3,4 …)进行计数时,都需要使用模(余数).模数是余数,因此如果x模y为0,则意味着x可以被y整除.这将转换为代码,好像x%y == 0:

这是一个简单的鼓机来演示:

def drum_loop(x):

# go bang on the fourth beat

if x % 4 == 0:

print("bang!")

else:

print("tish")

# prints tish, tish, tish, bang! tish, tish, tish, bang!

for i in range(1,9):

drum_loop(i)

交替就像重复计数0、1、0、1.

所以我们可以这样画一行:

for i in range(8):

if i % 2 == 0:

draw_filled_square(myturtle, square_size)

else:

draw_unfilled_square(myturtle, square_size)

# move to start of next square

myturtle.forward(square_size)

现在只重复一次并不能解决问题,但是很明显,您可以再次使用模2来使行正确交替.

为此,可以定义一个行函数,该函数将在以黑色方块开头和以白色方块开头之间交替,然后从另一个循环中调用它. (不要忘了回到起点并在每次开始一行时都向下移动).

标签:turtle-graphics,loops,python

来源: https://codeday.me/bug/20191122/2057242.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值