3. Texto y tipos básicos: str(), int(), bool() y métodos de str
No son “propiedades”: son constructores (funciones incorporadas)
En Python vas a ver cosas como str("13"), int("123") o bool(1).
El nombre técnico suele ser constructor o simplemente función incorporada que devuelve un valor de ese tipo
(a veces convirtiendo lo que le pasás).
str(x)→ intenta representarxcomo texto.int(x)→ intenta interpretarxcomo entero (si no puede, lanza error).float(x)→ igual, pero número decimal.bool(x)→ devuelveTrueoFalsesegún las reglas de “verdadero / falso” en Python.
type(): saber qué tenés en la mano
Cuando dudás si algo es texto o número, type() te lo dice. Esto conecta directo con la lección de variables e input().
len(), posición con [ ] y rebanadas [:]
Un str es una secuencia de caracteres. Podés saber cuántos tiene, leer uno por posición
y cortar pedazos (slicing). Los índices empiezan en 0 (el primer carácter es el índice 0).
len(cadena) — cuántos caracteres
len cuenta letras, números, espacios y símbolos: cada “unidad” visible cuenta como uno (en textos simples, un carácter).
[0] y [-1] — primer y último carácter
Con corchetes accedés a una posición. [0] es siempre el primero.
Los índices negativos cuentan desde el final: [-1] es el último, [-2] el anterior, y así.
[:3] — las primeras tres letras (o las que indiques)
La notación inicio:fin en corchetes devuelve un tramo: desde inicio hasta antes de fin.
Si omitís el inicio, empieza en 0. Por eso [:3] son los índices 0, 1 y 2 (tres caracteres).
[2:len(variable)] — del índice 2 hasta el final
El segundo número del slicing es exclusivo: variable[2:len(variable)] toma desde el índice 2
hasta el último carácter incluido, porque len(variable) apunta “una posición después del último”, que es cómo Python cierra el tramo.
Es equivalente a escribir variable[2:] (omitir el fin = hasta el final), pero usar len deja explícito
que estás pensando en “desde 2 hasta la longitud total”.
Cadenas (str): métodos que vas a usar todo el tiempo
Los textos en Python son objetos de tipo str. No “propiedades para setear” como en otros lenguajes: en general usás
métodos que devuelven un texto nuevo (las cadenas son inmutables).
upper(), lower(), capitalize() y title()
upper() y lower() cambian todo el texto. capitalize() deja en mayúscula solo la primera letra del string
y el resto en minúsculas (ideal para un nombre solo o una frase corta). title() hace eso en cada palabra separada por espacios.
strip(), lstrip(), rstrip() — sacar espacios
Ideal para limpiar lo que escribe el usuario (espacios al inicio o al final).
split() y join() — trocear y unir
replace(), startswith(), endswith()
find(), count(), in
¿Es un número en texto? isdigit() y amigos
isdigit() sirve para saber si todos los caracteres son dígitos (ojo: no valida floats con punto; para eso hay otras estrategias).
💻 Misión: normalizar un comando
Pedí al usuario una palabra. Mostrá en pantalla la misma palabra en minúsculas, sin espacios alrededor, y decí con True/False
si empieza con la letra "p" (después de normalizar).
👁️ Ver solución sugerida
Práctica: correo corporativo @cafeycodigo.org
En todos los casos el correo institucional sigue la misma regla: 3 primeras letras del nombre + 2 últimas del apellido + . + año de nacimiento + @cafeycodigo.org (sin espacios). También pedís correo personal y edad como parte del enunciado (aunque en algún ejercicio el año nazca de otra forma).
💻 1. Ficha de ingreso
Solicitá nombre, apellido, correo personal y edad (entero). Calculá el año de nacimiento como año actual − edad usando datetime.date.today().year. Armá el correo corporativo con la regla de arriba (normalizá nombre y apellido en minúsculas y sin espacios al inicio/fin). Mostrá el correo personal y el corporativo en dos líneas claras.
👁️ Ver solución sugerida
💻 2. Validá la edad antes de convertir
Mismos datos que el ejercicio 1. Antes de hacer int(edad), leé la edad como texto y comprobá con isdigit(). Si no es un entero válido, mostrá un mensaje de error y no generes el correo. Si es válido, calculá el año de nacimiento y el correo corporativo con la misma regla (nombre/apellido en minúsculas).
👁️ Ver solución sugerida
💻 3. Año de nacimiento explícito
Pedí nombre, apellido, correo personal, edad y además el año de nacimiento en cuatro dígitos (por ejemplo 2008). Para el correo corporativo usá ese año ingresado, no el calculado desde la edad (así practicás otro int()). Al final mostrá una línea que diga si la edad coincide aproximadamente con el año (opcional: compará date.today().year - edad con el año ingresado).
👁️ Ver solución sugerida
💻 4. Nombre compuesto: solo la primera palabra
Pedí los mismos cuatro datos. Si el usuario escribe un nombre compuesto (ej. "María Laura"), tomá solo la primera palabra para las tres letras iniciales (usá split()). El apellido sigue entero para las dos últimas letras. El año de nacimiento sale de año actual − edad. Mostrá el correo corporativo con f"...".
👁️ Ver solución sugerida
💻 5. Comprobá el correo personal
Pedí nombre, apellido, correo personal y edad. Generá el correo corporativo como en el ejercicio 1. Además, sin usar regex avanzada, indicá con True/False si el correo personal contiene el carácter @ y si termina en .org, .com o .edu (usá in y endswith() en minúsculas). Mostrá el corporativo y esas dos comprobaciones.