py_string_sculptor · Python

▶ Aprender py_string_sculptor (Python) paso a paso · explicación de py_string_sculptor

Código línea a línea

Tres columnas: el código, el trozo del subject o del main que obliga a escribir esa línea, y el por qué.

py_string_sculptor.py
CódigoSubjectPor qué
def string_sculptor(text: str) -> str:def string_sculptor(text: str) -> str:Firma del subject.
out = ""transforms a stringConstruyo el resultado carácter a carácter.
upper = FalseThe first alphabetic character should be lowercase, the second uppercase, etc. Spaces reset the alternationUn solo bit de estado: ¿la próxima letra va en mayúscula? Empieza en False (la primera va en minúscula) y vuelve a False con cada espacio.
for ch in text:Carácter a carácter.
if ch == " ":Spaces reset the alternation (next alpha after a space is lowercase again).Espacio: reinicio el estado. Lo compruebo antes que isalpha porque es el caso con efecto propio.
upper = FalseThe first alphabetic character should be lowercase, the second uppercase, etc. Spaces reset the alternationUn solo bit de estado: ¿la próxima letra va en mayúscula? Empieza en False (la primera va en minúscula) y vuelve a False con cada espacio.
out += chNon-alphabetic characters remain unchangedEspacios, dígitos y signos se copian tal cual.
elif ch.isalpha():alternating the case of alphabetic characters onlyLetra: aplico el estado y lo invierto.
out += ch.upper() if upper else ch.lower()Fuerzo el caso que toca, sea cual sea el original (H de "Hello" pasa a h).
upper = not upperAlterno.
else:Non-alphabetic characters remain unchanged and are NOT counted in the alternation index.Dígitos y signos: se copian y no tocan el estado.
out += chNon-alphabetic characters remain unchangedEspacios, dígitos y signos se copian tal cual.
return outListo.