5/21/2018 Desarrollo de Un Programa en Python Para Operar Con Vectores
1/20
Desarrollo de un programa en python
para operar con vectores
Camilo Bernal
22 de agosto de 2014
5/21/2018 Desarrollo de Un Programa en Python Para Operar Con Vectores
2/20
ndice
1. Introduccin 1
2. Anlisis preliminar 2
3. Diseo bsico 3
3.1. Mdulo main . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
3.2. Mdulo suma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
3.3. Mdulo diferencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
3.4. Mdulo p_escalar. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
3.5. Mdulo p_vectorial. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
3.6. Mdulo angulo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
3.7. Mdulo longitud . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43.8. Mdulo menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
4. Pseudo-Cdigo 5
4.1. Mdulo main . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
4.2. Mdulo suma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
4.3. Mdulo diferencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
4.4. Mdulo p_escalar. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
4.5. Mdulo p_vectorial. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
4.6. Mdulo angulo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
4.7. Mdulo longitud . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
4.8. Mdulo menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
5. Cdigo Python 8
5.1. Mdulo main . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
5.2. Mdulo suma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
5.3. Mdulo diferencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
5.4. Mdulo p_escalar. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95.5. Mdulo p_vectorial. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
5.6. Mdulo angulo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
5.7. Mdulo longitud . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
5.8. Mdulo menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
6. Conclusiones 16
I
5/21/2018 Desarrollo de Un Programa en Python Para Operar Con Vectores
3/20
7. Lecturas recomendadas 17
II
5/21/2018 Desarrollo de Un Programa en Python Para Operar Con Vectores
4/20
1. Introduccin
Lo primero que se debe aclarar es que no soy un experto en programacin ni mucho
menos. Si eres un aprendiz (como yo) este manual puede ayudarte. Si eres un experto,
quizs slo te sirva para aprender cmo "no hacer las cosas como un aprendiz".
Se presentan las operaciones bsicas sobre dos vectores tridimensionales. El documento
presenta un ejemplo de resolucin del problema partiendo desde un diseo muy bsico y
concluyendo con un programa en lenguaje Python, que si bien no es perfecto, al menos
funciona como prototipo.
1
5/21/2018 Desarrollo de Un Programa en Python Para Operar Con Vectores
5/20
2. Anlisis preliminar
Se desea realizar diversas operaciones sobres dos vectores tridimensionales v1 y v2. Se
quiere adems que el usuario elija la operacin que quiere realizar.
Las operaciones que se pueden realizar son las siguientes:
Suma: (x1, y1, z1) + (x2, y2, z2) = (x1+ x2, y1+ y2, z1+ z2)
Diferencia: (x1, y1, z1)(x2, y2, z2) = (x1x2, y1y2, z1z2)
Producto escalar:(x1, y1, z1) (x2, y2, z2) = x1x2+ y1y2+ z1z2
Producto vectorial:(x1, y1, z1)
(x2, y2, z2) =
(y1z2z1y2, z1x2x1z2, x1y2y1x2)
Angulo entre(x1, y1, z1)y(x2, y2, z2) = 180 arc cos x1x2+y1y2+z1z2
(x21+y21+z21)
(x22+y22+z22)
Longitud de(x , y , z ):
x2 + y2 + z2
Se recomienda hacer un trabajo de programacin incremental, esto es ir realizando pe-
queos cambios al programa y volver a llamar al intrprete para tareas de depuracin, a
fin de que cuando se concluya la tarea no se tenga una cantidad desconocida de errores.
Una de las mayores frustraciones que en lo personal he tenido realizando programas, se
relaciona con el bloqueo mental ante una cantidad excesiva de cdigo y excepciones. Lo
que recomiendo es realizar un diseo previo y escribir todo el pseudocdigo. Antes de
escribir una sola lnea de cdigo, es muy conveniente tener perfectamente claro cmo
resolver el problema; este pequeo truco ahorrar muchas horas de trabajo y mucha
frustracin (De otro modo, puedes terminar dando "palos de ciego").
2
5/21/2018 Desarrollo de Un Programa en Python Para Operar Con Vectores
6/20
3. Diseo bsico
El programa se construir en mdulos, a fin de evitar que los ficheros individuales tengan
una cantidad excesiva de cdigo.
Se construirn 8 mdulos: Uno para cada operacin, y el mdulo . En el
mdulo se llama los dems componentes del programa. El mdulo se
har en ltimo lugar, puesto que necesita de resultados provistos por los dems mdulos.
Una vez hechos todos los mdulos de operaciones, se empieza a hacer el mdulo ,
que permite al usuario elegir entre una serie de opciones para operar con los vectores.
A continuacin se presenta un bosquejo bsico de lo que contendr cada mdulo.
3.1. Mdulo main
D e f i n i r f u n ci o n main
E x p li c a r l o que h ac e
s o l i c i t a r p ar m et ro s
L la ma r a l a f u n c i n
M os tr ar r e s u l t a d o
I n v oc a r f u n c i o n main
3.2. Mdulo suma
D e f i n i r f u n c i o n f_suma
E x p li c a r l o que h ac e
H ac er l a suma d e v e c t o r e s
R et or n ar r e s u l t a d o
3.3. Mdulo diferencia
D e f i n i r f u nc i on f _ d i f e re n c i a
E x p li c a r l o que h ac e
Hacer d i f e r e n c i a de v e c to r es
R et or n ar r e s u l t a d o
3.4. Mdulo p_escalar
3
5/21/2018 Desarrollo de Un Programa en Python Para Operar Con Vectores
7/20
D e f i n i r f u n c i o n f _ p _ es c al a r
E x p li c a r l o que h ac e
H ac er p r od u ct o e s c a l a r
R et or n ar r e s u l t a d o
3.5. Mdulo p_vectorial
D e f i n i r f u n ci o n f _ p_ v ec t or i al
E x p li c a r l o que h ac e
H ac er p r od u ct o v e c t o r i a l
R et or n ar r e s u l t a d o
3.6. Mdulo angulo
D e f i n i r f u n ci o n f _a ng ul o
E x p li c a r l o que h ac e
H ac er c a l c u l o d e n gu l o
R et or n ar r e s u l t a d o
3.7. Mdulo longitud
D e f i n i r f u n ci o n f _ lo n gi t ud
E x p li c a r l o que h ac e
H ace r c a l c u l o de l o n g i tu d
R et or n ar r e s u l t a d o
3.8. Mdulo menu
D e f i n i r f u n c i o n d e s p l e g a r_ o p c io n e s
E x p li c a r l o que h ac e
d e sp l eg a r l a s o p ci on e s a l u s ua r io
R et or n ar o p ci o n e l e g i d a
D e f i n i r f u n ci o n e j ec u ta r _o p ci o n
E x p li c a r l o que h ac e
E je cu ta r l a o pc io n e l e g i d a
4
5/21/2018 Desarrollo de Un Programa en Python Para Operar Con Vectores
8/20
4. Pseudo-Cdigo
Una vez realizado el diseo bsico, se puede empezar a escribir el pseudo-cdigo. Para
esto es suficiente con utilizar el diseo previo y empezar a realizar pequeas adiciones,
que servirn como pistas y evitarn el bloqueo mental ms adelante.
4.1. Mdulo main
D e f i n i r f u n c i o n m ain
I nv oc a a o t r o s c om po ne nt es d e l pro gra ma p ar a c a l c u l a r y
d et er mi na r e l r e s u l t a d o
E s t a b l e c e r p a r m et r osLlama r a l a f u n c i n que c o r re s p on d a
M os tr ar r e s u l t a d o
I n v o c a r f u n c i o n main
4.2. Mdulo suma
D e f i n i r f u n c i o n f_suma
Suma d os v e c t o r e s t r i d i m e n s i o n a l e s
Ha ce r l a suma d e v e c t o r e s usand o un c i c l o f o r
I r g ua rd an do c ad a c oo rd en ad a e n l a l i s t a r_sumaR et or na r r e s u l t a d o
4.3. Mdulo diferencia
D e f i n i r f u nc i on f _ d i f e r en c i a
C al cu la l a d i f e r e n c i a e n tr e d os v e c to r e s t r i d i me n s i o n a le sHacer d i f e r e n c i a de v e c to r e s usando un c i c l o f o r
I r gua rd ando c ada c oo rd en ad a e n l a l i s t a r _ d i f e r e n c i aR et or na r r e s u l t a d o
4.4. Mdulo p_escalar
5
5/21/2018 Desarrollo de Un Programa en Python Para Operar Con Vectores
9/20
D e f i n i r f u n c i o n f _ p _ es c al a r
C al cu la e l p ro du ct o e s c a l a r de dos v e c to r e s t r i d im e n s i o n a le s
Ha ce r p r od uc to e s c a l a r usando un c i c l o f o r
I r guardando e l acumulado en r_p_escalar
R et or na r r e s u l t a d o
4.5. Mdulo p_vectorial
D e f i n i r f u n ci o n f _ p_ v ec t or i al
C al cu la e l p ro du ct o v e c t o r i a l de dos v e c to r e s t r i d i me n s i o n a le s
Ha ce r p r od u ct o v e c t o r i a l
R et or na r r e s u l t a d o
4.6. Mdulo angulo
D e f i n i r f u n c i o n f _ an gu lo
C al cu la e l a ng ulo de dos v e c to r e s t r i d i me n s i o n a l es
Ha ce r c a l c u l o de ng u lo
C a l cu l a r p ro du ct o e s c a l a rC a l cu l a r L on gi tu d de v e c to r 1
C a l cu l a r L on gi tu d de v e c to r 2
C a l c u l a r d en om in ad or ( m ul ti p . l o s 2 a n t e r i o r e s )d i v i d i r p ro du c to e s c a l a r e n t r e d e no mi na do rA p l i c a r a rc oc ose no a l a d i v i s i n a n t er i orM u l t i p l i c a r r e s u l t a d o a n t e r i o r p or 18 0/ p i ( )R et or na r r e s u l t a d o
4.7. Mdulo longitud
D e f i n i r f u n ci o n f _ lo n gi t udC al cu la l a l o ng i tu d de un v e ct o r t r i di m e n si o n a l
H a c e r c a l c u l o d e l o n g i t u d
R et or na r r e s u l t a d o
4.8. Mdulo menu
6
5/21/2018 Desarrollo de Un Programa en Python Para Operar Con Vectores
10/20
D e f i n i r f u n ci o n d e s pl e ga r _o p c io n e s
D es pl ie g a una s e r i e de o p ci o ne s pa ra e l e g i r
d e sp l eg a r l a s o p ci o ne s a l u s ua ri o
p ed ir que e l i j a una
v a l i d ar e l e c c i nR et or na r l a e l e c c i n o bt en id a
D e f i n i r f u n ci o n e j e cu t ar _ op c io n
E je cu ta una a c c i n e l e g i d a en l a f u n ci n d e sp l eg a r_ o pc i on e s
C re ar b u cl e i n d e f i n i d o
Llama r a l a f u n c i n d e s p l eg a r _ op c i o n es
E je cu ta r l a o pc io n e l e g i d aS i l a o pc io n e l e g i d a e s 9 , romper e l b uc le
Retornar
7
5/21/2018 Desarrollo de Un Programa en Python Para Operar Con Vectores
11/20
5. Cdigo Python
Creo que no es intil repetirlo: El cdigo se escribe NICAMENTE cuando ya se tenga
alguna idea de cmo resolver el problema y se haya planteado la solucin con alguna
claridad. Lanzarse a escibir cdigo de manera irreflexiva es la receta perfecta para la
frustracin: ojal no caigan en ese error.
A continuacin se presenta una propuesta del cdigo en Python, talvez est plagada de
errores, ingenuidades e inconsistencias, pero incluso de eso podemos aprender, y aprender
es el nico objetivo de este documento.
5.1. Mdulo main#! / u s r / b i n / e nv p yt ho n
# e n c o di n g : L a t i n 1
import menu
d e f m ai n ( ) :
" " " I n v oc a a o t r o s c om p on en te s d e l p ro gr am a
para c a l c u l a r y d e t e r m i n a r e l re su lt a do " " "
# E s t a b l e c e r p ar me tr o s
# L la ma r a l a f u n c i n e j e c ut a r _ op c i o n d e l mdulo
# menu
menu . eje cuta r_op cio n ()
main()
5.2. Mdulo suma
#! / u s r / b i n / e nv p yt ho n
# e n c o di n g : L a t i n 1
def f_suma(v1 , v2 ) :
" " " Suma d os v e c t o r e s t r i d i m e n s i o n a l e s " " "
# Ha ce r l a suma d e v e c t o r e s u san do un c i c l o f o r
r_suma = [ ]
f o r i i n x ra ng e ( 3 ) :
# I r g ua rd an do c ad a c oo rd en ad a en l a l i s t a r_sumar_suma. append ( v1 [ i ]+v2 [ i ] )
# R et or na r r e s u l t a d o
ret urn r_suma
## v1 = (10 ,10 ,10 )
8
5/21/2018 Desarrollo de Un Programa en Python Para Operar Con Vectores
12/20
## v2 = (4 ,4 ,6 )
## p r i n t f _s um a ( v 1 , v 2 )
5.3. Mdulo diferencia
#! / u s r / b i n / e nv p yt ho n
# e n c o di n g : L a t i n 1
d e f f _ d i f e r e n c i a ( v1 , v2 ) :
" " " C al cu la l a d i f e r e n c i a e n tr e d os
v e c t o r e s t r i d i m e n s i o n a l e s " " "
# Hacer d i f e r e n c i a de v e c to r e s usando u n c i c l o f o r
# I r g uar dan do c ad a c o or de na da en l a l i s t a r _ d i f e r e n c i ar _ d i f e r e n c i a = [ ]
f o r i i n x ra ng e ( 3 ) :
r _ d i f e r e n c i a . a pp en d ( v 1 [ i ] v2 [ i ])# R et or na r r e s u l t a d o
r e tu r n r _ d i f e r e n c i a
## v1 = (1 ,2 ,3 )
## v2 = (3 ,2 ,1 )
## p r i n t f _ d i f e r e n c i a ( v1 , v2 )
5.4. Mdulo p_escalar
#! / u s r / b i n / e nv p yt ho n# e n c o di n g : L a t i n 1
d e f f _ p _ e s c a l a r ( v 1 , v 2 ) :
" " " C a lc u la e l p ro du ct o e s c a l a r de d os
v e c t o r e s t r i d i m e n s i o n a l e s " " "
# Ha ce r p r od uc to e s c a l a r u san do u n c i c l o f o r
# I r g ua rd an do e l a cu mu la do e n r _ p _e s c al a rr _ p _ e s c a l a r = 0
f o r i i n x ra ng e ( 3 ) :
r_p_e scala r += v1 [ i ] v2 [ i ]
# R et or na r r e s u l t a d or e t u r n r _ p _e s ca l a r
## v1 = (2 ,1 ,4 )
## v2 = (7 , 1 , 5 )## p r i n t f _ p _ e s c a l a r ( v 1 , v 2 )
5.5. Mdulo p_vectorial
9
5/21/2018 Desarrollo de Un Programa en Python Para Operar Con Vectores
13/20
#! / u s r / b i n / e nv p yt ho n
# e n c o di n g : L a t i n 1
d e f f _ p _ v e c t o r i a l ( v 1 , v 2 ) :
" " " C a lc u la e l p ro du ct o v e c t o r i a l de
d os v e c t o r e s t r i d i m e n s i o n a l e s " " "
# H ac er p r od u ct o v e c t o r i a l
pv_x = v1 [ 1 ] v 2 [ 2 ] v 1 [ 2 ] v 2 [ 1 ]pv_y = v1 [ 2 ] v 2 [ 0 ] v 1 [ 0 ] v 2 [ 2 ]pv_z = v1 [0] v 2 [ 1 ] v 1 [ 1 ] v 2 [ 0 ]r e s u l t a d o = [ p v_x , pv_y , pv_z ]
# R et or na r r e s u l t a d o
r e tu r n r e s u l t ad o
## v1 = (3 1 , 4 0 , 3 )## v 2 = ( 3 , 0 ,63)## p r i n t f _ p _ v e c t o r i a l ( v 1 , v 2 )
5.6. Mdulo angulo
#! / u s r / b i n / e nv p yt ho n
# e n c o di n g : L a t i n 1
i m po r t p _ e s c a l a r
i mp or t l o n g i t u d
f ro m math i m po r t a c os , p i
d e f f _ a n g ul o ( v 1 , v 2 ) :
" " " C a lc u la e l a ng ul o de d os v e c t o r es t r i d i m e n s i o n a l e s " " "# Ha ce r c a l c u l o de ng ul o
#C a lc u l ar p ro du ct o e s c a l a rp r o d _ e s c a l a r = p _ e s c a l a r . f _ p _ e s c a l a r ( v 1 , v 2 )
#C a l c u l a r L on gi tu d d e v e c t o r 1l o ng _ v1 = l o n g i t u d . f _ l o n g i t u d ( v 1 )
#C a l c u l a r L on gi tu d d e v e c t o r 2l o ng _ v2 = l o n g i t u d . f _ l o n g i t u d ( v 2 )
#C a l c u l a r d en om in ad or ( m u lt i p . l o s 2 a n t e r i o r e s )denominador = long_v1 long_v2
#d i v i d i r p r od u ct o e s c a l a r e n t r e d e no mi na do rv l o r = p r o d _ e s c a l a r / d en om in ad or
#A p l i c a r a rc oc os en o a l a d i v i si n a n te r io rv l o r 1 = a c o s ( v l o r )
#M u l t i p l i c a r r e s u l t a do a n t e r i o r p or 1 80 / p i ( )r e s u l t ad o = 1 80 / p i v l o r 1
# R et or na r r e s u l t a d o
r e tu r n r e s u l t ad o
10
5/21/2018 Desarrollo de Un Programa en Python Para Operar Con Vectores
14/20
## v1 = (1 , 0 , 1 )## v 2 = ( 1 , 0 ,1)## p r i n t f _ an g ul o ( v1 , v 2 )
5.7. Mdulo longitud#! / u s r / b i n / e nv p yt ho n
# e n c o di n g : L a t i n 1
f ro m math i m po r t s q r t
d e f f _ l o n g i t u d ( v ) :
" " " C a lc u la l a l o n g i tu d de un v e c to r t r i d i m e n s i o n a l " " "
# Hacer c a l c u l o de l o ng i tu d usando c i c l o f o r
s _ l o n g i t u d = 0
f o r i i n x ra ng e ( 3 ) :
s _ l o n g i t u d += v [ i ] 2r e s u l t a d o = s q r t ( s _ l o n g i tu d )
# R et or na r r e s u l t a d o
r e tu r n r e s u l t ad o
## v= (10 ,10 ,10 )
## p r i n t f _ l o n g i t u d ( v )
5.8. Mdulo menu
#! / u s r / b i n / e nv p yt ho n
# e n c o di n g : L a t i n 1
import suma
i mp or t d i f e r e n c i a
i m po r t p _ e s c a l a r
i m po r t p _ v e c t o r i a l
i m po r t a n g ul o
i mp or t l o n g i t u d
d e f d e s p l eg a r _ o pc i o n e s ( ) :
" " " D es pl i eg a una s e r i e de o p ci o ne s p ara e l e g i r " " "
# de s pl e ga r l a s o p ci o ne s a l u s ua ri o
p r i n t \ n \ n\ n \n \ n\ n \n \n
p r i n t =============================
p r i n t VECTORESp r i n t =============================
p r i n t \ n1 . I n t r o d u c i r e l p ri me r v e ct or
p r i nt 2 . I n t r od u c i r e l seg un do v ec to r
p r i nt 3 . C al c ul a r l a suma
p ri n t 4 . C al cu la r l a d i f er e nc i a
11
5/21/2018 Desarrollo de Un Programa en Python Para Operar Con Vectores
15/20
p r i nt 5 . C al c ul a r e l p ro du ct o e s ca l a r
p r i nt 6 . C al c ul a r e l p ro du ct o v e c t or i a l
p r i nt 7 . C al c ul a r e l ng ul o ( en g ra do s ) e n tr e e l l o s
p r i nt 8 . C al c ul a r l a l on gi tu d
p r i nt 9 . F i na l i za r
# pe di r que e l i j a una
w h i l e T ru e :
p r i n t \ n\ nPor f a vo r , e l i j a una de l a s o p c io n e s m os tr ad as : \ n
e l e c c i o n = r aw _i np ut ( )
# v a l id a r e l e cc i n
#I n te n ta r c o n v e rt i r en e n te rotry :
e l e c c i o n = i n t ( e l e c c i o n )
i f e l e c c i o n i n x ra ng e ( 1 , 1 0 ) :
break
excep t :
p r i n t " \nERROR : D eb e i n t r o d u c i r un n m er o e n t e r o "
#V e r i f i c a r que s e e nc ue nt ra en e l ra ng o c o r re c t oi f e l e cc i o n < 1 or e l e cc i o n > 9 :
p r i n t " \nERROR : Debe i n t r o d u c i r un e n t e r o e n t r e 1 y 9 "
# R et or na r e l e c c i n o b te n id a
r et ur n e l e c c i o n
d e f e j e c ut a r _ op c i o n ( ) :
" " " E je cu ta una a c ci n e l e g i d a en l a f u n ci n d e sp l eg a r_ o pc i on e s " " "
# I n i c i a l i z a r v ec to re s 1 y 2
v1 = [ ]
v2 = [ ]
# C re ar b u cl e i n d e f i n i d o
w h i l e T ru e :
# O b te n er u na o p c i o n
o p c i o n = d e s p l e g a r _ o p c i o n e s ( )
# E je cu ta r l a o pc io n e l e g i d a
i f o p c i o n == 1 :
# >Se ha e l e g i do i n t r o d uc i r e l p ri me r v e ct or
# In t ro d uc i r v a lo r es a t ra v s d e c i c l o f o r
f o r i i n [ x , y , z ] :
w h i l e T ru e :
p r i n t \ n I nt ro d uz ca v a l o r de , i , e n e l p ri me r v e c to r : \ n
va lo r = raw_input ()
# V a li d ar v a l o r
12
5/21/2018 Desarrollo de Un Programa en Python Para Operar Con Vectores
16/20
#I n te n ta r c o n v e rt i r a f l o t a n t etry :
v a l o r = f l o a t ( v a l o r )
break
excep t :
pr in t "\nERROR: Debe in gr es ar un nmero"
p r i n t " \ n P r e s i o n e l o n g i t u d v 1 : ENTER p a ra c o n t i n u a r : \ n "
raw_input ()
v1 . append( va lo r )
p r i n t " \ n V ec to r I n t r o d u ci d o c on x i t o "
p r i n t " \ n P r e s i o n e ENTER p a r a c o n t i n u a r : \ n "
raw_input ()
e l i f o p c i o n == 2 :
# >Se h a e l e g i d o i n t r o d u c i r e l s eg un do v e c to r
# In t ro d uc i r v a lo r es a t ra v s d e c i c l o f o r
f o r i i n [ x , y , z ] :
w h i l e T ru e :
p r i n t \ n I nt ro d uz ca v a l o r de , i , e n e l s eg un do v e c to r : \ n
va lo r = raw_input ()
# V a li d ar v a l o r
#I n te n ta r c o n v e rt i r a f l o t a n t etry :
v a l o r = f l o a t ( v a l o r )
break
excep t :
pr in t "\nERROR: Debe in gr es ar un nmero"
p r i n t " \ n P r e s i o n e ENTER p a r a c o n t i n u a r : \ n "
raw_input ()
v2 . append( va lo r )
p r i n t " \ n V ec to r I n t r o d u ci d o c on x i t o "
p r i n t " \ n P r e s i o n e ENTER p a r a c o n t i n u a r : \ n "
raw_input ()
e l i f o p c i o n == 3 :
# >Se h a e l e g i d o c a l c u l a r l a suma d e v e c t o r es
# V e r i f ic a r que e x is t en l o s dos v ec to r es
i f l e n ( v1 ) != 3 and l e n ( v2 ) != 3 :
p r i n t " \nERROR : L os d o s v e c t o r e s n o e s t n d i s p o n i b l e s "
p r i n t " \ n P r e s i o n e ENTER p a r a c o n t i n u a r : \ n "
raw_input ()
e l s e :
r_suma = suma . f_suma( v1 , v2 )
p r i n t " \ n La suma e s : " , r_suma
13
5/21/2018 Desarrollo de Un Programa en Python Para Operar Con Vectores
17/20
p r i n t " \ n P r e s i o n e ENTER p a r a c o n t i n u a r : \ n "
raw_input ()
e l i f o p c i o n == 4 :
# >Se ha e l eg i do c a l cu l a r l a d i f e r e n ci a de v ec to r es
# V e r i f ic a r que e x is t en l o s dos v ec to r es
i f l e n ( v1 ) != 3 and l e n ( v2 ) != 3 :
p r i n t " \nERROR : L os d o s v e c t o r e s n o e s t n d i s p o n i b l e s "
p r i n t " \ n P r e s i o n e ENTER p a r a c o n t i n u a r : \ n "
raw_input ()
e l s e :
r _ d i f e r e n c i a = d i f e r e n c i a . f _ d i f e r e n c i a ( v1 , v 2 )
p r i nt " \nLa d i f e r e n c i a e s : " , r _ d if e r en c i a
p r i n t " \ n P r e s i o n e ENTER p a r a c o n t i n u a r : \ n "
raw_input ()
e l i f o p c i o n == 5 :
# >Se ha e l e g i do c a l c u l a r e l p ro du ct o e s c a l a r
# V e r i f ic a r que e x is t en l o s dos v ec to r es
i f l e n ( v1 ) != 3 and l e n ( v2 ) != 3 :
p r i n t " \nERROR : L os d o s v e c t o r e s n o e s t n d i s p o n i b l e s "
p r i n t " \ n P r e s i o n e ENTER p a r a c o n t i n u a r : \ n "
raw_input ()
e l s e :
r_p_escalar = p_esc alar . f_p_esc alar (v1 , v2)
p r i n t " E l p ro du ct o e s c a l a r e s : " , r _p _e sc al ar
p r i n t " \ n P r e s i o n e ENTER p a r a c o n t i n u a r : \ n "
raw_input ()
e l i f o p c i o n == 6 :
# >Se h a e l e g i do c a l c u l a r e l p ro du ct o v e c t o r i a l
# V e r i f ic a r que e x is t en l o s dos v ec to r es
i f l e n ( v1 ) != 3 and l e n ( v2 ) != 3 :
p r i n t " \nERROR : L os d o s v e c t o r e s n o e s t n d i s p o n i b l e s "
p r i n t " \ n P r e s i o n e ENTER p a r a c o n t i n u a r : \ n "
raw_input ()
e l s e :
r _ p _ v e c t o r i a l = p _ v e c t o r i a l . f _ p _ v e c t o r i a l ( v 1 , v 2 )
p r i n t " E l p ro du ct o v e c t o r i a l e s : " , r _p _ ve c to ri a l
p r i n t " \ n P r e s i o n e ENTER p a r a c o n t i n u a r : \ n "
raw_input ()
e l i f o p c i o n == 7 :
# >Se ha e l e g i do c a l c u l a r e l a ng ul o
# V e r i f ic a r que e x is t en l o s dos v ec to r es
i f l e n ( v1 ) != 3 and l e n ( v2 ) != 3 :
14
5/21/2018 Desarrollo de Un Programa en Python Para Operar Con Vectores
18/20
p r i n t " \nERROR : L os d o s v e c t o r e s n o e s t n d i s p o n i b l e s "
p r i n t " \ n P r e s i o n e ENTER p a r a c o n t i n u a r : \ n "
raw_input ()
e l s e :
r_angulo = angulo . f_angulo (v1 , v2)
p r i n t " \ n El a n gu l o e s : " , r _a ng ul o
p r i n t " \ n P r e s i o n e ENTER p a r a c o n t i n u a r : \ n "
raw_input ()
e l i f o p c i o n == 8 :
# >Se h a e l e g i do c a l c u l a r l a l o ng i tu d
# V e r i f i c a r que e x i s t e a l menos un v ec t or
i f l e n ( v 1 ) == 3 o r l e n ( v 2 ) == 3 :
i f l e n ( v 1 ) == 3 :
r _ l o n g i tu d = l o n g i t u d . f _ l o n g i t u d ( v 1 )
p r i n t " \ nLa l o n g i tu d de v1 e s : " , r _l o ng i tu d
i f l e n ( v 2 ) == 3 :
r _ l o n g i tu d = l o n g i t u d . f _ l o n g i t u d ( v 2 )
p r i n t " \ nLa l o n g i tu d de v2 e s : " , r _l o ng i tu d
p r i n t " \ n P r e s i o n e ENTER p a r a c o n t i n u a r : \ n "
raw_input ()
e l s e :
pr in t "\nERROR: No hay ve ct or es "
p r i n t " \ n P r e s i o n e ENTER p a r a c o n t i n u a r : \ n "
raw_input ()
e l i f o p c i o n == 9 :
# >Se ha e l e g i do s a l i r
break
# S a l i r de l a f un ci n
r e t u r n
#d e s p l e g a r _ o p c i o n e s ( )
#e j e c u t a r _ o p c i o n ( )
15
5/21/2018 Desarrollo de Un Programa en Python Para Operar Con Vectores
19/20
6. Conclusiones
Antes de acometer la escritura de cdigo, conviene realizar un anlisis bsico, un
diseo preliminar y la escritura del pseudocdigo, con lo cual se puede aumentar
la productividad y reducir la frustracin en el proceso de depuracin.
Python es un estupendo lenguaje para aprender a programar, y si a esto se le
suma un cdigo convenientemente distrituido en mdulos y funciones junto con los
comentarios pertinentes, es posible disminuir la probabilidad de bloqueo mental
que sufre nuestro cerebro ante objetos abstractos y poco intuitivos.
La programacin incremental consiste en escribir unas pocas lneas y ejecutar prue-
bas constantes sobre ellas. Esto facilita enormemente las tareas posteriores de de-
puracin.
16
5/21/2018 Desarrollo de Un Programa en Python Para Operar Con Vectores
20/20
7. Lecturas recomendadas
Hay varios buenos manuales en internet. En lo personal recomiendo que busquen en
google los ficheros PDF con los siguientes ttulos:
1. "Aprenda a Pensar Como un Programador con Python", de Allen Downey
2. "Inmersin en Python 3", de Mark Pilgrim
3. "El tutorial de Python", de Guido van Rossum
4. "Python Reference Manual", de Guido van Rossum
17