Je suis un débutant en Python, en train de me former à partir de Google Code University. J'ai eu ce problème comme un exercice, et a été en mesure de le résoudre en utilisant la solution ci-dessous:Aidez-moi à simplifier ce code (Python)
# 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:]
Cela produit la sortie correcte et résout le problème. Cependant, je suis en train de dupliquer la logique de séparer une ficelle uniformément ou d'ajouter le nombre impair à la première moitié, ce qui semble redondant. Il doit y avoir un moyen plus efficace de le faire. Le même contrôle et la même logique sont appliqués à a et b. N'importe qui?
qui est assez, à peu près ce que je suis venu avec – nflacco
Je ne comprends pas vraiment comment cela fonctionne, mais il ne .... Google . – Dan
@Sven, pouvez-vous nous expliquer comment cela fonctionne? (en particulier l'opérateur '//') – OscarRyz