for-loop问题的两个解之间的差异?

2024-09-30 20:33:57 发布

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

我正在尝试解决一个名为MyProgrammingLab的软件中的问题,这个软件在我的python课程中用于教学。问题是:

算术级数是一个数列,其中任意两个连续数之间的距离(或差)相等。这在序列1,3,5,7,…,中距离是2,而在序列6,12,18,24,…,中距离是6。你知道吗

给定正整数距离和正整数n,将变量和从1到n的算术级数的元素和与距离“distance”相关联。例如,如果距离为2,n为10,那么sum将与25关联,因为1+3+5+7+9=25。你知道吗

我的解决方案是:

sum = 0
for n in range(1,n+1,distance):
    sum += n

如果我用10作为n的例子,我得到了正确的答案25,但是这个解决方案不被软件所接受。它说n的值正在被修改。你知道吗

公认的答案是:

sum = 0
for i in range(1,n+1,distance):
    sum += i

如果n=10,两个解给出相同的答案,但我的第一个解给出的错误是n的值被修改了。你知道吗

我的教授说n,i,sum的平均值应该是分开的,这在我的解中是不存在的。为了证明他说要打印出n的值:

sum = 0
n = 10
distance = 2
for n in range(1,n+1,distance):
    print(n)

结果是1、3、5、7和9(10的原始n值正在更改)

使用公认的解决方案:

sum = 0
n = 10
distance = 2
for i in range(1,n+1,distance):
    print(n)

答案是:10,10,10,10(n值不变)

所以我的问题是,如果两个解都得到了正确的答案,那么n值改变或不改变的意义是什么?你知道吗


Tags: 答案in距离for软件range序列解决方案
1条回答
网友
1楼 · 发布于 2024-09-30 20:33:57

这里的问题是,您通常希望避免重复使用变量名。有大量的警告,例如,在许多情况下,有多个函数使用相同的名称作为输入参数是很有用的,这意味着函数之间的输入应该是相似的,但这是一个很好的经验法则。你知道吗

考虑到这一点,看看您的解决方案:

sum = 0
for n in range(1,n+1,distance):
    sum += n

当数字n被设置为10时(我假设它在程序的前面设置了一行n=10?或者因为“MyProgrammingLab”软件,它已经在名称空间中了?),然后继续使用名称n作为在for循环中递增的变量。软件说n的值正在修改是正确的。for循环的每一步都会给n赋值。循环的第一次运行n是1。循环的下一次运行n是(1+距离)等,因此n被重复地重新分配。你知道吗

这导致了n所代表的含义的混淆:它是否意味着有多少个数字被加在一起?或者它是for循环的这个运行中的当前值?为了避免这种情况,最好对作为for循环进程递增的变量使用完全不同的值。官方解决方案使用i,这很好。你也可以说current_value之类的话,或者你发现的任何东西都可以让你更容易记住那一刻的意思。你知道吗

相关问题 更多 >