我有一个函数cup()
,它应该绘制一个类似量杯的三面正方形。虽然我认为我正确编写了该代码,但调用它的函数cups()
无法正常工作,如图片所示。任何人都可以看到我的问题是什么?我试着改变它前进的长度,但那并没有做任何事情。它一直在第一个广场的顶端结束。谢谢你的帮助。
def cup(t,sideLength):
for i in range(3):
t.forward(sideLength)
t.left(90)
t.pu()
t.forward(sideLength)
t.left(90)
t.pd()
def cups(t,initial,incr,reps): #needs work
'''calls the function cup repeatedly to draw a set of measuring cups of
increasing size.'''
for i in range(reps):
cup(t,initial)
t.pu()
t.right(90)
t.fd(incr)
t.lt(90)
t.pd()
initial += incr
import turtle
s = turtle.Screen()
t = turtle.Turtle()
cups(t, 50, 30, 4)
https://www.raspberrypi.org/documentation/installation/installing-images/
答案 0 :(得分:0)
代码存在一些问题。
功能杯过于复杂 - 总是首先测试基本功能 - 有两种方法可以做到,一种有范围而另一种没有。我不是为了简单而做了那个。
然后问题在于考虑龟到底在哪里以及如何增加步数 - 你在增加但是从中心容器均匀地去,你必须考虑增加的分布 - 一半到顶部和一半到底部。
import turtle
t = turtle.Turtle()
def cup(sideLength):
"""Draws one cup and returns to origin"""
t.pd()
t.forward(sideLength)
t.left(90)
#t.pu()
t.forward(sideLength)
t.left(90)
t.forward(sideLength)
t.pu()
t.left(90)
t.forward(sideLength)
def cups(initial,incr,reps): #needs work
'''calls the function cup repeatedly to draw a set of measuring cups of increasing size.'''
start = initial
for i in range(reps):
cup(start)
t.pu()
t.forward(incr/2)
t.left(90)
start += incr
#cup(50)
cups(50, 30, 4)
按照代码流程添加注释,以确保您了解每行的操作。
答案 1 :(得分:0)
您的cup()
函数具有正确的步骤,但不幸的是将一些函数置于循环之后的循环中:
from turtle import Turtle, Screen
def cup(turtle, sideLength):
for _ in range(3):
turtle.forward(sideLength)
turtle.left(90)
turtle.penup()
turtle.forward(sideLength)
def cups(turtle, initial, incr, reps):
'''
Calls the function cup() repeatedly to draw
set of measuring cups of increasing size.
'''
for length in range(0, incr * reps, incr):
cup(turtle, initial + length)
turtle.forward(incr / 2)
turtle.left(90)
turtle.pendown()
screen = Screen()
tortoise = Turtle()
cups(tortoise, 50, 30, 4)
screen.exitonclick()
加上你在杯子之间移动多少的调整可以解决你的问题。我已经说明了在for ... in range(...)
函数中使用cups()
的另一种方法。我还让cup()
稍微了解了cups()
的内容,以避免额外的转弯,以平稳的方式绘制图形。