Logo Studenta

zPYTHON ALGEBRA LINEAL 81

¡Este material tiene más páginas!

Vista previa del material en texto

Python
COMPARACIÓN DE SECUENCIAS
Los operadores de comparación están 
sobrecargados para aceptar secuencias (string, 
listas, tuplas)
>>> 'a' < 'b'
True
>>> 'ab' < 'aa'
False
>>> 'a' < 'b' < 'c'
True
>>> (1, 2, 3) < (1, 2, 4)
True
>>> [1, 2, 3] <= [1, 2, 3]
True
FORMA CORTA DE if else
Sintaxis:
expr-1 if test else expr-2
# Evalua expr-1 si test es True; sino, evalua expr-2
>>> n = 1
>>> print(‘uno' if n == 1 else 'no es uno')
uno
>>> x = -5
>>> abs_x = x if x > 0 else -x
>>> abs_x
5
CICLO WHILE
Sintaxis: 
while condición:
sentencias
# El ciclo while tiene un bloque else opcional: 
while condición:
sentencias
else: # se ejecuta solo si while no terminó por un break
sentenciasF
El bloque else es opcional. Se ejecuta si se sale del ciclo sin 
encontrar una instrucción break.
break, interrumpe la ejecución de un ciclo (for o while)
continue, obliga a que se continúe con la siguiente iteración 
del ciclo, sin evaluar lo que está después de continue
CICLO WHILE
def fac(n):
# calcula factorial de N = 1*2*3*…*n
f = 1 
c = 1 
while (c <= n): 
f *= c
c += 1 
return f
CICLO for
# secuencia: string, list, tuple, dictionary, set 
for v in secuencia:
sentencias
# for-in con la opcion else 
for v in secuencia:
sentencias
else:
sentenciasF
Se interpreta como “para cada ítem en la secuencia...”. 
El bloque else se ejecuta si el ciclo termina 
normalmente sin encontrar la instrucción break.
6
CICLO for
# String: itera en cada caracter
>>> for ch in 'hello':
print(ch, end=‘ ‘)
h e l l o
# List: itera en cada elemento de la lista
>>> for v in [123, 4.5, 'hello']:
print(v)
123
4.5
hello
# Tuple: itera en cada elemento de la tupla
>>> for v in (123, 4.5, 'hello'):
print(v) 7
CICLO for
# Dict: itera en cada clave del diccionario
>>> dc = {'a': 1, 2: 'b', 'c': 'cc'} 
>> for key in dct:
print(key, ':', dc[key])
a : 1
2: b 
c : cc
# Set: itera en cada elemento del conjunto
>>> for v in {'a', 2, 'apple'}: 
print(v)
a
2
apple 8
CICLO for
Iteraciones sobre una secuencia de secuencias.
>>> lst = [(1,'a'), (2,'b'), (3,'c')]
# Itera en cada elemento de las tuplas
>>> for i1, i2 in lst: 
print(i1, i2)
1 a
2 b
3 c
>>> lst = [[1, 2, 3], ['a', 'b', 'c']]
>>> for i1, i2, i3 in lst: 
print(i1, i2, i3)
1 2 3
a b c
9
CICLO for
# Itera en clave y valor de un diccionario
>>>dc = [('genero', ‘M'), (‘edad', 21), ('nombre', ‘Luis')]
>>> for clave, valor in dc.items():
print(clave, ':', valor) 
genero : M
edad : 21 
nombre : Luis
10
FUNCIÓN range
La función range produce una secuencia de enteros:
• range(n) produce enteros desde 0 a n-1;
• range(m, n) produce enteros desde m a n-1;
• range(m, n, s) produce enteros desde m a n-1 con 
tamaño de paso de s (por defecto s=1).
>>> for num in range(1,5):
print(num, end=‘,’)
1, 2, 3, 4
>>> range(4) # no retorna la secuencia:
range(0, 4)
>>> list(range(4)) # retorna la secuencia:
[0, 1, 2, 3]
11
CICLO for
def fac2(n):
# calcula factorial de n: 1*2*3*…*n
f = 1 
for c in range(1, n+1): 
# range genera la secuencia: 1,2,3, …,n
f *= c
return f
# llamado: fac2(5)
FUNCIÓN range
def ejemplo():
x = [3, 6, 1] 
y = [5, 1, 4] 
su = 0.0 
for i in range(len(x)): 
su += x[i]*y[i]
return su
>> ejemplo()
25
13
FUNCIÓN enumerate
La función enumerate() da los índices posicionales cuando 
se recorre por una secuencia.
>>> for e in enumerate(['a', 'b']): 
print(e) 
(0, ‘a’)
(1, ‘b’)
>>> for i, v in enumerate(['a', 'b']): 
print(i, v) # posición y elemento de una lista
0 a
1 b
>>> enumerate(['a', 'b', 'c'])
<enumerate object at 0x7ff0c6b75a50>
>>> for i, v in enumerate(('d', 'e')): 
print(i, v) # Tupla
0 d
1 e 14
FUNCIÓN reversed
Se usa para iterar una secuencia en orden inverso.
>>> li = [10, 20, 30]
>>> for item in reversed(li): 
print(item, end=' ')
30 20 10
>>> reversed(li)
<list_reverseiterator object at 0x7fc4707f3828>
>>> s = "hola"
>>> for c in reversed(s): 
print(c, end='') 
aloh
15
FUNCIÓN zip Y SECUENCIAS MÚLTIPLES
zip permite iterar sobre 2 o más secuencias de forma 
concurrente y emparejada.
>>> l1 = ['a', 'b', 'c']
>>> l2 = [1, 2, 3]
>>> for i1, i2 in zip(l1, l2):
print(i1, i2)
a 1 b 2 c 3
>>> zip(l1, l2) # Retorna una lista de tuplas
[('a', 1), ('b', 2), ('c', 3)]
>>> tuple3 = (44, 55)
>>> zip(lst1, lst2, tuple3)
[('a', 11, 44), ('b', 22, 55)]
16
GENERAR SECUENCIAS
lr = [expresion_con_item for item in lista]
>>> sq = [v * v for v in range(1,11)]
>>> sq # lista de cuadrados
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
# con un test opcional
lr = [expresion_con_item for item in lista if test] 
>>> w = [3, 4, 1, 5]
>>> sq_odd = [v * v for v in w if v % 2 != 0]
>>> sq_odd # lista de cuadrados impares
[9, 1, 25]
# Con dos for
>>> [(x, y) for x in range(1,3) for y in range(1,4) if x != y] 
# [(x, y) for x in [1,2] for y in [1,2,3] if x != y]
[(1, 2), (1, 3), (2, 1), (2, 3)]
17
GENERAR SECUENCIAS
PARA DICCIONARIOS:
>>> d = {x:x**2 for x in range(1, 5)} # se usa llaves
>>> d # la clave es x, el valor es x**2
{1: 1, 2: 4, 3: 9, 4: 16}
PARA CONJUNTOS
>>> s = {e for e in 'hola' if e not in 'aeiou'} # con llaves
>>> s
{'h', 'l'}
18
FUNCIONES
Sintaxis:
def nombre(arg1, arg2, ...):
"“”cadena de documentación""" 
# se accede a la documentación con nombre.__doc__
sentencias
return expression # opcional
Ejemplo:
def cubo(x):
"""Retorna el cubo de un número dado""“
return x * x * x
Llamado a la función:
>>> cubo(5)
125
>>> cubo
<function cubo at 0x7fa57ec54bf8>
>>> type(cubo)
<class 'function'>
FUNCIONES
>>> cubo.__doc__ # muestra la cadena de documentación
'Retorna el cubo de un número dado' 
>>> help(cubo)
Help on function cubo in module __main__:
cubo(x)
Retorna el cubo de x
>>> dir(cubo) # muestra atributos
['__annotations__', '__call__', '__class__', '__closure__', 
'__code__', '__defaults__', '__delattr__', '__dict__', '__dir__', 
'__doc__', '__eq__', '__format__', '__ge__', '__get__', 
'__getattribute__', '__globals__', '__gt__', '__hash__', '__init__', 
'__init_subclass__', '__kwdefaults__', '__le__', '__lt__', 
'__module__', '__name__', '__ne__', '__new__', '__qualname__', 
'__reduce__', '__reduce_ex__', '__repr__', '__setattr__', 
'__sizeof__', '__str__', '__subclasshook__']
PARÁMETROS DE FUNCIONES
• Los argumentos inmutables (enteros, floats, strings, 
tuplas) se pasan por valor. Es decir, se clona una copia 
y se pasa a la función, y el original no se puede 
modificar dentro de la función.
• Los argumentos mutables (listas, diccionarios, conjuntos 
e instancias de clases) se pasan por referencia (se 
envía su dirección de memoria). Es decir, se pueden 
modificar dentro de la función.
PARÁMETROS DE FUNCIONES CON VALORES POR 
DEFECTO
Se puede asignar un valor por defecto a los parámetros de 
funciones.
def suma1(x1, x2 = 4, x3 = 5):
# x1 es requerido, x2 y x3 son opcionales
"""Retorna la suma de todos los argumentos"""
return x1 + x2 + x3
>>> print(suma1(1, 2, 3))
6
>>> print(suma1(1, 2)) # x3 por defecto es 5
8
>>> print(suma1(1)) # por defecto x2=4, x3=5
10
>>> print(suma1())
TypeError: suma() takes at least 1 argument (0 given) 
ARGUMENTOS POSICIONALES Y NOMINALES
Las funciones en Python permiten argumentos posicionales y 
nombrados (especificando el nombre).
Normalmente se pasan los argumentos por posición de 
izquierda a derecha (posicional).
def suma2(x1, x2 = 4, x3 = 5):
"""Return the sum of all the arguments""" 
return x1 + x2 + x3
>>> print(suma2(x2 = 2, x1 = 1, x3 = 3))
6
>>> print(suma2(x2 = 2, x1 = 1)) # x3=5 por defecto
8
>>> print(suma2(x1 = 1)) # por defecto x2 = 4 y x3 = 5 
10
>>> print(suma2(1, x3 = 3)) # x2 = 4 por defecto
8
>>> print(suma2(x2 = 2))
TypeError: suma() missing 1 required positional argument: 'x1'
EJEMPLO DE FUNCIONES
Ordenar 3 números, definiendo funciones para encontrar el 
mayor y el menor.
def mayor(x,y, z):
ma= x
if y> ma:
ma=y
if z> ma:
ma= z
return ma
def menor(x, y, z):
if x < y:
me= x
else:
me= y 
EJEMPLO DE FUNCIONES
if z < me:
me= z
return me
def ordenar():
a = float(input(“a=“))
b = float(input(“b=“))
c = float(input(“c=“))
may = mayor(a, b, c)
men = menor(a, b, c)
medio = a + b + c – may – men
orden = [men, medio, may]
print(“De menor a mayor: ”,orden)
PROBLEMA
Definir una función fac(m) que calcule y retorne el 
factorial de m
Definir una función coef(r,n) que calcule el coeficiente 
binomial n!/(r!*(n-r)!), llamando a la función fac.
GRACIAS

Continuar navegando