Я новичок в Python, учусь на Google Code University.У меня была эта проблема в качестве упражнения, и я смог решить ее, используя решение, показанное ниже:
# F. front_back
# Consider dividing a string into two halves.
# If the length is even, the front and back halves are the same length.
# If the length is odd, we'll say that the extra char goes in the front half.
# e.g. 'abcde', the front half is 'abc', the back half 'de'.
# Given 2 strings, a and b, return a string of the form
# a-front + b-front + a-back + b-back
def front_back(a, b):
if len(a) % 2 == 0:
ad = len(a) / 2
if len(b) % 2 == 0:
bd = len(b) / 2
else:
bd = (len(b) / 2) + 1
else:
ad = (len(a) / 2) + 1
if len(b) % 2 == 0:
bd = len(b) / 2
else:
bd = (len(b) / 2) + 1
return a[:ad] + b[:bd] + a[ad:] + b[bd:]
Это дает правильный вывод и решает проблему.Тем не менее, я дублирую логику того, нужно ли разделять строку равномерно или добавить нечетное число к первой половине, и это кажется излишним.Должен быть более эффективный способ сделать это.Та же самая точная проверка и логика применяются к a и b.Кто-нибудь? * * 1004