python中的While循环

python中的While循环,python,Python,我是学习Python的初学者。 我试图理解以下循环的输出 iteration = 0 count = 0 while iteration < 5: for letter in "hello, world": count += 1 print("Iteration " + str(iteration) + "; count is: " + str(count)) iteration += 1 iteration=0 计数=0 当迭代

我是学习Python的初学者。 我试图理解以下循环的输出

iteration = 0
count = 0
while iteration < 5:
    for letter in "hello, world":
        count += 1
    print("Iteration " + str(iteration) + "; count is: " + str(count))
    iteration += 1 
iteration=0
计数=0
当迭代<5时:
对于“你好,世界”中的字母:
计数+=1
打印(“迭代”+str(迭代)+“计数为:”+str(计数))
迭代次数+=1
首先打印
迭代0;计数为:12
。我可以得到这个。 但是我在下一步中错过了一些东西,
iteration1;计数为:24
。 为什么是
24
而不是
22

感谢您的建议

打印后,您不会重置
计数
变量。
出现这种情况是因为您将计数变量定义在
while
循环的范围之外,因此它只会在重新运行脚本时重置(我假设它不在函数中)。
通过在打印变量后重置变量,或者像建议的那样,仅在
中使用
计数
,而
循环范围,它还将重置值,因为在解释器离开范围后,范围中定义的变量将被“丢弃”

因此,为了获得预期的结果,您需要将代码更改为以下内容:

iteration = 0
while iteration < 5:
    count = 0 # this line needs to be added
    for letter in "hello, world":
        count += 1
    print("Iteration " + str(iteration) + "; count is: " + str(count))
    iteration += 1
iteration=0
当迭代<5时:
count=0#需要添加此行
对于“你好,世界”中的字母:
计数+=1
打印(“迭代”+str(迭代)+“计数为:”+str(计数))
迭代次数+=1
的“你好,世界”
中有12个“字母”。原因是这里的
,“
也算作“字母”。因此,如果你只想计算真正的“字母”,你必须排除在计算过程中的特殊字符


在这种情况下,迭代0的计数将是10,而每次迭代将再加上10。

您忘记在每次迭代中重置计数,因为12+12是24。您希望在第一次迭代和第二次迭代之间更改什么?至少这是因为“…它是
24
,而不是
12
”(我猜问题中有一个输入错误……为什么会是22?12+12是24,字符串
hello,world
在循环迭代时不会改变每个
。@MartijnPieters-请参阅我的评论-guestimating:-)更简单:设置
count=0
一次,作为
while
循环中的第一件事。@MartijnPieters谢谢你的建议。我更新了我的代码。谢谢。我不需要修改循环。我只是想知道它是如何工作的。@user6108949你的问题可以简化为,“即使我没有在任何地方显式地将计数重置为0,为什么不将计数重置为0?”@user6108949我对我的答案添加了一些解释。为什么每次迭代如果我排除特殊字符,它将添加10,如果不排除特殊字符,它将添加12?“hello,world”是一个长度为12的字符串。如果您定义了一组“allowed”“chars在一个字符串中进行计数,我们只讨论字母顺序的字符,程序将对字符串的字母进行计数,就好像它是一个长度为10的字符串“helloworld”