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ódigo | Subject | Por qué |
|---|---|---|
def string_sculptor(text: str) -> str: | def string_sculptor(text: str) -> str: | Firma del subject. |
out = "" | transforms a string | Construyo el resultado carácter a carácter. |
upper = False | The first alphabetic character should be lowercase, the second uppercase, etc. Spaces reset the alternation | Un 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 = False | The first alphabetic character should be lowercase, the second uppercase, etc. Spaces reset the alternation | Un 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 += ch | Non-alphabetic characters remain unchanged | Espacios, dígitos y signos se copian tal cual. |
elif ch.isalpha(): | alternating the case of alphabetic characters only | Letra: 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 upper | Alterno. | |
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 += ch | Non-alphabetic characters remain unchanged | Espacios, dígitos y signos se copian tal cual. |
return out | Listo. |