我的sum var没有像希望的那样充当容器

2024-10-01 17:35:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我编写这段代码是为了执行两个序列:1——绘制三角形的递归显示,停留在边界框内,并返回所有绘制区域的总和;2——迭代地重复

我认为存在一个范围问题,因为“sum”不起作用。然而,我不知道如何才能让海龟呆在盒子里,而不改变它随机产生的距离和角度。你知道吗

import turtle
import random
import math

def BOUNDING_BOX():
    #creates a bounding box
    turtle.up()
    turtle.setpos(-200, -200)
    turtle.down()
    turtle.fd(400)
    turtle.left(90)
    turtle.fd(400)
    turtle.left(90)
    turtle.fd(400)
    turtle.left(90)
    turtle.fd(400)
    turtle.left(90)
    turtle.up()
    turtle.setpos(0, 0)

def arrowRecur(quan, sum):
    if quan == 0: # main() blocks negatives
        #base case
        return sum
    else:
        #recursive call
        curr_sum = drawTri()
        turtle.fd(MAX_DISTANCE())
        turtle.right(MAX_ANGLE())
        sum += curr_sum
        arrowRecur(quan - 1, sum)


def arrowIter(quan, sum):
    while quan > 0:
        curr_sum = drawTri()
        turtle.fd(MAX_DISTANCE())
        turtle.right(MAX_ANGLE())
        sum += curr_sum
        quan -= 1
    else:
        return sum


def main():
    #initializes program
    sum = 0
    quan = int(input("Enter in the quantity of triangles (0-500): "))

    if 0 > quan or quan > MAX_FIGURES():
        raise ValueError("Invalid Input: Execution Terminated")
    else:
        turtle.colormode(255)
        BOUNDING_BOX()
        sum = arrowRecur(quan, sum)
    print("Our total painted area is ",sum," units.")
    input("Press ENTER to continue to iterative version.")

main()

Tags: importboxmaindef绘制leftelsemax
1条回答
网友
1楼 · 发布于 2024-10-01 17:35:04

如果你能写这段代码,你应该能够调试它!你为什么不自己调试?对于将来的问题,您应该遵循以下准则: Are there legitimate "fix my code" questions?

具体来说:“到目前为止,您试图隔离问题的故障排除步骤。”

对于求和问题,有两件事:

>>> 1/2
0

所以这行计算的面积是0:

return ((1/2)*base*height)

在递归中,不更新sum的值:

arrowRecur(quan - 1, sum)

应该是

sum = arrowRecur(quan - 1, sum)
return sum

为了让海龟呆在盒子里,你需要添加更多的代码来检查它的坐标不会超过盒子的边缘。你知道吗

相关问题 更多 >

    热门问题