Entrada y salida [Python]
Imports
Los imports en Python gastan tiempo y memoria, así que es mejor importar solo lo que se va a usar.
Entrada
En Python se leen las líneas enteras con input() en formato str.
# LEER UNA LINEA
cadena = input() # leer una cadena
En muchos casos el input lo querremos en formato número o lista. Estas funciones pueden ser muy útiles:
split()te divide la línea por espacios (o por el string que se pase por argumento)int()yfloat()son funciones que convierten cadenas a enteros o números reales.map(f, lista)aplica una función a cada elemento de la lista. Esta función puede ser, por ejemplo, un casting. El return de map es un iterador y no una lista, suele ser útil (aunque no siempre necesario) convertirlo a listalist.
Split
# LEER UNA LINEA Y DIVIDIRLA
x, y = input().split() # Si conocemos de antemano el numero de elementos que hay
l = input().split() # Si no conocemos el numero de elementos que hay creamos una lista
Leer números
# LEER NUMEROS
entero = int(input()) # leer un entero
decimal = float(input()) # leer un decimal
Leer una lista de números
# LEER UNA LISTA DE NUMEROS
l = list(map(int, input().split())) # leer una lista de enteros
El input se acaba sin avisar
Algunos problemas acaban cuando no quedan líneas que leer.
# EL INPUT SE ACABA SIN AVISAR
while True:
try:
x = input()
# CODE HERE
except EOFError:
break
Salida
La salida se hace con print.
Esta función añade por defecto un salto de línea al final.
Formatear strings
Un string se formatea de forma muy sencilla con f''.
Esto permite meter variables directamente en el string.
x = 3
y = 5
print(f'{x} + {y} = {x+y}') # == "3 + 5 = 8"
Argumentos de print
Print permite varios argumentos, los cuales se convertirán a string y se imprimirán separados por un espacio.
Si se quiere separar por otro string, se puede usar el argumento sep, que por defecto es un espacio.
Para determinar el final de la línea, se puede usar el argumento end, que por defecto es un salto de línea.
print(3, 5, 8) # == "3 5 8"
print(3, 5, 8, sep=' + ') # == "3 + 5 + 8"
print(3, 5, sep=' + ' , end=' = 8\n') # == "3 + 5 = 8"
Ejemplo
Pongamos un problema cuyo input serán unas listas de números donde el primero de cada línea indica el número de elementos de esa línea. El input acabará sin avisar. La salida devolverá la suma de los elementos de cada línea.
Input:
3 1 2 3
4 4 5 6 7
Output:
6
22
while True:
try:
l = list(map(int, input().split()))
n = l[0]
print(sum(l[1:]))
except EOFError:
break