Python循环-帮助我理解

Python循环-帮助我理解,python,for-loop,character,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 myst

我让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?为什么它会以这种方式打印字符

charCount = ""
for mysteryChar in mysteryString:
    charCount = charCount + mysteryChar
    print(charCount)
这样做的目的是初始化一个变量
charCount
,它是您的字符串

然后我们有一个for循环。它的作用是遍历字符串的每个字母

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

然后打印显示它

在循环外部声明的原因是,您可以将每个字母连接到循环

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

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

charCount在循环之外初始化的原因是作用域

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

但是在函数/循环中定义的变量是该函数的“局部”。这意味着它只存在,并且从定义它的点到函数结束都可以访问

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

本质上,当我们在循环内部声明它时,如下所示。每次循环时,它都将变量重新初始化为“”。这就是为什么它一次只打印一个字符

在循环外声明的变量:

在循环内声明的变量:

来自

for语句用于迭代序列的元素(如字符串、元组或列表)

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

我将逐行检查您的代码,看看它是否有帮助

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

2.程序获取变量
mysterysting
,用它格式化字符串,并打印输出

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

Output: ~ testing with mysterString = Lucy ~
3.此行初始化变量
charCount
。请注意,它是空的

charCount = ""
4.这一行标记for语句的开始(也称为for循环)。for语句迭代(或“循环”)所提供序列中的每个元素。为了在序列上循环,必须将序列中的每个元素指定给一个变量。这里,这个变量是
mysteryChar
。序列的第一个元素(即字符
“L”
)被分配给变量
mysteryChar

for mysteryChar in mysteryString:
如果有帮助,您可以将此时发生的情况想象为:

mysteryChar = "L"
5.这条线做了一些很酷的事情。首先,它获取
charCount
的值,并将其添加到
mysteryChar
的值中。其次,它将
charCount
mysteryChar
的值分配给
charCount

    charCount = charCount + mysteryChar
还记得在步骤3中,我们将变量
charCount
分配给一个空字符串吗

charCount = ""
在执行步骤5之后:

charCount = "L"
6.此行打印
charCount

    charCount = charCount + mysteryChar
代码:

输出:

L
L
Lu
Luc
L
Lu
Luc
Lucy
7.现在,试着遵循代码

代码:

输出:

L
L
Lu
Luc
L
Lu
Luc
Lucy
8.继续循环的下一次迭代

代码:

输出:

L
L
Lu
Luc
L
Lu
Luc
Lucy
9.继续循环的下一次迭代

代码:

输出:

L
L
Lu
Luc
L
Lu
Luc
Lucy
10.这是for循环的所有输出

输出:

L
L
Lu
Luc
L
Lu
Luc
Lucy
问题:

“为什么它会以这种方式打印字符”

for循环以它的方式打印字符,因为它分别在序列中的每个元素上循环

第一次迭代输出:

L
Lu
Luc
Lucy
第二次迭代输出:

L
Lu
Luc
Lucy
第三次迭代输出:

L
Lu
Luc
Lucy
第四次迭代输出:

L
Lu
Luc
Lucy

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

如果循环中完成了
charCount=“
,则只打印当前字符。我建议尝试可视化你的代码。谢谢你,乔纳森,今天早上我在桌子上撞了太久!谢谢你,卡蒂,这很有道理!这太棒了,谢谢你把它分解成那样!举手之劳希望它能让你重新振作起来——坚持下去!