Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Clase 4
Introduccin a la computacin
Patricia Borensztejn
El archivo contiene la
definicin y la invocacin
euler12.py
def euler1():
result = 0
for i in range(1,1000):
if i % 3 == 0 or i % 5 == 0 :
result = result + i
print result
El archivo contiene la
definicin de euler1. La
invocacin se hace desde el
intrprete.
Bytecode
El cdigo fuente (source code) se compila a
bytecode, que es la representacin interna de un
programa python en el intrprete.
El cdigo en bytecode se guarda en los archivos
.pyc y .pyo para que la segunda vez que se
ejecute ese archivo sea mas rpido porque no
hay que traducir a bytecode.
Este lenguaje intermedio se dice que ejecuta en
una mquina virtual que ejecuta el cdigo
mquina correspondiente a cada bytecode.
Otra curiosidad
El interprete de python es un programa.
Saben en que lenguaje est escrito ese
programa? .
Si, adivinaron. En C.
Hay otras alternativas, incluso que el
interprete est escrito en Python, pero el que
nosotros usamos est escrito en C.
1 (0)
0 (result)
6 SETUP_LOOP
68 (to 77)
9 LOAD_GLOBAL
0 (range)
12 LOAD_CONST
2 (1)
15 LOAD_CONST
3 (1000)
18 CALL_FUNCTION
2
21 GET_ITER
>> 22 FOR_ITER
51 (to 76)
25 STORE_FAST
1 (i)
28 LOAD_FAST
1 (i)
31 LOAD_CONST
4 (3)
34 BINARY_MODULO
35 LOAD_CONST
1 (0)
38 COMPARE_OP
2 (==)
41 POP_JUMP_IF_TRUE
60
>>>
44 LOAD_FAST
1 (i)
47 LOAD_CONST
5 (5)
50 BINARY_MODULO
51 LOAD_CONST
1 (0)
54 COMPARE_OP
2 (==)
57 POP_JUMP_IF_FALSE
22
>> 60 LOAD_FAST
0 (result)
63 LOAD_FAST
1 (i)
66 BINARY_ADD
67 STORE_FAST
0 (result)
70 JUMP_ABSOLUTE
22
73 JUMP_ABSOLUTE
22
>> 76 POP_BLOCK
>> 77 LOAD_FAST
80 PRINT_ITEM
81 PRINT_NEWLINE
82 LOAD_CONST
85 RETURN_VALUE
0 (result)
0 (None)
Formato de Python
A diferencia de C, Python tiene una manera muy
definida de escribirse
En C, el inicio y el fin de los bloques de cdigo est
marcados por { }. En Python, hay que tabular
El smbolo : indica continuacin de sentencia en el
rengln siguiente
def euler1():
result = 0
for i in range(1,1000):
if i % 3 == 0 or i % 5 == 0 :
result = result + i
print result
def euler1():
result = 0
for i in range(1,1000):
if i % 3 == 0 or i % 5 == 0 :
result = result + i
print result
def euler1():
result = 0
for i in range(1,1000):
if i % 3 == 0 or i % 5 == 0 :
result = result + i
print result
def euler1():
result = 0
for i in range(1,1000):
if i % 3 == 0 or i % 5 == 0 :
result = result + i
print "El resultado es "
print result
Cadenas de texto:
Hola Mundo
Valores booleanos:
True (cierto) y
False (falso).
>>> a=3
>>> type(a)
<type 'int'>
>>> b="hola"
>>> type (b)
<type 'str'>
>>>c=True
>>>type(c)
<type bool'>
Tipos Bsicos:Enteros
Hay dos tipos de enteros:
int: corresponde al long de C y se representa al
menos con 32 bits, aunque podra ser an mas
grande (64 bits) dependiendo de la plataforma.
(en C sucede lo mismo)
Long: El tipo long de Python permite almacenar
nmeros de cualquier precisin, estando limitados
solo por la memoria disponible en la mquina.
>>> a=2.3
>>> type (a)
<type 'float>
>>> a=0.1e-3
>>> print a
0.0001
>>>
>>> 2,3
(2, 3)
>>> print 2,3
23
>>> print 1,000,000
100
>>>
Complejos
Python es uno de los pocos lenguajes que
soportan el tipo de datos numrico: complex
Se almacena en memoria como dos floats,
uno para la parte real y otro para la parte
imaginaria.
>>> c=2.1+3.4j
>>> type (c)
<type 'complex'>
>>>
Bases
Podemos escribir los nmeros en Python en
cualquiera de estas bases : decimal,
hexadecimal, binaria, octal.
>>> a=0x234
>>> print a
564
>>> a=0b10101010
>>> print a
170
Operaciones
Orden de evaluacin
Escribimos: 3+4-5*4+5*2
Esto es equivalente a escribir: 3+4-(5*4)+(5*2)
Y no a esto: (3+4-5)*(4+5)*2
Asociatividad:
2**3**2= 2**(3**2)=29
Asociatividad:
2*4/6= (2/4)*6
Tipo Booleano
Solo tiene dos valores: True y False
Es el tipo de salida de las expresiones de
condicin:
Operadores booleanos
Asignaciones en Python
Asignacin Simple
<var> = <expr>
miVar = oldValue * foo + skip
Asignacin Simultnea
<var1>, <var2>, ... = <expr1>, <expr2>, ...
a,b = b,a
Assigning Input
input(<prompt>)
myVar = input("Enter a number: ")
x,y = input("Enter the coordinates (x,y): ")
asignaciones mltiples
A modo de ayuda:
Fibonacci en los dos lenguajes
//fibonacci.c
//This program computes the nth Fibonacci
//number
#include <stdio.h>
int fibo()
{
int i, term, cur=1,prev=1;
int n;
printf("Enter value of n :");
scanf("%d", &n);
for(i=0;i<n-2;i++)
{
term=prev+cur;
prev=cur;
cur=term;
}
printf("El resultado es %d\n",cur);
return 0;
}
int main()
{
return (fibo());
}
# fibonacci.py
# This program computes the nth Fibonacci
number
def fibo():
n = input("Enter value of n ")
cur,prev = 1,1
for i in range(n-2):
cur,prev = prev+cur,cur
print "The nth Fibonacci number is", cur
fibo()