不二如是 发表于 2022-12-24 18:45:10

17 - 一道练习题

本帖最后由 不二如是 于 2022-12-27 19:21 编辑



请按照下面的要求画出上面示例图:

将一个圆移动到左上角,然后将其他元素挨着该圆形依次向右排成一行,这些元素都需要对齐于圆形对象的上边沿。
提示:

可以自己一个一个拼,也可以循环
期待你的答案。

我们先创建第一个圆,并且将其位置设置到左上角 UL:

circle = Circle().to_corner(UL, buff=1)
然后创建一个对象数组:

mobs =
元素顺序依次向右排成一行。

因为要求元素要对齐于圆形对象的上边沿,所以通过循环来统一设定就好:

      for i in range(len(mobs)-1):
            mobs.next_to(mobs, RIGHT, aligned_edge=UP)
最后将 mobs 添加到屏幕上:

self.add(*mobs)
搞定!

答案源码:

zhangjinxuan 发表于 2022-12-24 19:56:52

有点不懂{:10_277:}

傻眼貓咪 发表于 2022-12-24 21:40:50

zhangjinxuan 发表于 2022-12-24 19:56
有点不懂

我的答案是:运用 turtle 模块画出来。
import turtle

def move(t, distance = 0):
    t.penup()
    t.goto(origin + distance, 0)
    t.pendown()

size = 300
screen = turtle.Screen()
origin = size / 2 - screen.window_width() / 2
t = turtle.Turtle()

move(t)
r = size / 6
t.circle(-r)

move(t, 80)
for i in range(4):
    t.forward(size / 3)
    t.right(90)

move(t, 250)
for n, i in enumerate(range(5)):
    t.right(72 + bool(n) * 72)
    t.forward(size / 8)
    t.left(72)
    t.forward(size / 8)
t.setheading(0)

move(t, 350)
t.setheading(-60)
for i in range(3):
    t.forward(size / 3.5)
    t.right(120)

t.setheading(0)
move(t, 450)
t.circle(-r)

t.setheading(0)
move(t, 560)
for n, i in enumerate(range(5)):
    t.right(72 + bool(n) * 72)
    t.forward(size / 8)
    t.left(72)
    t.forward(size / 8)

turtle.done()
至於背景颜色和形状的颜色我没有写(因为太懒了{:10_280:} )
结果:

zhangjinxuan 发表于 2022-12-25 09:02:53

傻眼貓咪 发表于 2022-12-24 21:40
我的答案是:运用 turtle 模块画出来。

至於背景颜色和形状的颜色我没有写(因为太懒了 )
...

编程题,我**以为是什么思维题,没看板块{:10_282:}

hveagle 发表于 2022-12-25 09:25:31

我的答案是:一脸茫然

高山 发表于 2022-12-25 11:24:46

zhangjinxuan 发表于 2022-12-24 19:56
有点不懂

我的答案是:

不二如是 发表于 2022-12-27 19:17:05

傻眼貓咪 发表于 2022-12-24 21:40
我的答案是:运用 turtle 模块画出来。

至於背景颜色和形状的颜色我没有写(因为太懒了 )
...

不错,最好还是用 Manim

Mike_python小 发表于 2022-12-27 19:21:13

我的答案是:万物之源
print("Hello, world!")
页: [1]
查看完整版本: 17 - 一道练习题