Python / input() / Guardar la entrada del usuario en una variable
En Python, input() lee una línea de la entrada estándar y devuelve una cadena. Puedes utilizarla mediante una variable con name = input(). Incluso los números escritos necesitan int() o float() antes de calcular. Se elimina el salto de línea final, pero se conservan los demás espacios.
Leer una línea y utilizarla
Los ejemplos solo necesitan Python 3 y se verificaron proporcionando entrada estándar a Python 3.12.14. Guarda cada ejemplo completo en UTF-8 como input_demo.py y ejecuta python input_demo.py en un terminal, o python3 según tu entorno. Sustituye el contenido para probar cada ejemplo de forma independiente.
Ejecuta el código, escribe JB y pulsa Enter. Aquí no se muestra un mensaje previo, por lo que es normal que espere sin imprimir nada.
name = input()
print(f"Hello, {name}!")
print(type(name).__name__)
Este y los demás bloques de resultados muestran solo la salida del programa, sin el eco de lo que escribes en el terminal.
Hello, JB!
str
El argumento prompt de la documentación de input() permite mostrar una indicación con input("Name: "). Esa indicación no forma parte del valor devuelto. La entrada estándar también puede proceder de archivos u otros programas.
Convertir texto numérico antes de calcular
Introduce 0012 en la primera línea y 1.25 en la segunda. Cada llamada lee una línea distinta, así que no escribas ambos en la misma.
text = input()
print(repr(text))
print(text + "1")
number = int(text)
print(number + 1)
price = float(input())
print(price * 2)
'0012'
00121
13
2.5
repr() muestra la representación de la cadena con comillas. Añadir "1" al texto produce 00121; después de convertirlo a entero, sumar 1 da 13. La conversión pierde los ceros iniciales. Conserva como texto los códigos postales o identificadores cuyo formato sea importante.
int("1.25") e int("hello") generan ValueError. Usa float cuando corresponda un número de coma flotante; aquí el separador decimal es un punto. No se eliminan automáticamente símbolos monetarios ni comas de agrupación. Para cálculos monetarios decimales exactos, considera por separado las limitaciones del formato binario.
Reintentar una entrada incorrecta
Poder convertir una cadena no significa que su valor sea válido. Este ejemplo admite edades no negativas. Escribe hello, -1 y 20 en líneas sucesivas:
while True:
try:
text = input()
except EOFError:
print("Input ended.")
break
try:
age = int(text)
except ValueError:
print("Enter a whole number.")
continue
if age < 0:
print("Enter 0 or greater.")
continue
print(f"Accepted: {age}")
break
Enter a whole number.
Enter 0 or greater.
Accepted: 20
ValueError trata las cadenas no convertibles; otra condición rechaza enteros negativos. Una línea vacía también falla en int. Al aceptar un valor, break termina el bucle. Según la gestión de excepciones, captura errores concretos y previstos. EOF termina el bucle para evitar solicitudes interminables.
Espacios y líneas vacías
Escribe dos espacios, JB y otros dos espacios. En la segunda línea, pulsa Enter sin escribir caracteres.
text = input()
print(repr(text))
print(repr(text.strip()))
empty = input()
print(repr(empty))
print(empty == "")
' JB '
'JB'
''
True
input() mantiene los espacios que rodean JB. str.strip() devuelve una cadena nueva sin espacio en los extremos y no modifica la original. No lo apliques indiscriminadamente si los espacios importan. Una línea vacía es "", no None. Decide si una línea compuesta solo de espacios también debe considerarse vacía.
Leer dos valores de una línea
Divide la cadena y convierte sus elementos. Introduce 10 20 en una sola línea:
parts = input().split()
if len(parts) != 2:
print("Enter exactly two integers.")
else:
try:
left, right = map(int, parts)
except ValueError:
print("Use whole numbers.")
else:
print(left + right)
30
split() sin separador agrupa los espacios consecutivos. Primero se exige que haya dos elementos y después map entrega cada uno a int. Solo 10 o tres valores producen el aviso de cantidad; 10 hello produce el aviso de enteros. Este ejemplo termina tras una entrada incorrecta; si necesitas reintentos, utiliza un bucle como el anterior.
EOFError y entornos sin entrada
EOF significa End of File: el final del flujo de entrada. Si no hay más datos, input() genera EOFError en lugar de devolver una línea vacía. Este código intenta dos lecturas. Un flujo con un solo salto de línea produce:
for index in range(2):
try:
text = input()
except EOFError:
print("EOF")
break
print(repr(text))
''
EOF
La primera lectura obtiene una cadena vacía y la segunda encuentra EOF. En un terminal, pulsa Enter primero y después envía el fin de entrada. En consolas Windows suele ser Ctrl+Z y Enter; en macOS/Linux, Ctrl+D en una línea vacía. El terminal o IDE puede procesar estas teclas de otra manera.
Si el panel de salida del IDE no admite escribir, usa un terminal o consola compatible. Con archivos o jueces en línea, comprueba que se proporcionan todas las líneas necesarias. Esperar una entrada y llegar a EOF son estados diferentes. No necesitas ejecutar el texto del usuario con eval() para convertirlo a número.




