Python Turtle随机生成葡萄藤时底部多余葡萄的解决求助
解决Python Turtle葡萄藤底部多余葡萄的问题
问题原因
你遇到的底部多余葡萄,是因为第一次绘制葡萄时海龟初始位置没调整对:初始化藤条后,海龟停在了(-70, -300)(藤条底端),虽然你设置了葡萄起始的y=-290,但没有移动海龟到对应的绘制位置,直接进入循环画葡萄,导致第一颗葡萄错画在了藤条底部。
另外,drawGrape函数里的locX和locY变量没有实际作用,属于冗余代码,可以删掉。
修改后的代码
# imports and variables import turtle as trtl import random as rng # starting vine coords y = -300 x = -70 # color list rCol = ["red", "green"] # speed change trtl.tracer(True) trtl.tracer(0, 5) # actual speed # init vine trtl.penup() trtl.goto(x, 300) trtl.pendown() trtl.pencolor("brown") trtl.pensize(20) trtl.goto(-70, y) trtl.penup() # definitions def drawGrape(rad): # take args for radius trtl.pensize(3) trtl.pencolor("green") trtl.fillcolor(rng.choice(rCol)) trtl.left(45) for oLoop in range(2): trtl.begin_fill() trtl.circle(rad, 90) trtl.circle(rad//2, 90) trtl.end_fill() trtl.right(180) trtl.penup() trtl.pendown() # code with established functions # starting grape coords x = -70 y = -290 # 进入循环前先移动到第一颗葡萄的绘制位置 trtl.goto(0, y) for dLoop in range(15): trtl.pendown() drawGrape(rng.randint(10, 30)) trtl.goto(-70, y) trtl.penup() # 直接跳转到下一颗葡萄的位置,逻辑更清晰 trtl.goto(0, y + 40) y += 40 # stop program from closing after finished input()
关键修改点
- 循环开始前添加
trtl.goto(0, y),让海龟直接定位到第一颗葡萄的绘制位置,避免在藤条底端误画。 - 调整循环内的位置跳转逻辑,直接用
y + 40定位下一颗葡萄的位置,代码逻辑更直观。
内容的提问来源于stack exchange,提问作者nebula49dev
相关产品推荐
相关产品推荐

