Vous êtes sur la page 1sur 31

1 Contenido

x = 5
x++ x + 4
if
if-else

X X[n]
x += 1

= [0]

= ()

range(n)
4+

i
L 5+
for

for

i 4 + 2
for

1 () = 4 + 2

1 () = 4 + 4
1 () = 4 + 7

:
()

() = max ()
||=

7
e

(()) ()

4 + 7 = ()

(())

()
() > 0
() ()

() (())
()= (())

()

0 = 4

4 + 7


=8
() = 33 + 22 (3 )
0 = 0 =5
33 + 22 53

() = 3 (2 )
0
3 2
3 3
2 = (2)


(())
(()) ()

() ()
> 0
() ()
() ()
()=(())

(())

() (())

() ()

() ()

1 2 1 ()
2 () (()) (())
3

max ((()), (()))

3 3 () =
1 () + 2 ()
1 = (())
2 = (())

1 , 2 1 , 2
1 1 ()
2 2 ()

> = max{1 , 2 }

1 + 2 1 () + 2 ()

= max{1 , 2 ]
1 + 2 1 {(), ()} + 2 {(), ()}
1 + 2 = (1 + 2 ) {(), ()}
3 (1 + 2 ) {(), ()}

>

() = ({(), ()})
2
1 for for

1 2 1 ()
2 () (()) (())
3 1 2
(() ())

3 3 = 1 () 2 ()
1 2

1 = (())
2 = (())

1 , 2 1 , 2
1 1 ()
2 2 ()
> = max{1 , 2 }

3 = 1 2 1 () 2 () = (1 2 ) (()())

> = 1 2
3 = (()())

()

(())

( )

( )

( )
( )

for
In [14]: import random
In [15]: M = [random.randint(1,9) for x in range(10)]
In [16]: M
Out[16]: [1, 4, 1, 4, 8, 9, 3, 7, 7, 3]
In [17]: for i in range(len(M)):
....: for j in range(len(M)):
....: if M[i]==M[j]:
....: print duplicado , M[i]

() = 2
for

() = 22

,
() = (2 )

( ) 3
(3 )
0 = 0
() = {
( 1) > 0

1 = 0
! = {
( 1)! > 0

In [1]: def factorial(n):


...: return n*factorial(n-1) if n>1 else 1

(3) = 3 (2) = 3 2 (1) = 3 2 1

() = 2 (1)

() = (!)

1 = 0
= 1

(, ) = ( , )
2

{ ( , 2 )

In [21]: def pow(x,n):


....: if n==0:
....: return 1
....: elif n==1:
....: return x
....: elif n%2==0:
....: print par
....: return pow(x*x,n/2)
....: elif n%1==0:
....: print impar
....: return pow(x*x,n/2)*x
....:

() = ( ) +
2


1 () = ( ) +
2

2 () = [ ( ) + ] + = ( ) + 2
4 4

3 () = [ ( ) + ] + 2 = ( ) + 3
8 8

4 () = [ ( ) + ] + 3 = ( ) + 4
16 16


() = [ ( ) + ] + ( 1) = ( ) +
2 2

=1 (, 1) =

(1) = 1


(2 ) = 1 =1
2

= 2 log 2() =

Por lo tanto, la expresin original se convierte en


() = 1 + log 2 ()

() = (())

, 1 + + {0}

() + > 1
() = {
= 1


log < , () = (nc )
log = , () = ( log )
log > () = (log )

(())
()
()

In [1]: def fib(n):


...: if n==0:
...: return 1
...: elif n==1:
...: return 1
...: else:
...: return fib(n-1)+fib(n-2)
...:
In [6]: def fib2(n,v1=1,v2=1):
...: L = [v1,v2]
...: if n>=0 and n<2:
...: return L[n]
...: elif n>=2:
...: for i in range(n-2): L.append(L[-1]+L[-2])
...: return L
...:

fib(n)

fib(40) fib2(40))


= ; = 22 +
= ; = 22 +
= 2 + ( + )22 +

2
Ordenar
Buscar

(1)

def binaria(L, k, imn=0, imx=None):


Hace la busqueda binaria de k en L, es decir, existe idx tal
que L[idx]=k
L debe ser un arreglo ordenado
k la llave a buscar
imn es el indice inferior de L sobre el cual se busca
imx es el indice superior de L sobre el cual se busca

regesa idx tal que L[idx]=k o -1 si no se encuentra


if imx is None:
print Arreglo completo
imx =len(L)-1
while imn < imx:
print Llamada
imd = (imn+imx)/2
mval = L[imd]
if k < mval:
print Izquierda
return binaria(L, k, imn, imd)
elif mval < k:
print Derecha
return binaria(L, k, imd+1, imx)
elif k == mval:
print Resultado
return imd
else:
print Fallo

>>> L = [1,1]
>>> for i in range(24): L.append(L[-1]+L[-2])
>>> k = L[23]
>>> x = b.binaria(L, k)
Arreglo completo
Llamada
Derecha
Llamada
Derecha
Llamada
Derecha
Llamada
Izquierda
Llamada
Resultado
>>> x
23

(log )


(1)

() = (2) +
(1) = 1

1: () = (2) +
2: () = [(4) + ] + = () = (4) + 2

: () = (1)

(1) = 1
2 = 1 = log
() = 1 + log

() = (log )

def bubblesort(A):
n =len(A)
for i in range(n-1):
for j in range(n-1, i, -1):
if A[j-1] > A[j]:
temp=A[j-1]
A[j-1]=A[j]
A[j] = temp
for
1

( ) = ( 1)2 = 2 2 2
=1

(2 )

Vous aimerez peut-être aussi