Python 这些函数创建不同大小的圆
我遇到了一个问题,当我运行代码时,形成的两个图像应该是彼此的镜像(彼此成90度角),但是第二个图像,倾斜90度,比第一个图像大得多,并且开始的半径比第一个图像大得多。有没有办法使两者完全相同Python 这些函数创建不同大小的圆,python,turtle-graphics,Python,Turtle Graphics,我遇到了一个问题,当我运行代码时,形成的两个图像应该是彼此的镜像(彼此成90度角),但是第二个图像,倾斜90度,比第一个图像大得多,并且开始的半径比第一个图像大得多。有没有办法使两者完全相同 试试这样吧。问题是,您正在将变量作为全局变量传递,因此在变量START_RADIUS中发生的更改将被保存并结转。为了避免这种情况,可以删除全局变量并将变量传递给函数 也许还有其他的方法,但这对我来说很有效 import turtle START_RADIUS = 10 RADIUS_INCREMENT
试试这样吧。问题是,您正在将变量作为全局变量传递,因此在变量START_RADIUS中发生的更改将被保存并结转。为了避免这种情况,可以删除全局变量并将变量传递给函数 也许还有其他的方法,但这对我来说很有效
import turtle
START_RADIUS = 10
RADIUS_INCREMENT = 5
turtle.speed(100)
def tangential_circles(total_circles, start_rad, rad_incr):
for x in range(total_circles):
turtle.circle(start_rad)
start_rad += rad_incr
'''Draw tangential circles.'''
def move_to(position):
'''Move turtle to position. Pick the pen up before moving and put the pen
back down afterwards.
'''
turtle.pu()
turtle.setpos(position)
turtle.pd()
def main():
move_to((-50, 0))
tangential_circles(10, START_RADIUS, RADIUS_INCREMENT)
move_to((100, -10))
turtle.rt(90)
tangential_circles(10, START_RADIUS, RADIUS_INCREMENT)
turtle.exitonclick()
if __name__ == "__main__":
main()
在执行函数“切向圆”的过程中,修改全局变量“开始半径”。第二次调用函数时,下一个圆将使用“开始半径”的最后一个值。如果要再次绘制完全相同的图形,需要将“开始半径”复制到局部变量。按如下方式修改您的函数:
def切向圆(总圆):
r=起始半径
对于范围内的x(总圆):
海龟圈(右)
r+=半径_增量
或乘以而不是递增:
def切向圆(总圆):
对于范围内的x(总圆):
圆(x*半径×增量)
提示:不要使用全局变量。@MarkTolonen所说的。您正在增加开始半径,然后再也不会将其恢复到原始值。
import turtle
START_RADIUS = 10
RADIUS_INCREMENT = 5
turtle.speed(100)
def tangential_circles(total_circles, start_rad, rad_incr):
for x in range(total_circles):
turtle.circle(start_rad)
start_rad += rad_incr
'''Draw tangential circles.'''
def move_to(position):
'''Move turtle to position. Pick the pen up before moving and put the pen
back down afterwards.
'''
turtle.pu()
turtle.setpos(position)
turtle.pd()
def main():
move_to((-50, 0))
tangential_circles(10, START_RADIUS, RADIUS_INCREMENT)
move_to((100, -10))
turtle.rt(90)
tangential_circles(10, START_RADIUS, RADIUS_INCREMENT)
turtle.exitonclick()
if __name__ == "__main__":
main()