我是编程新手......
L = [1, 2, 3, 4, 5]
n = 1
S = sum(L[0:n])
while n < 5:
n += 1
print(n) # output: 5
print(S) # output: 1
为什么python不会更改n
函数中的参数sum
,而它本身会更改n
?有人可以解释其背后的逻辑,并告诉我如何更改n
函数中的sum
,以便S
变为15而不是1?
答案 0 :(得分:3)
Python是imperative programming language。这意味着python程序是一系列语句,可以改变程序的状态(例如通过为变量赋值)。一旦语句执行,它就不再对程序产生影响。换句话说:语句可以改变程序的状态,但只能改变一次。
执行语句S = sum(L[0:n])
时,sum(L[0:n])
已评估,结果将分配给变量S
。 L[0:n]
评估为[1]
,[1]
的总和为1.因此,在本声明的最后,S
的值为数字1。
您的误解是S
“记得”它等于sum(L[0:n])
,但事实并非如此。 S
只是数字1.如果您更改n
或L
的值,则无关紧要。数字1保持数字1.如果您希望更改S
,则必须使用另一个赋值语句显式更新它:
L = [1, 2, 3, 4, 5]
n = 1
S = sum(L[0:n])
while n < 5:
n += 1
S = sum(L[0:n])
print(n) # output: 5
print(S) # output: 15
旁注:S
在n
更改时会自动更新declarative programming languages的语言。
答案 1 :(得分:2)
它仅在开始时评估S = sum(L[0:n])
,它不是更新的函数。更改此设置的一种方法是在更新n:
L = [1, 2, 3, 4, 5]
n = 1
while n < 5:
n += 1
S = sum(L[0:n])
print(n, S)