Este manual está escrito en formato teatral entre PyBOT, un robot profesor de Python y Marcos, un estudiante interesado en aprender Python.
Marcos: Estoy intentando resolver un problema y me pide que lea unos números y escriba cuántos números pares hay.
PyBOT: Vale, ¿cómo te dan la entrada?
Marcos: Primero me dicen n, y luego van los n números en líneas separadas.
PyBOT: Para leer una entrada tienes que usar la instrucción input(). Esta instrucción lee una línea entera, y la guarda como un texto. En el caso de que la entrada sea como dices tenemos que hacer
n=int(input())
suma=0
for i in range (n):
valor=int(input())
if (valor%2==0):
suma=suma+1
print (suma)
de esta manera puedes ver que repitiendo n veces la lectura podemos leer toda la entrada. Seguro que la segunda parte del programa ya la sabías hacer.
Marcos: ¿y si los números hubiesen estado en una línea?
PyBOT: 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 hacer el siguiente código.
entrada = input().split(' ')
n = int(entrada[0])
suma=0
for i in range (n):
valor = int(entrada[i+1])
if (valor%2==0):
suma = suma+1
print (suma)
Aquí estamos usando un array (entrada) para guardar toda la entrada, y analizarla durante el mismo bucle.
Marcos: Oh no, las cosas se complican, aquí puede haber más de una línea de entrada, y para cada línea tengo que contar cuántos pares hay. ¿Cómo puedo leer todas las líneas?
PyBOT: Sí, esta es una entrada muy típica de los problemas, donde no sabemos hasta cuándo tenemos que leer. Para ello usamos una estructura muy 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])
suma = 0
for i in range (n):
valor = int(entrada[i+1])
if (valor%2 == 0):
suma = suma + 1
print (suma)
el import nos permite tener acceso a ciertas funciones de sistema. ¡La segunda parte del programa es similar al anterior!
Marcos: Gracias, creo que ya lo entiendo.

Añadir nuevo comentario