Python Entrada avanzada

Enviado por jalemany el Mié, 09/10/2019 - 17:02

En los ejercicios de programación es muy habitual que el usuario introduzca un número indicando el número de valores que va a introducir, y a continuación una línea con cada valor. Esto se leería mediante un código similar a este:

n = int(input())
for i in range(n):
  valor = int(input())
  print(valor)

Pero en ocasiones una única línea contiene más de un valor.

La instrucción input() lee una línea entera (todo lo que el usuario teclee hasta que presione la tecla "Intro"), y la guarda como un texto. Por lo tanto, en este caso tenemos que separar los distintos números en una lista. Para ello usamos la función split(). Si queremos separar la entrada alrededor del carácter espacio, podemos hacerlo con el siguiente código:

entrada = input().split(' ')
n = int(entrada[0])
for i in range (n):
  valor = int(entrada[i+1])
  print (valor)

Aquí estamos usando un array (entrada) para guardar toda la entrada dividida por los espacios, y la analizamos mediante un bucle.

Pero en ocasiones puede haber más de una línea de entrada, cada una con más de un valor, y no sabemos cuántas líneas hay.

En estos casos usamos una estructura similar al programa anterior, pero lo ejecutamos para cada línea de la entrada.

import sys

for line in sys.stdin:
  entrada = line.split(' ')
  n = int(entrada[0])
  for i in range (n):
    valor = int(entrada[i+1])
    print (valor)

La instrucción import nos permite ampliar las instrucciones y recursos disponibles para nuestro programa, en este caso import sys nos permite acceder a recursos del sistema para poder analizar la entrada con más detalle.

Printer Friendly, PDF & Email

Añadir nuevo comentario

Texto sin formato

  • No se permiten etiquetas HTML.
  • Saltos automáticos de líneas y de párrafos.
  • Las direcciones de correos electrónicos y páginas web se convierten en enlaces automáticamente.