Python 这些函数创建不同大小的圆

Python 这些函数创建不同大小的圆,python,turtle-graphics,Python,Turtle Graphics,我遇到了一个问题,当我运行代码时,形成的两个图像应该是彼此的镜像(彼此成90度角),但是第二个图像,倾斜90度,比第一个图像大得多,并且开始的半径比第一个图像大得多。有没有办法使两者完全相同 试试这样吧。问题是,您正在将变量作为全局变量传递,因此在变量START_RADIUS中发生的更改将被保存并结转。为了避免这种情况,可以删除全局变量并将变量传递给函数 也许还有其他的方法,但这对我来说很有效 import turtle START_RADIUS = 10 RADIUS_INCREMENT

我遇到了一个问题,当我运行代码时,形成的两个图像应该是彼此的镜像(彼此成90度角),但是第二个图像,倾斜90度,比第一个图像大得多,并且开始的半径比第一个图像大得多。有没有办法使两者完全相同


试试这样吧。问题是,您正在将变量作为全局变量传递,因此在变量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()