我正在尝试创建一个函数,它首先使你的字符串向后(所以,“Hello,world”变成“dlrow,olleH”)然后第一个和最后一个字符成为字符串中的第一个和第二个字符,第二个和第二个最后一个字符成为字符串中的第三个和第四个字符,依此类推。
例如:
“你好,世界”变成“dHlerlolwo”,(注意所有标点符号,特殊字符,空格等都是如此对待)
“0123456789”变为“9081726354”。
到目前为止,我知道该怎么做才能使字符串倒退:
def encrypt(s):
return s[::-1]
答案 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