我的程序使用Turtle绘制形状。它显示以下菜单:
如果用户输入“ 4”,则程序应按列表中的顺序绘制形状。
[问题] :因此它应该绘制一个带有随机值的圆形和矩形。我在尝试执行此操作以及在用户输入“ 3”时删除形状时遇到问题。我留下了一个示例,说明如何使用随机函数绘制圆来接近图形。
此外,如果choice == 3(删除形状),我的代码应该是什么?
非常感谢所有帮助。谢谢!
import turtle
import random
def circle():
turtle.pensize(1)
turtle.penup()
turtle.goto(x, yCoordinate)
turtle.pendown()
turtle.color(color)
turtle.circle(radius)
turtle.hideturtle()
turtle.done()
def rectangle():
turtle.penup()
turtle.goto(xRectangle - width / 2, yRectangle - height / 2)
turtle.pendown()
turtle.color(colorRectangle)
turtle.goto(xRectangle - width / 2, yRectangle + height / 2)
turtle.goto(xRectangle + width / 2, yRectangle + height / 2)
turtle.goto(xRectangle + width / 2, yRectangle - height / 2)
turtle.goto(xRectangle - width / 2, yRectangle - height / 2)
turtle.hideturtle()
turtle.done()
def remove():
pass
def shapes():
turtle.pensize(1)
turtle.penup()
turtle.goto(x.random, yCoordinate.random)
turtle.pendown()
turtle.color(random)
turtle.circle(radius.random)
COMMANDS = [None, circle, rectangle, remove, shapes, exit]
ABORT = len(COMMANDS) - 1
PROMPT = "1. Draw a circle\n2. Draw a rectangle\n3. Remove Shapes\n4. Draw Shapes\n5. Quit"
while True:
choice = turtle.numinput("Pick a number", prompt=PROMPT, default=ABORT, minval=1, maxval=ABORT)
if choice == 1:
x = int(input("Enter the X Coordinate: "))
yCoordinate = int(input("Enter the Y Coordinate: "))
radius = int(input("Enter the Radius: "))
color = str(input("Enter desired Color (choose red, yellow, blue or green): "))
xCoordinate = (x - radius)
if choice == 2:
xRectangle = int(input("Enter the X Coordinate: "))
yRectangle = int(input("Enter the Y Coordinate: "))
height = int(input("Enter Height: "))
width = int(input("Enter Width: "))
colorRectangle = str(input("Enter desired Color (choose red, yellow, blue or green): "))
if choice == 3:
print(1)
if choice == 4:
print(shapes)
if choice is None:
choice = ABORT
else:
choice = int(choice)
if 1 <= choice <= ABORT:
COMMANDS[choice]()
turtle.mainloop() # never reached
答案 0 :(得分:1)
您的函数缺少参数,使用“ elif”也是一种好习惯,它减少了您执行的检查次数,同时也减少了逻辑错误
此外,请确保参考本文档以获取语法帮助! https://docs.python.org/3.3/library/turtle.html?highlight=turtle#turtle.clear
我对您的代码进行了一些修改,以实现您所需要的
import turtle
import random
# Create a turtle object
myturtle = turtle.Turtle()
def circle(x, yCoordinate, radius, color):
myturtle.pensize(1)
myturtle.penup()
myturtle.goto(x, yCoordinate)
myturtle.pendown()
myturtle.pencolor(color)
myturtle.circle(10)
myturtle.hideturtle()
def rectangle(xRectangle, yRectangle, width, height, colorRectangle):
myturtle.penup()
myturtle.goto(xRectangle - width / 2, yRectangle - height / 2)
myturtle.pendown()
myturtle.pencolor(colorRectangle)
myturtle.goto(xRectangle - width / 2, yRectangle + height / 2)
myturtle.goto(xRectangle + width / 2, yRectangle + height / 2)
myturtle.goto(xRectangle + width / 2, yRectangle - height / 2)
myturtle.goto(xRectangle - width / 2, yRectangle - height / 2)
myturtle.hideturtle()
def rremove():
myturtle.clear()
def shapes():
myturtle.pensize(1)
myturtle.penup()
myturtle.goto(x.random, yCoordinate.random)
myturtle.pendown()
myturtle.color(random)
myturtle.circle(radius.random)
COMMANDS = [None, circle, rectangle, rremove, shapes, exit]
ABORT = len(COMMANDS) - 1
PROMPT = "1. Draw a circle\n2. Draw a rectangle\n3. Remove Shapes\n4. Draw Shapes\n5. Quit"
COLORS = ['red', 'yellow', 'blue', 'green']
while True:
choice = turtle.numinput("Pick a number", prompt=PROMPT, default=ABORT, minval=0, maxval=ABORT)
choice = int(choice)
if choice == 1:
x = int(input("Enter the X Coordinate: "))
yCoordinate = int(input("Enter the Y Coordinate: "))
radius = int(input("Enter the Radius: "))
color = str(input("Enter desired Color (choose red, yellow, blue or green): "))
xCoordinate = (x - radius)
circle(x, yCoordinate, radius, color)
elif choice == 2:
xRectangle = int(input("Enter the X Coordinate: "))
yRectangle = int(input("Enter the Y Coordinate: "))
height = int(input("Enter Height: "))
width = int(input("Enter Width: "))
colorRectangle = str(input("Enter desired Color (choose red, yellow, blue or green): "))
rectangle(xRectangle, yRectangle, width, height, colorRectangle)
elif choice == 3:
COMMANDS[choice]()
elif choice == 4:
#Here you can adjust the lower and upper bounds of the random number
x, yCoordinate, color, radius = random.randint(10,40), random.randint(10,200), random.choice(COLORS), random.randint(10,200)
COMMANDS[1](x, yCoordinate, radius,color)
print("Drew a circle")
xRectangle, yRectangle, width, height, colorRectangle = random.randint(10,200), random.randint(10,200), random.randint(10,200),random.randint(10,200), random.choice(COLORS)
COMMANDS[2](xRectangle, yRectangle, width, height, colorRectangle)
print("Drew a rectangle")
elif choice == 5:
COMMANDS[choice]()
else:
print("Invalid, try again...")
continue