Python循环 - 帮助我理解

时间:2017-04-07 17:29:23

标签: python for-loop character

我有python生成随机代码,在本例中为“Lucy”,它打印如下:

L
Lu
Luc
Lucy

我不明白它是如何工作的,有人可以解释一下吗?

import sys
mysteryString = sys.argv[1]
print("~ testing with mysteryString = {} ~".format(mysteryString))

#Above code was provided for me

charCount = ""
for mysteryChar in mysteryString:
    charCount = charCount + mysteryChar
    print(charCount)

为什么charCount在循环外初始化?为什么它以它的方式打印字符?

3 个答案:

答案 0 :(得分:1)

charCount在循环之外初始化的原因是因为范围。

在主体的主要部分中定义的变量属于“全局”范围。这意味着整个文件中的任何其他内容都可以访问它。

但是在函数/循环内定义的变量对于该函数是“本地的”。这意味着它只存在,并且可以从定义它的位置访问,直到函数结束。

当我们在函数中使用赋值运算符(=)时,它的默认行为是创建一个新的局部变量 - 除非已在本地范围中定义了具有相同名称的变量。

基本上,当我们在循环内部声明它时,如下所示。每次循环时,它都会将变量重新设置为=“”,这就是为什么它一次只打印出一个字符的原因。

即。

"" + "L"
reintialize charCount = ""
"" + "U"
etc

外部循环变量声明:

enter image description here

在循环内声明的变量:

enter image description here

答案 1 :(得分:0)

charCount = ""
for mysteryChar in mysteryString:
    charCount = charCount + mysteryChar
    print(charCount)

这样做是初始化变量charCount,这是你的字符串。

然后我们有一个for循环。这样做是迭代你的字符串的每个字母。

然后它将获得原始字符串(从空白开始)并一次添加一个字母。

然后打印显示它。

在循环外声明的原因是你可以将每个字母连接到它。

charCount = charCount + mysteryChar不存在时,尝试执行charCount会抛出错误。因此,您在外部创建一个空白字符串,以便您可以执行此操作:

"" + "L"  
"L" + "U"  
"LU" + "C"  
"LUC" + "Y"  

答案 2 :(得分:0)

来自Python's Official Documentation - 8.3 The for Statement

  

“for语句用于迭代序列的元素(例如字符串,元组或列表)......”

在您的代码示例中,"Lucy"是字符串。字符串是序列。组成它的字符(即"L", "u", "c", "y")是“序列的元素”。

我将逐行浏览您的代码以查看它是否有帮助。

1.您将sys.argv[1]分配给变量mysteryString。您的sys.argv[1]是字符串"Lucy"

mysteryString = sys.argv[1]

2.程序接受变量mysteryString,用它格式化字符串,然后打印输出。

print("~ testing with mysteryString = {} ~".format(mysteryString))

Output: ~ testing with mysterString = Lucy ~

3.此行初始化变量charCount。请注意它是空的。

charCount = ""

4.这一行标志着for语句的开头(又名for-loop)。 for语句迭代(或“循环”)提供的序列中的每个元素。为了遍历序列,必须将其中的每个元素分配给变量。这里,该变量是mysteryChar。序列的第一个元素(即字符"L")被赋值给变量mysteryChar

for mysteryChar in mysteryString:

如果有帮助,您可以将此时的情况视为:

mysteryChar = "L"

5.这条线做了几件很酷的事情。首先,它取charCount的值并将其添加到mysteryChar的值。其次,它将charCountmysteryChar的值分配给charCount

    charCount = charCount + mysteryChar

还记得在第3步中,我们将变量charCount分配给空字符串吗?

charCount = ""

执行第5步后:

charCount = "L"

6.此行打印charCount

代码:

print(charCount)

输出:

L

7.现在,请尝试遵循代码。

代码:

charCount = ""
for mysteryChar in mysteryString:
    charCount = charCount + mysteryChar
    print(charCount)

输出:

L

8.继续循环的下一次迭代。

代码:

mysterString = "Lucy"
# Note: Before the second iteration of the loop, charCount = "L"
# This is because in the first iteration of the loop,
# "L" was added & assigned to the variable charCount
charCount = ""
for mysteryChar in mysteryString:
    charCount = charCount + mysteryChar
    print(charCount)

输出:

Lu

9.继续循环的下一次迭代

代码:

mysterString = "Lucy"
# Note: Before the third iteration of the loop, charCount = "Lu"
# This is because in the second iteration of the loop,
# "u" was added & assigned to the variable charCount
# At that point, charCount = "Lu"
charCount = ""
for mysteryChar in mysteryString:
    charCount = charCount + mysteryChar
    print(charCount)

输出:

Luc

10.这是for-loop的所有输出。

输出:

L
Lu
Luc
Lucy

问题:

  

“为什么它按照它的方式打印字符”

for循环以它的方式打印字符,因为它循环遍历序列中的每个元素。

第一次迭代输出:

L

第二次迭代输出:

Lu

第三次迭代输出:

Luc

第四次迭代输出:

Lucy

大约一年前我开始学习python,所以这些东西对我来说也是比较新的。如果我的解释被误导,欢迎批评/更正。