Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在'之外定义变量;而';环_Python_Loops_While Loop - Fatal编程技术网

Python 在'之外定义变量;而';环

Python 在'之外定义变量;而';环,python,loops,while-loop,Python,Loops,While Loop,[背景信息:我目前正在麻省理工学院edx网站上完成一门关于Python编程的课程,并且正在研究while循环部分。] 我一直在努力解决的问题如下:“编写一个while循环,将值1和end相加,包括在内。end是我们为您定义的变量。” 当我试图回答这个问题时,我说: while end != 0: total = 0 + end end = end-1 print total 我为“end”输入的任何值的返回结果都是1,这显然是不正确的 但是,当我再次尝试时,我在循环外部定义了“

[背景信息:我目前正在麻省理工学院edx网站上完成一门关于Python编程的课程,并且正在研究while循环部分。]

我一直在努力解决的问题如下:“编写一个while循环,将值1和end相加,包括在内。end是我们为您定义的变量。”

当我试图回答这个问题时,我说:

while end != 0:
    total = 0 + end
    end = end-1
print total
我为“end”输入的任何值的返回结果都是1,这显然是不正确的

但是,当我再次尝试时,我在循环外部定义了“total”,并将:

total = 0
while end != 0:
    total = total + end
    end = end-1
print total
这管用


我的问题是:为什么我输入的第一个代码不起作用?在循环外部定义“总计”的意义是什么?

当您在while循环内部定义
total
时,它会在每次循环时将自身重新分配到
0+end
,在程序结束时为1。当您在外部定义它时,它将
total
设置为0,然后对于
中的每个循环,
将继续向其添加值


另外,请注意,您可以将
total=total+end
写成
total+=end
,它的意思是相同的,但实际上要快一点。

问题在于
total=0+end
。这样做的目的是将
end
的当前值分配给
total
。由于
end
最终变成
1
,这就是总数。您需要将
end
添加到正在运行的
total

total = total + end
total = 0
total = 0 + 10
total = 10 + 9
total = 19 + 8
...
total = 54 + 1
或:


在第一个代码块中,每次运行
total=0+end
,都会重置
total

total = 0 + 10
total = 0 + 9
total = 0 + 8
...
total = 0 + 1
最后一行是
total=0+1
,等于
1

在第二个循环中,您使用的是以前的值
total

total = total + end
total = 0
total = 0 + 10
total = 10 + 9
total = 19 + 8
...
total = 54 + 1

每次通过循环时,total都会增加并被利用。在第一个循环中,您在每个循环中过度写入总计。

在while循环中包含
total
的示例中,每次
end!=0
,并且在
end
等于1之后立即打印它(
end=end-1
将使您脱离while循环,而end等于1)


在另一个示例中,您没有重新定义while循环中的每次行程
total
,这是在累积您期望的答案

它的可能副本实际上与范围无关。每个循环都有本质上不同的内容。