2024-09-28 21:42:10 发布
网友
stmt = "Iomrscr yn wore" mix = "C'r eotrA,snep!" for i in range(0, len(stmt), 2): stmt = stmt[:i] + mix[i] + stmt[i + 1:] print stmt
我知道这个问题的答案。但是,我不知道这是怎么回事。有人能帮你解释一下你是怎么读这段代码的吗?泰铢
我认为从内而外解释比较容易
stmt = stmt[:i] + mix[i] + stmt[i + 1:]
所以总的来说,这意味着“创建一个新字符串,与旧字符串相同,但是在偏移量i处替换mix中的相应字符”。在
那么我们这样做是为了抵消什么呢?在
它被称为循环
范围(a,b,c)生成一系列数字:a,a+c,a+2c,a+3c。。。a+Nc<;b
Python字符串的索引从0开始-第一个字符是stmt[0]-len(string)是字符串中的字符数,因此最后一个字符是stmt[len(stmt)-1]。所以这个循环给i的值是(0,2,4,6…),但不包括第一个太高的索引。实际上,循环说“交换第一个字符、第三个字符和第五个字符。。。尽可能多的字符而不离开字符串的末尾”。在
更直接的写作方式是
stmt = "Iomrscr yn wore" mix = "C'r eotrA,snep!" print ''.join(d[i%2] for i,d in enumerate(zip(mix,stmt)))
它说“将mix和stmt中的字符配对,索引它们,当索引为偶数时从mix中提取一个字母,当索引为奇数时从stmt中提取一个字母;然后将所有字符重新连接到一个字符串中并打印它”。在
让我给你讲讲:
stmt = "Iomrscr yn wore" mix = "C'r eotrA,snep!"
这两行简单地定义了两个字符串。在
for i in range(0, len(stmt), 2):
此for语句对{}创建的数组中的i的每个值进行循环。重要的是,range()调用中的最后2个表示只每隔一个数取一次,即0、2、4、6。。。最多len(stmt)。在
for
i
range()
len(stmt)
这一行表示将stmt中的所有内容都带到索引i,从mix添加索引i处的项,然后从索引i + 1开始,将所有内容从索引i + 1添加到末尾。使用方括号表示一个段,可以使用someArray[from:to]的形式。它也适用于本例中的字符串,我相信它也适用于元组和字典。如果不提供from,那么它从0索引开始,如果不提供to,它会一直到最后。注意,to不包括在内。在
stmt
mix
i + 1
someArray[from:to]
from
to
重要的是,记住你的范围是所有其他指数;0,2,4,6。。。因此,第一次循环时,将i替换为它的实际值:
stmt = stmt[:0] + mix[0] + stmt[0 + 1:]
第二次你将有:
stmt = stmt[:2] + mix[2] + stmt[2 + 1:]
如果您实际将stmt和mix替换为我们在第二个循环中看到的子字符串(请注意,我已经对第一个循环进行了替换):
stmt = "Co" + "r" + "rscr yn wore"
你能看到你最终会用混合中的每一个字母替换stmt中的每一个字母吗?在
我认为从内而外解释比较容易
所以总的来说,这意味着“创建一个新字符串,与旧字符串相同,但是在偏移量i处替换mix中的相应字符”。在
那么我们这样做是为了抵消什么呢?在
它被称为循环
^{pr2}$范围(a,b,c)生成一系列数字:a,a+c,a+2c,a+3c。。。a+Nc<;b
Python字符串的索引从0开始-第一个字符是stmt[0]-len(string)是字符串中的字符数,因此最后一个字符是stmt[len(stmt)-1]。所以这个循环给i的值是(0,2,4,6…),但不包括第一个太高的索引。实际上,循环说“交换第一个字符、第三个字符和第五个字符。。。尽可能多的字符而不离开字符串的末尾”。在
更直接的写作方式是
它说“将mix和stmt中的字符配对,索引它们,当索引为偶数时从mix中提取一个字母,当索引为奇数时从stmt中提取一个字母;然后将所有字符重新连接到一个字符串中并打印它”。在
让我给你讲讲:
这两行简单地定义了两个字符串。在
for i in range(0, len(stmt), 2):
此}创建的数组中的
^{pr2}$for
语句对{i
的每个值进行循环。重要的是,range()
调用中的最后2个表示只每隔一个数取一次,即0、2、4、6。。。最多len(stmt)
。在这一行表示将
stmt
中的所有内容都带到索引i
,从mix
添加索引i
处的项,然后从索引i + 1
开始,将所有内容从索引i + 1
添加到末尾。使用方括号表示一个段,可以使用someArray[from:to]
的形式。它也适用于本例中的字符串,我相信它也适用于元组和字典。如果不提供from
,那么它从0索引开始,如果不提供to
,它会一直到最后。注意,to不包括在内。在重要的是,记住你的范围是所有其他指数;0,2,4,6。。。因此,第一次循环时,将
i
替换为它的实际值:第二次你将有:
如果您实际将
stmt
和mix
替换为我们在第二个循环中看到的子字符串(请注意,我已经对第一个循环进行了替换):你能看到你最终会用混合中的每一个字母替换stmt中的每一个字母吗?在
相关问题 更多 >
编程相关推荐