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 y return. 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 y print:

    >>> 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 y eval (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.