Está en la página 1de 23

Expresiones y Funciones.

(Python como una


calculadora)

EUPLA - Informática
Curso 18-19 - Primero IOI / Mecatrónica

1
Calculadora

Expresiones

2
3
Calculadora
Calculadora

El código en programación se puede


usar como si fuera una calculadora.
Podemos realizar operaciones
aritméticas de las más comunes.

Pero también existen algunas


funciones predefinidas a nuestra
disposición.

4
Expresiones
La aritmética es computación

• La aritmética es computación y tiene unas reglas básicas


• Reglas fijas, predefinidas para unos operadores primitivos
2 + 3 = 5
4 x 2 = 8
max(1, 3) = 3
• Reglas para combinar otras reglas
• primero evaluar subexpresiones: simplificamos las expresiones
hasta que no quede nada por hacer
4 x (2 + 3) == 4 x 5 == 20
• la precedencia determina cómo se forman las subexpresiones, si
en el ejemplo quitamos los paréntesis, las operaciones se
realizan en otro orden
4 x 2 + 3 == 8 + 2 == 10

5
El álgebra como computación

• Definición de una función


f(x) = cos(x) + 2
• Expresión:
f(0) == cos(0) + 2 == 1 + 2 == 3

6
Expresiones

Una expresión describe un cálculo y lo evalúa a un valor.


Por ejemplo las expresiones aritméticas:

>>> 12 + 4
16
>>> 6 / 2
3.0

7
Tipo de dato

Un tipo es un conjunto de valores junto con las operaciones que se


pueden realizar sobre esos valores
Hay unos tipos básicos en Python

• int, float: números


• str: texto
• bool: booleanos, solo pueden valer True o False
• NoneType: un tipo especial para indicar “nada” o None en el
argot de Python
• … otros que se verán

8
Tipos numéricos

• int: números enteros


• ejemplos: 0, -3, 10, 1024

• float: números con coma flotante, son una aproximación a


los números reales
• ejemplos: 0.0, 2.1, -120.2, 3.1415, -2.5, 1.0,
1.0e-3

9
Operaciones Matemáticas Básicas

• Adición (+), Sustracción (-), Multiplicación (*):


• Si se combinan dos valores int, el resultado es un int
• Si se combinan dos valores float, o un float y un int, el
resultado es un float
>>> 2 * 3
6
>>> 2.0 * 3
6.0

10
Operaciones Matemáticas Básicas

• División: x / y
• El resultado es un float para cualesquiera valores numéricos x
e y (incluso si los dos son int)
>>> 6 / 2
3.0
>>> 6 / 3.5
1.7142857142857142

11
Operaciones Matemáticas Básicas

• División entera: x // y
• El resultado es la parte entera de la división
• Si tanto x como y son int, el resultado es un int
• Si uno de los dos, x o y, es un float, o los dos a la vez, el
resultado es un float, con la parte decimal con valor .0
• Normalmente se usa con x e y de tipo int
>>> 6 // 2
3
>>> 6 // 3
2
>>> 6 // 4
1

12
Otras operaciones matemáticas

• Resto: x % y
• Genera el resto int de dividir x entre y
• Normalmante se usa con x e y de tipo int
>>> 6 % 2
0
>>> 6 % 3
0
>>> 6 % 4
1

13
Otras operaciones matemáticas

• Exponencial: x ** y
• Genera x elevada a la y-ésima potencia
>>> 2 ** 3
8
>>> 2 ** 3.0
8.0
>>> 2 ** -1
0.5
>>> 4 ** 0.5
2.0

14
Precedencia de operadores

¿Qué ocurre cuando en una expresión aparecen mezclados varios


operadores? ¿En qué orden se realizan las operaciones?
En Python se aplican las reglas estándares del álgebra a las cuales
ya estamos acostumbrados. La prioridad o precedencia es esta:

1. paréntesis ()
2. operador de exponenciación **
3. operador negación (cambio de signo de números) -
4. *, /, //, % todos ellos con la misma prioridad y con
asociatividad de izquierda a derecha
5. +, - todos ellos con la misma prioridad y con asociatividad
de izquierda a derecha

15
¿Qué significa precedencia?

Precedencia o prioridad: En caso de haber operadores mezclados


y sin usar paréntesis para indicar un orden concreto, los operadores
actúan agrupando sus operandos más cercanos comenzando por el
operador de más precedencia.
Razonemos como si fueran fórmulas. ¿A qué son iguales estas
expresiones?

1 + 2 * 3 ** 4
((1 + 2) * 3) ** 4
== 1 + 2 * (3 ** 4)
== (3 * 3) ** 4
== 1 + (2 * 81)
== 9 ** 4
== 1 + 162
== 6561
== 163
Son los mismos números y los mismos operadores anotados en el
mismo orden, pero dan distintos resultados.
16
¿Qué significa asociatividad de izquierda a derecha?

>>> 12 / 6 / 2
1.0
>>> 12 / (6 / 2)
4.0

Asociatividad de izquierda a derecha: En caso de haber


operadores mezclados con la misma precedencia y sin usar
paréntesis para indicar un orden concreto, los operadores actúan
agrupando sus operandos más cercanos comenzando por el
operador de más a la izquierda.

17
¿Qué significa asociatividad de izquierda a derecha?

Razonemos como si fueran fórmulas. ¿A qué son iguales esas


expresiones?

12 / 6 / 2
12 / (6 / 2)
= (12 / 6) / 2
= 12 / 3.0
= 2.0 / 2
= 4.0
= 1.0
También da resultado diferente esto 1 - 2 + 3 que esto otro 1 -
(2 + 3)
Y esto 1 / 2 * 3 que esto 1 / (2 * 3)

18
Tipos dinámicos

Los tipos se deciden en Python mientras se ejecuta el programa.


A diferencia de otros lenguajes, python tiene lo que se llama tipado
dinámico. Es decir, el programador no declara de qué tipo es un
elemento que va a usar sino que el propio Python lo descubre
durante la ejecución.
Cuando va a usar un elemento, si el uso es compatible con el tipo
del elemento, entonces continúa con la ejecución. En caso
contrario aborta la ejecución con lo que se llama una excepción.

19
Tipos dinámicos. Ejemplo

Por ejemplo:

>>> 'A' + 3
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: Can't convert 'int' object to str implicitly
>>>

El intérprete trata de sumar 'A' y 3, pero como en Python no se


pueden sumar strings y enteros, se aborta la suma con un aviso de
error

20
Descubrir el tipo

Podemos averiguar el tipo También podemos consultar si un dato


de una expresión con la o variable es de un tipo con
función type() isinstance()
>>> type(1) >>> isinstance(1, int)
<class 'int'> True
>>> type(1.0) >>> isinstance(1, float)
<class 'float'> False
>>> isinstance(1/2, float)
>>> type(1/2)
True
<class 'float'> >>> isinstance('Hola', str)
>>> type('Hola') True
<class 'str'> >>> isinstance(True, bool)
>>> type(True) True
<class 'bool'> >>> isinstance(None, NoneType)
Traceback (most recent call last):
>>> type(None)
File "<stdin>", line 1, in <module>
<class 'NoneType'> TypeError: isinstance() arg 2 must be a type or

21

También podría gustarte