我正在学习谷歌提供的免费 Python 课程(如果有兴趣,请链接),我被困在其中一个练习上。
目标:考虑将字符串分成两半。如果长度是偶数,则前半部分和后半部分长度相同。如果长度是奇数,我们会说额外的字符在前半部分。例如'abcde',前半部分是'abc',后半部分是'de'。给定 2 个字符串 a 和 b,返回 a-front + b-front + a-back + b-back 形式的字符串
这是我到目前为止所拥有的:
def front_back(a, b):
if len(a)%2 == 0 or len(b)%2 == 0:
firstpart , secondpart = a[:len(a)/2] , a[len(a)/2:]
thirdpart , fourthpart = b[:len(b)/2] , b[len(b)/2:]
else:
firstpart , secondpart = a[:len(a)+1/2] , a[len(a)+1/2:]
thirdpart , fourthpart = b[:len(b)+1/2] , b[len(b)+1/2:]
return firstpart+thirdpart+secondpart+fourthpart
这些是测试字符串:
test(front_back('abcd', 'xy'), 'abxcdy')
test(front_back('abcde', 'xyz'), 'abcxydez')
test(front_back('Kitten', 'Donut'), 'KitDontenut')
每个中的第三个字符串是预期的字符串。
我究竟做错了什么?我知道这个问题无法解释奇数长度的字符串,但我已经搜索了几天,但我没有运气在网上找到答案。我也对更有效的解决方案持开放态度,但我想知道为什么我的特定设置不起作用,以供将来参考。
谢谢!