Pensamiento Computacional (090) · Unidad 2 — Datos, expresiones y funciones
Tipos de datos
Cada valor tiene un tipo, y el tipo decide qué se puede hacer con él. El mismo signo + suma números y pega textos.
La explicación
Los cuatro tipos simples
float números con coma 3.14 -0.5 2.0
str texto (entre comillas) "hola" "42"
bool verdadero o falso True False
En Python el tipo no se declara: se deduce de lo que escribís. type(x) te lo dice.
2 y 2.0 no son lo mismo
2 es int y 2.0 es float. Valen lo mismo pero
se comportan distinto, y eso se contagia: cualquier operación con un float da float.
5.0 // 2 → 2.0 (float)
"42" no es 42
"3" + "4" → "34" (los pega)
3 + 4 → 7 (los suma)
input() devuelve texto, siempre, aunque
la persona escriba un número.
Convertir de un tipo a otro
float("3.5") → 3.5
str(42) → "42"
int(3.9) → 3 (corta, no redondea)
Ojo con el último: int() sobre un float trunca hacia cero, no redondea.
int(3.9) da 3 y int(-3.9) da -3. Si querés redondear, es
round(). Y int("hola") tira error: sólo convierte lo que parece número.
Leer del teclado
edad = int(edad) # ahora sí es número
edad = int(input("¿Cuántos años tenés? ")) # las dos cosas de una
int("42.5") no da 42: tira
ValueError: invalid literal for int() with base 10: '42.5'. int() sobre
un texto exige que el texto sea un entero entero, sin punto. Si el usuario puede escribir
decimales hay que pasar por float primero: int(float("42.5")) sí da 42.
Es la diferencia entre convertir texto a número y recortar un número que ya tenés.
Preguntarle a Python de qué tipo es algo
type(3.14) → float
type("hola") → str
type(True) → bool
No hace falta memorizar nada: cuando un programa se comporta raro, intercalar un
print(type(x), x) antes de la línea que falla resuelve la mitad de los casos. Casi
siempre la respuesta es que algo que creías número es str, porque vino de un
input.
Cualquier valor sirve como condición
Aunque bool tenga solo dos valores, Python sabe leer cualquier dato como verdadero o falso, y esto se usa muchísimo en la unidad 3:
Verdadero: todo lo demás (incluido -3, y también [0])
[0] es verdadero aunque adentro tenga un cero, porque lo que se mira es si la lista está vacía, no qué contiene. Por eso if lista: se lee «si la lista tiene algo», y es la forma idiomática de preguntarlo — mejor que if len(lista) > 0:, que dice lo mismo más largo.
Un programa pide dos números con input() y muestra la suma, pero con 3 y 4 imprime 34. ¿Por qué, y cómo se arregla?
El programa que falla:
b = input("Segundo: ")
print("La suma es", a + b)
Por qué. input() siempre devuelve str. Entonces a
vale "3" y b vale "4", y entre dos strings el
+ no suma: concatena.
El arreglo es convertir apenas entra el dato:
b = int(input("Segundo: "))
print("La suma es", a + b)
Ahora imprime La suma es 7.
Control de razonabilidad: si una suma da un número con los dígitos de los dos sumandos pegados (3 y 4 → 34), no falló la cuenta: son strings.
ValueError: invalid literal for int() with base 10: '3.5', porque
int() sobre texto no acepta el punto. Hay dos arreglos y son decisiones distintas,
no una mejor que la otra: si el enunciado pide enteros, está bien que corte y lo que falta es
avisarlo (eso se hace con try/except, en 5.2); si tiene sentido aceptar decimales,
se cambia a float(input(...)) y listo. Lo que no hay que hacer es
int(float(...)) sin pensarlo: eso acepta el 3.5 y en silencio lo convierte en 3.
Cómo verlo antes de que explote: poné print(type(a), a) justo después del
input. Si dice <class 'str'> 3 falta el int; si dice
<class 'int'> 3 está bien. Ese print de diagnóstico se borra
después, y mientras tanto ahorra media hora de mirar el programa sin entender.
Dónde se cae la mayoría
- Olvidar convertir lo que devuelve input(): se termina concatenando en vez de sumando.
- Esperar que int(3.9) redondee a 4. Trunca: da 3.
- Comparar "10" con 10 y sorprenderse de que no sean iguales: son de tipos distintos.
Hasta acá la explicación. La práctica es la otra mitad: 7 ejercicios de este tema, en cuatro niveles, que no te dicen sólo si está bien al final sino que te corrigen en cada paso y te explican por qué. Además trae una animación que muestra la idea en movimiento.
Practicar Tipos de datos →