Google が提供している無料の Python クラス (興味がある場合はリンク)を使用していますが、演習の 1 つに行き詰まっています。
目標: 文字列を 2 つに分割することを検討してください。長さが偶数の場合、前半分と後ろ半分の長さは同じです。長さが奇数の場合、余分なイワナは前半に入ると言います。例: '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')
それぞれの 3 番目の文字列は、予想される文字列です。
私は何を間違っていますか?奇数の長さの文字列を説明できないことが問題であることはわかっていますが、ここ数日検索していて、オンラインで答えを見つけることができませんでした. 私はより効率的なソリューションにもオープンですが、将来の参考のために、特定のセットアップがうまくいかない理由を知りたいです。
ありがとう!