如何在python中交换输入中的字母?

2024-10-01 11:40:20 发布

您现在位置:Python中文网/ 问答频道 /正文

所以你输入一个输入,比如“你好”

然后将第一个数字与第三个数字交换,第二个数字与第四个数字交换。在

结果“Llheo”


Tags: 数字llheo
3条回答

这不是小事。它可以通过字符串索引和切片来完成。但你也必须考虑到资本化的因素,并将其保留下来。在

>>> s = "Hello"
>>> x = list(s)
>>> x
['H', 'e', 'l', 'l', 'o']

交换第一个与第三个和交换大小写

^{pr2}$

交换第二个和第四个

>>> 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)

我们可以通过索引和切片来交换一个单词中的两个字母。例如,要交换单词“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”

这个代码可以普遍应用于任何单词,而不管这个单词的长度是多少。也可以通过更改索引号来更改要交换的字母,如下所示:

^{pr2}$

O/p:-“文档”

这里有一个不同的方法。你必须手动提交你想交换的职位。因此,您可以在这里更改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大写时才大写

相关问题 更多 >