Это рабочая программа черепахи.
Проверьте, работает ли ваша IDE с этим - с входами 50, 4 и 60 вы получите следующий вывод:
![demo output](https://i.stack.imgur.com/SuVTn.png)
import math
import turtle
def squareFromCurrPosAndRotationAsCenter(bob, s):
"""Starting from current position and rotation, draw a square of sidelength s.
End on same position and rotation you began with."""
# goto first side
bob.penup()
bob.forward(s/2)
bob.pendown()
# draw a half side
bob.right(90)
bob.forward(s/2)
# draw three full sides
for k in range(3):
bob.right(90)
bob.forward(s)
# draw last half side
bob.right(90)
bob.forward(s/2)
# goto back to origin
bob.penup()
bob.right(90)
bob.forward(s/2)
# turn back in original direction
bob.right(180)
def getInt(text, default):
"""Try to parse input to int, return default if not possible"""
try:
return int(input(text))
except:
return default
def symetricSquares():
# Get user input or (when error) use default
size = getInt('Enter size for top square: ', 50)
num_squares = getInt('Enter the amount of squares: ', 4)
angle = getInt('Enter increase of starting angle: ', 60)
# Create a turtle
bob = turtle.Turtle()
bob.speed(max(5,(num_squares * 360/angle)//10))
# outer loop changes starting angle
for startAngle in range(0,360-angle+1,angle):
bob.setheading(startAngle)
# we use a list comp to create the desired square sizes
# you could also do [size, size*2, size*3, size*4] if
# you want always 4 circles
for s in [size*(n+1) for n in range(num_squares)]:
squareFromCurrPosAndRotationAsCenter(bob, s)
turtle.mainloop()
def main():
symetricSquares()
main()
Если это не сработает, вы должны увидеть, пропускаете ли вы пакеты.