所以你接受诸如“你好”之类的输入
然后将第一个数字与第三个数字交换,并将第二个数字与第四个数字交换。
结果“Llheo”
答案 0 :(得分:4)
这不重要。它可以通过字符串索引和切片来完成。但是你也必须考虑资本化并保留它。
>>> s = "Hello"
>>> x = list(s)
>>> x
['H', 'e', 'l', 'l', 'o']
先交换w / third并交换案例
>>> x[0], x[2] = x[2].upper(), x[0].lower()
>>> x
['L', 'e', 'l', 'h', 'o']
第二次w /第四次
>>> x[1], x[3] = x[3], x[1]
>>> x
['L', 'l', 'h', 'e', 'o']
将其变回字符串
>>> ''.join(x)
'Llheo'
这并不适用于所有情况,但在这种特殊情况下,这就是你要求的。
修改:使用功能更进一步:
def swap_letters(indexes, string):
"""
@indexes should be a list of 2-tuples of indexes to swap, e.g.:
[(0,2), (1,3)]
@string is the input string.
"""
letters = list(string)
for src, dst in indexes:
letter_src = letters[src]
letter_dst = letters[dst]
# Swap case on destination letter if src is upper
if letter_src.isupper():
letter_dst = letter_dst.upper()
letter_src = letter_src.lower()
letters[src], letters[dst] = letter_dst, letter_src
return ''.join(letters)
if __name__ == '__main__':
# This is the example from the OP
indexes = [(0,2), (1,3)]
word = 'Hello'
print swap_letters(indexes, word)
# And a proof of concept
indexes = [(0,-1), (6,4)]
word = 'ActiveSync'
print swap_letters(indexes, word)
答案 1 :(得分:3)
这是一种不同的方法。您必须手动提交要交换的职位。所以在这里你可以改变swap_seq
的值,它只是字符串索引的序列。
例如,s[0]+s[1]+s[2]+s[3]+s[4]
为“Hello”,s[2]+s[3]+s[0]+s[1]+s[4]
为“llHeo”。
s="Hello"
swap_seq="23014"
swapped=''.join([s[int(i)] for i in swap_seq])
if s[0].isupper(): swapped.capitalize()
print swapped
输出:Llheo
修改:swapped
仅在s
大写
答案 2 :(得分:0)
我们可以通过索引和切片在一个单词中交换两个字母。例如,要交换单词" Code"的第一个和最后一个字母,请查看以下代码。
string = "Code"
s = list(string)
s[0], s[len(s)-1] = s[len(s)-1].upper(), s[0].lower()
string = ''.join(s)
print(string)
O / p: - " Eodc"
此代码可以普遍应用于任何单词,无论该单词的长度如何。也可以通过更改索引号。您可以像这样更改要交换的字母:
s[0], s[len(s)-2] = s[len(s)-2].upper(), s[0].lower()
O / P: - " Doce"