Python Turtle库绘图问题:如何利用元组列表绘制带X的房子
问题解决思路
核心问题1:代码执行顺序错误
你的main()函数里,wn.mainloop()被放在了定义列表和调用绘图函数之前。mainloop()是turtle的事件循环,会阻塞后续代码执行,导致后面的ls定义和drawhouse(t, ls)根本不会运行。必须把wn.mainloop()移到所有绘图代码之后。
核心问题2:绘图函数的无效代码
drawhouse函数里第一行fwd, lt = ls是错误的,ls是包含多个元组的列表,不能直接解包成单个元组的两个值,这行代码多余且会引发ValueError,直接删掉即可。
修正后的完整代码
def drawhouse(t, ls): for fwd, lt in ls: t.forward(fwd) t.left(lt) def main(): import turtle wn = turtle.Screen() t = turtle.Turtle() wn.bgcolor("Cyan") wn.title("Drawing a house") # 先定义列表并调用绘图函数 ls = [(100, 90), (100, 90), (100, 240), (100, 240), (100, 285), (140, 225), (100, 225), (100, 0)] drawhouse(t, ls) # 最后启动事件循环 wn.mainloop() main()
额外调整建议(可选)
如果绘制出的图形和预期的「内部带X的房子」有偏差,可以微调ls里的参数:
- 房子主体是矩形,需要4组(边长, 90)的元组,你当前的前两个元组是矩形的两条边,后续转向角度可以再核对
- 内部X的对角线长度可以用勾股定理计算(100*√2≈141.42),你用的140可以微调成更精确的值,让X的端点刚好落在房子的对角上
内容的提问来源于stack exchange,提问作者oMendigoPadeiro
相关产品推荐
相关产品推荐

