我有这段代码但不完整。我只是解释一下这个过程。
我有话要说。abcdefgh
现在我将这个单词分成2个字符。
ab cd ef gh
然后每两对发一次他们的位置
cd ab gh ef
接下来,我将颠倒这对字符。
dc ba hg fe
如果单词的长度是偶数且对或字符也是偶数,则会发生这种情况。
如果这对单词是奇数而长度也是奇数怎么办?
示例:abcdefghi
这将是.. ab cd ef gh i
如果单词的长度是奇数。我将为最后一对添加填充。 "x"
ab cd ef gh ix
然后像以前一样做同样的过程。但是这对字符也很奇怪。因此最后一对将保留它的位置。
cd ab gh ef ix
然后反转字符;
dc ba hg fe xi
现在我可以添加填充并为每个单词创建一对。我还在考虑如何交换他们的立场并扭转角色。
这是我的代码。
def is_odd(num):
return num % 2 != 0
IMSI = "5150201234567"
count = len(str(IMSI))
if (is_odd(count) is True):
IMSI = str(IMSI)+"f"
count = len(str(IMSI))
x = 0
z = []
while x <= count-2:
a = x
x = x + 2
b = x
z.append(IMSI[a:b][::-1])
print z
# output is ['15', '05', '02', '21', '43', '65', 'f7']
答案 0 :(得分:2)
这里没什么好看的。所有基本操作。
s = 'abcdefgh'
# s = 'abcdefghi'
# pad
if len(s) % 2:
s += 'x'
l = []
# split
for i in range(0,len(s),2):
l.append(s[i:i+2])
# switch
for i in range(0,len(l),2):
if i+1 < len(l):
l[i+1], l[i] = l[i:i+2]
# reverse each
l = [x[::-1] for x in l]
print l
答案 1 :(得分:2)