如何用for range循环逐次降低函数参数值(海龟绘图场景)
解决Python循环中递减函数参数的问题
嘿,我明白你想实现的效果——每次循环调用myhouse时,房子的尺寸依次是初始值的100%、80%、60%。现在你的代码里每次都把housesize乘以0.8,这样三次迭代用的都是初始值的80%,显然不符合预期。咱们来调整一下:
核心思路
根据循环的索引i来计算每次的缩放比例:
- 第1次循环(i=0):比例为
1.0(100%) - 第2次循环(i=1):比例为
0.8(80%) - 第3次循环(i=2):比例为
0.6(60%)
这个比例可以用公式1.0 - 0.2 * i来生成,每次迭代递减0.2(也就是20%)。
修改后的代码
def scene(housesize): for i in range(3): # 根据循环索引计算当前的房子尺寸比例 scale = 1.0 - 0.2 * i hs = housesize * scale myhouse(hanzi, hs) # 移动画笔到下一个房子的位置(可按需调整偏移量) hanzi.pu() hanzi.goto(hanzi.xcor() + 150, hanzi.ycor()) # 相对移动比固定坐标更灵活 hanzi.pd() scene(100)
改动点说明
- 比例计算:用
1.0 - 0.2 * i替代固定的0.8,确保每次迭代的尺寸按预期递减 - 位置优化:把固定的
goto(200,20)改成相对当前位置移动,避免所有房子堆在同一位置 - 可读性提升:新增
scale变量,让尺寸计算的逻辑更直观,后续调整递减幅度也更方便
如果之后你想修改递减幅度(比如每次减10%),只需要把0.2改成0.1;如果想增加循环次数,直接修改range()里的数字,比例会自动适配。
内容的提问来源于stack exchange,提问作者Airas Khan
相关产品推荐
相关产品推荐

