0

在 python 中,如何交换字符串的开头和结尾部分,但将中间字符保留在同一个位置?例如,如果我有 ABCDE,那么结果将是 DECAB。

def swap(str1):
    return str1[-1]+str1[1:-1]+str1[:1]
print(swap("Hello"))

有了这个,我只能交换字符串的第一个和最后一个字母。所以'Hello'的结果是'oellH'。

4

1 回答 1

-1

您可以通过楼层划分获得中间字符的索引//

5 //2 
# 2

因此,您可以像这样更改代码:

def swap(str1):
    middle = len(str1) // 2
    return str1[middle+1:] + str1[middle] + str1[:middle]

print(swap("ABCDE"))
# DECAB

请注意,这只适用于具有奇数个字符的字符串。我们可以修改函数以处理偶数个字符的字符串,在这种情况下只需交换两半:

def swap(str1):
    middle = len(str1) // 2

    if len(str1) % 2 == 0:
        # even length
        return str1[middle:] + str1[:middle]
    else:
        # odd length
        return str1[middle+1:] + str1[middle] + str1[:middle]

print(swap("ABCDE"))
# DECAB

print(swap("ABCDEF"))
# DEFABC
于 2019-08-30T05:19:08.863 回答