Matemáticas en Python
Índice
Notas de lectura del libro Programmation en Python pour les mathématiques de Alexandre Casamayou-Boucau, Guillaume Connan y Pascal Chauvin. El código original se encuentra aquí.
1 Introducción al lenguaje Python
1.1 Variables y asignaciones:
Se pueden calcular el valor, el identificador y el tipo de los objetos. Por ejemplo,
>>> 128, id (128), type (128); (128, 139682110102016, <class 'int'>)
Se puede asignar valores a variables mediante
=
. Por ejemplo,>>> a = 128 >>> a 128 >>> a, id (a), type (a) (128, 139682110102016, <class 'int'>) >>> 2 * a 256
Se conservan los valores de la primera asignación:
>>> a 128 >>> b = 2 * a >>> b 256 >>> b == 2 * a True >>> a = 0 >>> b == 2 * a False >>> b 256
Se puede actualizar el valor de las variables. Por ejemplo,
>>> a = 3; a 3 >>> a = a + 1; a 4 >>> a += 1; a 5 >>> a -= 2; a 3 >>> a /= 3; a 1.0 >>> a *= 5; a 5.0
Se puede hacer asignaciones simultáneas. Por ejemplo,
>>> x = y = 3 >>> x, y (3, 3) >>> id (x), id (y) (139682110098016, 139682110098016)
Se pueden hacer asignaciones en paralelo. Por ejemplo,
>>> x, y = 2, 5 >>> x, y (2, 5)
Se puede intercambiar los valores de variables. Por ejemplo,
>>> x, y = 2, 5 >>> x, y = y, x >>> x, y (5, 2)
Se puede eliminar valores de variables con
del
. Por ejemplo,>>> x = 3 >>> x 3 >>> del (x) >>> x Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'x' is not defined
1.2 Funciones
Se pueden definir funciones con
def
yreturn
. Por ejemplo,>>> def f(x): ... return x**7 - 6*x**6 + 15*x**4 + 23*x**3 + x - 9 ... >>> f (2), f (3), f (4) (161, -357, -2885)
Ejemplo de diferencias entre
return
yprint
:>>> def f1 (x): ... return x**7 - 6*x**6 + 15*x**4 + 23*x**3 + x - 9 ... >>> def f2 (x): ... print (x**7 - 6*x**6 + 15*x**4 + 23*x**3 + x - 9) ... >>> f1 (2), f1 (3), f1 (4) (161, -357, -2885) >>> f2 (2), f2 (3), f2 (4) 161 -357 -2885 (None, None, None) >>> f1 (2) + f1 (3) + f1 (4) -3081 >>> f2 (2) + f2 (3) + f2 (4) 161 -357 Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: unsupported operand type(s) for +: 'NoneType' and 'NoneType'
Las líneas a continuación del primer
return
es código muerto y no se evalúan. Por ejemplo,>>> def por7 (x): ... return 7 * x ... print ("Escribe algo") ... >>> por7 (2) 14
Las variables son locales a las definiciones. Por ejemplo,
>>> def f (x): ... y = 4 ... return x + y ... >>> f (2) 6 >>> y 2
El número de parámetros puede ser distinto de uno. Por ejemplo,
>>> def f (x,y): ... return x + 2 * y ... >>> f (4,5) 14 >>> def g (): ... return 27 ... >>> g (); 27
1.3 Instrucciones de escritura y de lecturas
Ejemplo de fichero con
print
(EjemploPrint.py):#!/usr/bin/python3 # -*- coding: utf-8 -*- x = 2 ** 8 print (x)
Evaluaciones:
cap_1> python3 EjemploPrint.py 256 cap_1> chmod u+x EjemploPrint.py cap_1> ./EjemploPrint.py 256 cap_1> python3 -i EjemploPrint.py 256
Ejemplos de escrituras personalizadas:
>>> x, y, z = 5, 100, 3.14 >>> print (x, y, z) 5 100 3.14 >>> print (x, y, z, sep='') 51003.14 >>> print (x, y, z, sep='; ') 5; 100; 3.14 >>> print (x, y, z, sep='\n') 5 100 3.14 >>> print ('x=', x, sep='', end='; '); print ('y=', y, sep='') x=5; y=100
Ejemplos de cadenas
>>> print ('Cadena con "comillas"') Cadena con "comillas" >>> print ("Cadena con 'comillas dobles'") Cadena con 'comillas dobles' >>> print ("Cadena con\n salto de línea") Cadena con salto de línea >>> print ('Línea ' ... 'larga') Línea larga
Ejemplos de escritura con
format
:>>> x = 123.456789 >>> '{:g}'.format(x) '123.457' >>> '{:.2f}'.format(x) '123.46' >>> '{:.3e}'.format(x) '1.235e+02' >>> '{0:20.3f}'.format(x) ' 123.457' >>> '{0:>20.3f}'.format(x) ' 123.457' >>> '{0:<20.3f}'.format(x) '123.457 ' >>> '{0:^20.3f}'.format(x) ' 123.457 ' >>> '{0:+.3f} ; {1:+.3f}'.format(x, -x) '+123.457 ; -123.457' >>> '{0: .3f} ; {1: .3f}'.format(x, -x) ' 123.457 ; -123.457' >>> '{0:-.3f} ; {1:-.3f}'.format(x, -x) '123.457 ; -123.457'
- La documentación sobre cadenas está aquí.
Ejemplo de lectura con
input
(EjemploInput1.py)x = input ('Escribe el valor de la variable x ') print ("{}^2 = {}".format (x, x**2)) # Sesión: # >>> Escribe el valor de la variable x 3 # Traceback (most recent call last): # File "<stdin>", line 1, in <module> # File "EjemploInput1.py", line 2, in <module> # print("{}^2 = {}".format (x, x**2)) # TypeError: unsupported operand type(s) for ** or pow(): 'str' and 'int'
Ejemplo de lectura con
input
yeval
(EjemploInput2.py)x = eval (input ('Escribe el valor de la variable x ')) print ("{}^2 = {}".format (x, x**2)) # Sesión # cap_1> python3 EjemploInput2.py # Escribe el valor de la variable x 3 # 3^2 = 9
Ejemplo de metaprogramación con
exec
(EjemploExec.py)from math import * x = eval (input ('x =? ')) fonction = input ('f =? ') code = ("def f (x):" " return {}".format(fonction)) exec(code) print('{:.6f}'.format (f (x))) # Sesión # >>> x =? pi/2 # f =? sin (x) # 1.000000
1.4 Los condicionales
Ejemplo del condicional
if
(ValorAbsoluto.py):# vabs(x) es el valor absoluto de x. Por ejemplo, # >>> vabs(5) # 5 # >>> vabs(-5) # 5 # 1ª definición def vabs(x): if x >= 0: return x else: return -x # 2ª definición def vabs2(x): return x if x >= 0 else -x
Ejemplo con booleanos:
>>> 3 > 2 True >>> a = 3 > 2 >>> a True >>> 3 > 3 False
Operadores de comparación:
x == y
x es igual a y x != y
x es distinto de y x > y
x es mayor que y x < y
x es menor y x >= y
x mayor o igual que y x <= y
x es menor o igual que y x is y
x es idéntico a y (i.e. id(x) == id(y)) x in y
x pertenece a y Operadores compuestos:
>>> 2 < 3 >= 1 True >>> 2 < 3 <= 1 False
Ejemplos de funciones booleanas:
>>> not (3 < 1) True >>> 3 < 5 and 7 != 4 True >>> 3 < 5 and 7 == 4 False >>> 3 < 5 or 7 == 4 True
Ejemplo de función: TernaOrdenada.py
def ordenada1(x, y, z): if x <= y <= z: return True else: return False
def ordenada2(x, y, z): return x <= y <= z
- Por la página 26.