Modifica el programa que calcula el producto escalar para que lea los vectores de un archivo de texto llamado datos.txt que contiene un par de números en cada línea (las componentes Xn e Yn) separados por un espacio en blanco. Ten en cuenta lo siguiente:
El sangrado tiene significado en Python: las instrucciones de un mismo bloque (esto es, que deben ser ejecutadas conjuntamente) deben tener idéntica sangría.
Los archivos de programa en Python tienen la extensión .py (aunque, ojo, la extensión puede estar oculta en Windows7).
La lectura de datos de un archivo de texto (datos.txt) requiere con frecuencia cargar el fichero y leerlo de línea en línea:
data = open("datos.txt")
x = []
y = []
for line in data: # line es un string cuyo valor
# es el contenido de una línea
words = line.split() # words es la lista de
# palabras que hay en line
x.append(float(words[0])) # añade el primer número a X
y.append(float(words[1]))
Observa que algunas funciones siguen la sintaxis de la llamada programación con objetos: en vez de split(s) se escribe s.split() y en vez de append(x, value) se escribe x.append(value). Para nuestros propósitos, un objeto no es más que un parámetro privilegiado que actúa como "apellido" del nombre de la función, esto es, precede al nombre de esta.
Nota: Es falso que 23 == "23" porque los datos son de tipos distintos. Para transformar un texto en un entero es preciso usar int("23"). Así, es cierto que int("23")==23. ¿Crees que es cierto 1/3.0==.1/.3? ¿Por qué?
Como ejercicio complementario sobre el manejo de listas, escribe una función moving_average(L, n) que, dada una lista de números L calcule una nueva lista con los valores promedio de las últimas n posiciones. Por ejemplo, dada la secuencia de pesos L =[62, 62.4, 62.2, 62.6, 62.4, 62.8] y n = 4, entonces el resultado es [62.0, 62.2, 62.2, 62.3, 62.4, 62.5].
Tras leer la siguiente nota sobre el uso de módulos, procede al ejercicio 3 (gráficos elementales con Pyplot).