如何使第一个和最后一个字符成为第一个和第二个字符,依此类推

时间:2017-10-12 04:32:21

标签: python string python-3.x

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

例如

“你好,世界”变成“dHlerlolwo”,(注意所有标点符号,特殊字符,空格等都是如此对待)

“0123456789”变为“9081726354”。

到目前为止,我知道该怎么做才能使字符串倒退:

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

2 个答案:

答案 0 :(得分:1)

压缩邮件和反向邮件。迭代两者并加入以在两个消息中形成交替字符的消息。

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

您可以通过压缩消息和反向消息来尽早优化函数,长度超过原始长度的一半。

答案 1 :(得分:0)

只需在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")) 

输出:

dHlerlolwo ,
9081726354