如何使第一个和最后一个字符成为第一个和第二个字符等等

2024-09-29 22:24:06 发布

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

我试图创建一个函数,它首先使字符串向后(因此,“Hello,world”变成“dlrow,olleH”),然后第一个和最后一个字符成为字符串中的第一个和第二个字符,第二个和最后一个字符变成字符串中的第三个和第四个字符,依此类推。在

例如

“Hello,world”变成了“dHlerlolwo”(注意所有标点符号、特殊字符、空格等都是相同的)

“0123456789”变为“9081726354”。在

到目前为止,我所知道的只是把绳子倒过来:

def encrypt(s):
    return s[::-1]

Tags: 函数字符串helloworldreturndef字符encrypt
2条回答

压缩消息和反向消息。对这两个消息进行迭代并连接,以在两个消息中形成一个交替字符的消息。在

def encrypt(message):
    reversed_message = reversed(message) # better than slicing for lazy evaluation

    alternating_chars = (
        ''.join((i, j)) 
        for i,j in zip(message, reversed_message)
    )
    alternating_chars = ''.join(
        list(alternating_chars)
    )

    return alternating_chars[:len(message)]

print encrypt('you can\'t start flying cars to try and get yourself noticed')

您可以通过压缩消息并反转长度为原始长度一半以上的消息来尽早优化函数。在

只需在for循环中添加字符:

def encrypt(s):
    reversed = s[::-1]
    ret_str = ""
    length = len(reversed)
    for i in range(length // 2):
        ret_str +=  reversed[i] +reversed[length - 1 - i]

    if(length % 2 == 1):
        ret_str += reversed[length // 2 + 1]
    return ret_str

print(encrypt("Hello, world"))
print(encrypt("0123456789")) 

输出:

^{pr2}$

相关问题 更多 >

    热门问题