首页 > 解决方案 > 循环中的字符串连接恰好在左侧。为什么?

问题描述

字符串连接恰好在右侧,例如:

foo = 'Sorting1234'
foo += 'er'
print(foo)

Sorting1234er

但是在循环中会发生这种情况:

string = 'Sorting1234'
x = ''
for c in string:
    if c.islower():
        x+=c
    if c.isupper():
        x+=c
print(x)

Sorting

我希望输出是:

ortingS

因为我首先在循环中“附加”小写字母,然后再“附加”大写字母。

标签: python

解决方案


目前,您正在按原始字符串的顺序处理字母,而不是按大小写。这意味着您的当前for循环几乎没有效果,但可以防止打印数值。

实现您正在寻找的行为的一种方法,首先附加小写字符,将使用两个循环:第一个查找小写字符,第二个查找大写字符,即:

string = 'Sorting1234'
x = ''
for c in string:
    if c.islower():
        x += c
for c in string:
    if c.isupper():
        x += c
print(x)

输出:

ortingS

另一种需要遍历字符串的方法可能是存储小写和大写字符的列表,然后在最后加入它们:

lower, upper = [], []                                                           
for c in string:                                                                
    if c.islower():                                                             
        lower.append(c)                                                         
    elif c.isupper():                                                           
        upper.append(c)                                                         
print(''.join(lower + upper))

输出:

ortingS

推荐阅读