python的新手。试图了解字符串切片和方法。已获得以下代码,以阅读并声明它们将显示的内容。有人可以解释第二个程序如何显示逆序吗?
我一直在寻找答案,但只想出使用负数反转的切片方法,但不是这样。
程序1:
str1 = 'Wednesday Thursday Friday'
new_string = ''
index = 0
while index < len(str1):
if str1[index].isupper():
new_string = new_string + str1[index]
index = index + 1
new_string = new_string + '!?!'
print(new_string)
程序2:
str1 = 'Wednesday Thursday Friday'
new_string = ''
index = 0
while index < len(str1):
if str1[index].isupper():
new_string = str1[index] + new_string
index = index + 1
new_string = new_string + '!?!'
print(new_string)
我了解第一个程序并得到结果WTF!?!
不明白为什么第二个程序是FTW!?!
答案 0 :(得分:1)
这两个程序之间的唯一区别是,第一个有行
new_string = new_string + str1[index]
第二个有一行
new_string = str1[index] + new_string
在第一个字符串中,使用要构建的字符串,并将找到的下一个大写字母添加到其结尾。 在第二个中,您将使用要构建的字符串,并将找到的下一个大写字母添加到其 front 中。因此,首先,new_string的值为:
'W'
'WT'
“ WTF”
在第二个字符串中,new_string的值为:
'W'
'TW'
'FTW'
因此,您最终将字符串反转了。 基本上,在第一种方法中,您只是在找到字母时添加字母,但是在第二种方法中,每次添加另一个字母时,它们会将字母移回一个位置,导致找到的第一个字母是结尾字符串中的最后一个字母,依此类推
另一方面,在Python中,通常不需要像使用两个程序一样使用while循环和索引来迭代字符串或列表。例如,线
index = 0
while index < len(str1):
if str1[index].isupper():
可以替换为
for letter in str1:
if letter.isupper():
稍微整洁。 我们甚至可以如下替换整个程序1:
str1 = 'Wednesday Thursday Friday'
# The below line uses 'list comprehensions'
new_string = ''.join(letter for letter in str1 if letter.isupper())
new_string = new_string + '!?!'
print(new_string)
如果您要寻找关于这方面的更多信息,建议您通读the python tutorial! :)
答案 1 :(得分:0)
唯一的区别,如正确说明的不均匀标记,是
new_string = new_string + str1[index]
和
new_string = str1[index] + new_string
这仅仅是因为它们是以相反的顺序添加的,请在此行之前仔细考虑整个程序及其每个步骤,这才有意义:)