在 python 中,如何交换字符串的开头和结尾部分,但将中间字符保留在同一个位置?例如,如果我有 ABCDE,那么结果将是 DECAB。
def swap(str1):
return str1[-1]+str1[1:-1]+str1[:1]
print(swap("Hello"))
有了这个,我只能交换字符串的第一个和最后一个字母。所以'Hello'的结果是'oellH'。
在 python 中,如何交换字符串的开头和结尾部分,但将中间字符保留在同一个位置?例如,如果我有 ABCDE,那么结果将是 DECAB。
def swap(str1):
return str1[-1]+str1[1:-1]+str1[:1]
print(swap("Hello"))
有了这个,我只能交换字符串的第一个和最后一个字母。所以'Hello'的结果是'oellH'。
您可以通过楼层划分获得中间字符的索引//:
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