viernes, 27 de febrero de 2009

TUPLAS EN PYTHON

Todo lo que vimos en la seccion de LISTAS EN PYTHON se aplica a las tuplas la unica diferencia que en vez de usa [ ] usamos ( ) bueno en realidad el operador que define la tupla solo es la , (coma)
pero por claridad utilizamos el parentisis veamos:

>>>t= (1,2,"hola",True)
>>>print(t)
(1, 2, 'hola', True)

igual seria tupla si la definimos sin el parentisis:


>>>t= 1,2,"hola",True
>>>print(t)
(1, 2, 'hola', True)

podemos verificar que es una tupla

>>>type(t)
class 'tuple'

listo creo que entendi voy a definir una tupla de un solo elemento para demostar que esto es refacil veamos:

>>> tupla = 1

mi tupla de un elemento ;) veamos a ver si es verdad:

>>>type(tupla)
class 'int'

Como ven tupla=1 es simplemente una asignacion de 1 a la variable tupla si hubieramos querido que fuera una tupla tan solo habia que hacer:

>>> tupla = 1 ,
>>>type(tupla)
class 'tuple'
>>>print(tupla)
(1,)

Bueno aqui tambien podemos usar el operador [ ] para referirnos a un elemento de la tupla digamos que aun tenemos esta tupla definida (1, 2, 'hola', True):

>>>tupla[0]
1

ahora tratemos de modificar el primer elemento de la tupla por cualquier otro valor a ver que pasa:

>>>tupla[0]=12

Traceback (most recent call last):
File "", line 1, in
TypeError: 'tuple' object does not support item assignment


genero un error, bueno esto se debe a que las tuplas son inmutables( esto quiere decir que una vez creada una tupla no se puede modificar) en cambio como vimos en el tema de las lista si se pueden modificar cuando sea, y ademas las lista cuenta con una serie de funciones utiles para su tratamiento, pero las tuplas tampoco posee esa serie de funciones :( tonoces para que carajo utilizo las tuplas para eso solo trabajo con lista, buena pregunta, solo te digo que la unica ventaja de las tuplas es que son mas ligeras que si vas a crear una lista que no va ser modificada osea de tamaño fijo mejor optas por una tuplas y asi ahorras memoria.


jueves, 26 de febrero de 2009

LISTAS EN PYTHON

La lista es una colección de datos ordenada, alguna equivalencia con otros lenguajes seria los arrays o vectores. La lista puede contener cualquier tipo de dato (enteros, cadenas y otras listas ) veamos como se puede crear una lista:


>>>lista = [''hola'',2,''hacker'',[1,2,3,4,5]]


si se dan cuenta nuestra lista principal tiene un string ''hola'', un entero 2 y otra lista, una lista dentro de otra lista :) esta definicion estan valida como para python 2.x y 3.x


>>>print (lista)

['hola', 2, 'hacker', [1, 2, 3, 4, 5]]

bueno si queremos acceder a uno de los elementos de la lista lo hacemos utilizando el nombre que hacemos referencia a la lista en este caso lo llame lista puede ser cualquiera y entre corchete indicamos un indice, dicho indice va de 0 a n-1 veamos:

>>>print(lista[0])

hola

>>>print(lista[3])

[1, 2, 3, 4, 5]


pero yo quiero es acceder al 2 pero, no se que hago ya que es una lista dentro de otra veamos:


>>>print(lista[3][1])

2


wow que bien esto de las tuplas esta muy bien, tenga en cuenta que este operador [] se puede utilizar para modificar los elementos de la lista de esta forma:


>>>lista[0]=''Python''

>>>print(lista)

['Phython', 2, 'hacker', [1, 2, 3, 4, 5]]


como vimos con el operador [ ] podemos hacer referencia a cualquier elemento de la lista de 0 a n-1 pero Python trae consigo algo que es recorrer la lista de ultimo al primero utilizando numeros negativos veamos:


>>> nombres = [''angelica'',''paola'',''hackchan'',''python'']

>>>print (nombres[-1])

python

>>>print (nombres[-4])

angelica


Para los curiosos que no tienen sentido comun ;) eso es bueno cuando se es ultra novatillo es que si haces referecia por ejemplo print(nombres[-5]) o print (nombres[4]) va generar un error que dice, lista fuera de rango asi:


Traceback (most recent call last):

File "", line 1, in

IndexError: list index out of range


SLICING O PARTICIONANDO:


Este mecanismo nos permite seleccionar porciones de listas veamos:

sigamos con esta lista

>>> nombres = [''angelica'',''paola'',''hackchan'',''python'']

>>>print(nombres[1:3])

['paola', 'hackchan']

Como vemos para indicar porciones de lista damos un numero inicial en donde quiero que inicie mi porcion seguido de (:) dos puntos y un numero final que me dice el limite de la lista OJO: ese numero final actua o me imprime el elemento de la lista contenida en (numerofinal-1) por eso imprime hackchan y no Python, si queremos que vaya hasta python solo es:


>>>print(nombres[1:4])

['paola', 'hackchan','python']


definamos otra lista pero de solo enteros:


>>> n=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30]


ahora vamos ver que si agregamos un tercer elemento inicio:fin:salto defino un salto para extraer los elementos de la lista:


solo con (inicio:fin)

>>>print(n[2:8])

[ 3, 4, 5, 6, 7, 8 ]


ahora con (inicio:fin:salto)

>>>print(n[2:8:2])

[3, 5, 7 ]


Como se dan cuenta con (inicio:fin:salto) lo primero que hace es obtener la lista definida en inicio:fin que en este caso al ser de 2:8 nos da [ 3, 4, 5, 6, 7, 8 ] ahora el salto nos dice que sea de dos en dos por lo tanto solo va quedar [ 3, 5, 7 ] espero que me entiendan :) pues esta muy facil el concepto de como funciona, de todas maneras todos los temas los estoy explicando sin tecnisismo alguno salvo alguna definicion de un libro pero que luego ire explicando con mis palabras :) cualquier duda no se olviden comentar ya sea para aclarar algo o cerregirme vale sigamos.


Extra:

definimos una lista cualquiera o esta :)

>>> l=[''hackchan'',2,''python'',7]

print(l[0:]) # imprime desde elemento 0 hasta ?? pues al no indicar nada python lo toma hasta el

# ultimo

['hackchan', 2, 'python', 7]

print(l[2:])

[''python'', 7 ]

print(l[:3]) #aqui al no indicar inicio pues Python lo toma desde 0

['hackchan', 2, 'python']

Imprimo toda la lista una manera corta de hacerlo con el oerador [] :

print(l[:])

['hackchan', 2, 'python', 7]


Indico que utlize toda la lista :: y luego a dicha lista muestre los elementos con un salto de dos en dos:

print(l[::2])

['hackchan', 'python']


tambien podemos modificar los elementos o la fraccion de lista que indicamos asi:

>>>l[0:2]=[3,4]

ahora impriman la lista y veran lo que paso:

>>>print(l)

[3, 4, 'python', 7]

Si ven cambiamos los dos primeros elementos de la lista y eso fue porque l[0:2]=[''hackchan'',2] pues eso son los dos elementos que vamos ha cambiar por [3, 4 ] :D bueno espero que me hayan entendido ;) bueno esto que hicimos es un manejo a pedal de manejar listas pues python tiene una serie de funciones para su tratamiento y que veremos a continuacion para no crear un enredo de temas luego :)

veamos las sigiente funciones basicas para el manejo de listas:


append(object) Añade un objeto al final de la lista

digamos que tenemos:

>>>lista=[1,2,3,4,5,6,7]

>>>lista.append(7)

>>>print(lista)

[1, 2, 3, 4, 5, 6, 7, 7]


count(value) devuelve el numero de veces que se encontro value

>>>lista.count(7)

2


extend([iterable]) añada los elementos del iterable a la lista , hay que tener en cuenta que con el lo que hacemos es concatenar dos listas, haber veamos como funciona:


>>>lista.extend([8])

[1, 2, 3, 4, 5, 6, 7, 7,8]

>>>lista.extend([9,10,11,12,13])

[1, 2, 3, 4, 5, 6, 7, 7,8, 9, 10, 11, 12, 13 ]


insert (index, object ) inserta el objeto a la lista en la posiscion index veamos:

>>>lista.insert(0,10)

>>>print(lista)

[10, 1, 2, 3, 4, 5, 6, 7, 7,8, 9, 10, 11, 12, 13 ]


index( value[, start [, stop ]] ) Devuelve la posicion que encontro la primera ocurrencia de value(ya que un valor de una lista puede estar repetido eje: [1,2,2,3] tonces si mando a pedir la posicion de 2 index me va a devolver el indice del primer 2 que encuentre en este caso el indice es 1, si se especifica start y stop que son opcionales indicamos el inicio y el fin de la sublista.


>>>lista.index(10)

0

como ves aun que tenemos dos 10 en la lista uno en la posicion 0 y el otro en la posicion 11 index me devuelve el indice de la primera coincidencia encontrada en la lista.


pop(index) Devuelve el valor de la posicion index y lo elimina de la lista, si no se especifica la posicion, se utiliza el ultimo elemento de la lista


>>>lista.pop(10)

9

lo que hace pop es que elimina el elemento según el indice que le indique, como le pase el 10 ese indeice contiene el 9 lo muestra y queda eliminado


>>>print(lista)

[10, 1, 2, 3, 4, 5, 6, 7, 7,8, 10, 11, 12, 13 ]


si no indicamos indice a eliminar pues elimina el ultimo de la lista:


>>>lista.pop()

13

>>>print(lista)

[10, 1, 2, 3, 4, 5, 6, 7, 7,8, 10, 11, 12 ]



remove(value) eliminar la primera ocurrencia de value


>>>lista.remove(7)

>>>print(lista)

[10, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12]


>>>lista.remove(10)

>>>print(lista)

[1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12]


>>>lista.remove(12)

>>>print(lista)

[10, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11 ]



reverse() invierte la lista. Esta funcion trabaja sobre la propia lista dede la que se invoca el metodo, no sobre una copia.

>>>lista.reverse()

>>>print(lista)

[11, 10, 8, 7, 6, 5, 4, 3, 2, 1]


para dejarla como estaba aplicamos otra ves reverse()


>>>lista.reverse()

>>>print(lista)

[1, 2, 3, 4, 5, 6, 7, 8, 10, 11]


martes, 24 de febrero de 2009

EXPRESIONES Y SENTENCIAS EN PYTHON

Una expresion ??? bueno, es forma correcta de decirle o digitar mas bien algo a nuestro interprete de manera que el interprete de Python me entienda y me conteste, aunque hay expresiones como en la vida real que el interprete al igual que las personas se quedan sin palabras ;)

>>> 1+1
2
bueno aqui hay que saber que una variable y un valor se consideran expresiones
>>>150
150
>>>x=2
>>>x
2
miren esto:

>>>mensaje="shalom"
>>>mensaje
'shalom'
>>>print(mensaje) #en python 2.x es print mensaje
shalom

ven la diferencia? Cuando Python muestra el valor de una expresion, muestra exactamente lo mismo que se digito al introducir el valor en el caso de dicha cadena 'shalom' la muestra tal y como fue asignada a la variable. Pero la sentencia print imprime el valor de la expresion en este caso el contenido de la cadena shalom. bueno esto se nota aqui con la cadenas :) si lo intentas con un entero pues no se va notar tanto esta diferencia :).

OPERADORES Y EXPRESIONES:


Los operadores son pues unos simbolos especiales que varios de ellos lo vemos desde que tavamos bbs :) si esos que reprentas operaciones de calculo simples ya saben a cuales me refiero?? no son mas que las suma (+) la resta (-) la division(/) y la multiplicacion(*)

veamos:

>>>20+32
52
>>>hora=10
>>>hora-1
9
>>>hora*60+2
602
>>>
5**2
25
>>>(7-2)+(5*2-5)
10

python 3.x
>>>5/2
2.5

python 2.x
>>>5/2
2


como ya sabran el simbolo (*) es el de la multiplicacion y el del (**) es el simbolo de la exponeciacion que falta de respeto hackchan :) pero los novatillos daran gracias al cielo por eso ;)
bueno deben saber que la expresion hora-1 donde, hora sera reemplazado por el valor que le asigne que en este caso fue 10 antes de hacer la operacion.

como ven la suma,division,resta y la multiplicacion hacen lo que ya esperavamos que hicieran asi que no debe ser muy dificil para los totalmente novatos el captar estos conceptos, pero si le recuerdo que la division en python en su version 2.x no hace lo que uno quisiera qu haga ya que una division tan facil donde el resultado es 2.5 me arroja un 2 bueno en VARIABLEN CON PYTHON ahi explique el porque de esa aparente anormalida con el resultado.

El ORDEN DE LAS OPERACIONES:

Bueno los Ingleses (hello everybody) :D alguien quiere traducir este blog ??? jeje no que va ya hay bastantes en ingles :D bueno amigos portemonos serios ;) lo que venia diciendo es que hay un acronimo de los igleses que es PEMDAS algunos diran que rayos quiere decir bueno le voy a decir y no tienen que ir por el diccionario, bueno se los digo a los que no saben que es un acronimo :)
P arentisis (parentisis)
E xponentiation (Exponenciacion)
M ultiplication (Multiplicacion)
D ivision (Division)
A ddition (Adicion)
S ubtraction (Sustraccion)

Bueno el porque de esa clase de kindergarden, bueno solo es para recordarle las reglas de precedencia de estos simbolos y la campeona de todas osea la de mayor precedencia es el ()

veamos

>>> 2*3+2
8
pero si queremos que la suma se realize primero que la multiplicacion pues recurrimos a los () que es el simbolo de mayor precedencia y por ende sera lo primero a realizar antes que nada veamos aver si es verda:
>>>2*(3+2)
10

bueno el siguiente es la exponenciacion es la que sigue despues de () en tener la presedencia mas alta veamos:

>>>5**2+1
26

si ves, si te das cuenta ??? la exponenciacion al tener mayor precedencia que la suma se realiza primero 5 elevado ala dos y luego le sumo 1, oye pero quiero que la suma se haga primero que hago??? no mentiras es una broma :) ya me dijistes que el parentisis es el de mayor precedencia pues solo hay que hacer esto:

>>>5**(2+1)
125


bueno los siguientes digo siguientes porque la multiplicacion y la division tienen el mismo nivel de precedencia claro esta que ambos estan por debajo de los parentesis y la exponenciacion veamos:

>>>8*2/2
8

pero si hago lo invertido dara igual??? veamos:

>>>2/8*2
0.5 #los que usan pytho 2.x recuerden que el resultado va ser 0

si se dan cuenta?? esto es porque la division y la multiplicacion tienen el mismo nivel de presedencia entonces la expresion se evalua de izquierda a derecha.

Bueno solo queda la adicion y la Sustraccion que son los de mas bajo nivel de precedencia y al igual que la multiplicacion y la division tambien comparten un mismo nivel de precedencia:


>>>1+2-8
-5


bueno vemos una serie de combinaciones:

>>>(25+3)/(1+3*2)*2

bueno muchachos traten de hacer ese a mano y luego lo digitan en su interprete Python no se hagan trampa que aqui venimos a equivocarnos y corregirnos para aprender :) vamos cuanto nos dara esa expresion pues muy facil es 2 este cree que no me lei bien este post baboso, ole te pasastes :) dejame decirte que si te dio 2 estas remal, pero a los que le dio 2.3 esta muy mal tambien :( bueno quien da mas o menos :DDD bueno lo que dijeron menos le daria algo asi como 1.75 pero no, no es la respuesta que busco, si ven y esta expresion es pequeñita y los que se equivocaron tienen que repasar y dejar esos conceptos claros ya que mas adelante veremos cuando tengamos que resolver algun ejercicio matematico tendremos expresiones realmente complejas:DD la respuesta era:


>>>(25+3)/(1+3*2)*2
>>>8

A los que antes de probarlo en su interprete Python los felicito van en busca del conocimiento y si les dio 8 es por que no son tan novatillos :DD bueno y los que hicieron trampa pues vamos esforcemonos mas la idea es aprender y a los hacker no me insulten no soy pedagogo y hay que enteder que ustedes en sus dias pasados fueron unos novatillos :) .

LAS OPERACIONES CON CADENA

Bueno en Python toda operacion matematica con una cadena es ilegal veamos:

>>>hola +2
Traceback (most recent call last):
File "", line 1, in
TypeError: Can't convert 'int' object to str implicitly

asi que cualquier operacion basica (+ - * /) con cadenas (String) va generar el mismo error, creo que esto esta muy facil :) , pero que pasa si a dos String los tratamos de sumar veamos:

>>>"hola " + "Hackchan"
hola hackchan

el operador (+) entre cadenas se utiliza para la concatenacion facil no??? sera que si nos ponemos de curioso haber que pasa si restamos (-) y dividimos (/) vale:

>>>"hola " - "Hackchan"

Traceback (most recent call last):
File "", line 1, in
TypeError: unsupported operand type(s) for -: 'str' and 'str'

>>>"hola" / "Hackchan"

Traceback (most recent call last):
File "", line 1, in
TypeError: unsupported operand type(s) for /: 'str' and 'str'

Bueno no sigamos siendo mas boludos probando lo inebitable ;) como ven el operador (+) se utliza
como en otros lenguages la concatenacion con este pequeño amigo, bueno el operador (*) tambien tiene un comportamiento algo muy interesante en cadenas para los que estan pensando en que "x"*"x" nos va dar "
" pues creo que tienen una sobre dosis de numeros :) pues no esa no es la funcion del (*) vemos cual es:

>>> "hola "*2+"hackchan"
'hola hola hackchan'

>>> "g"+"o"*15+"l"
'goooooooooooooool'


COMPOSICION:

Que hemos visto hasta aqui: las variables, las expresiones y las sentencias todo por separado bueno esperaba que ya lo fueran ustedes por su cuenta ir combinando todo lo que hemos visto vemos:

>>> print (7 + 23)
30


Bueno en realida lo que hace el interprete Python es realizar primero la suma y luego llama la funcion print


>>>hora = 2
>>>minuto=
4

>>> print ("numero de minutos:",hora*60+minuto) #si tienes python 2.x elimina los ( )
124

>>>porcentaje= (minuto * 100 ) / 60
>>>print(porcentaje)
>>> 6.66666666667


Por ahora esta capacidad no es la gran cosa pero ya mas adelante veremos cosas mucho mas complejas con algo mas de breveda ;) para los novatillos y los no tan novatillos acuerdensen que la parte izquierda de una asignacion debe ser una variable:

variable = minuto *100

ya que lo contrario seria totalmente ilegal:

minuto*100 = variable

espero que esto sea de mas decirlo ya que me imagino que un ultranovatillo almenos sepa manejar el operador de asignacion ya que como vemos es ilogico decir 8= t a 8 asignarle t asi lo lee Python ya todo tiene un orden y una forma correcta recuerda que python es un lenguaje formal y las ambiguedades son solo para los lenguajes naturales ;).

COMENTARIOS:

Muchos ya sabemos esto y muchos no lo utilizamos creemos que nuestros programas sera leidos sin problemas por otro programador tal vez eso sea asi pero te imaginas ponerser a entender y decifrar que hizo un programador a un programa realmente grande es mucho mas facil empezar de 0 que realizar el proceso de ingenieria inversa asi que una buena practica de programacion es que documente absolutamente todo mas adelante veremos un comentario especial que tiene Python para fines de la documentacion por ahora debemos saber que # todo lo que este despues de este simbolo python lo va ignorar ya que se trata de un comentario.

>>> print 2 + 2 # suma de dos enteros
4

bueno todo lo que llevamos es algo muy basico que no esta de mas como es interpretado todo esto en Python tranquilos que ya llegaremos a explicar funciones y veremos el paradigma de la Programacion orientada a Objetos en python pero antes tendremos que ver que son listas tuplas y diccionarios hasta la proxima bye.

write by Hackchan

lunes, 23 de febrero de 2009

VARIABLES EN PYTHON

Las variables en Python tienen una longitud arbitraria. Pueden estar formadas por letras y numeros,pero deben comenzar con una letra o guion bajo. Debe tener mucho cuidado con la sensibilidad es decir no es lo mismo variable a Variable asi que por convencion es mejor evitar variables en mayusculas.


Los tipos de variables que Python maneja son:


Numerica (entera,flotante,compleja)(12)(12.5)(6+3i)

cadenas (''hello world'')

booleano (True,False)(verdadero,Falso)



De las siguientes variables cuales no son correctas??


>>>77police=12

>>>_km=77

>>>$hack=”Hola Mundo”

>>>cma$=66

>>>clase=12

>>>is=3

>>>class=”Curso de python”


las que estan mal son las rojas ;) , en la primera la variable inicia con un numero esto no esta permitido en python. Cualquier variable que contenga simbolos especiales como $ o cualquier otro como ()=?¿%$·”! no son permitidos en una variable y Python se va a quejar.

Ahora miremos is y class porque estan mal??? si cumple con la regla de variables de Python, estan mal porque son palabras reservadas de Python, pero que eso?? pues es una palabara que realizan algo especifico con un tratamiento especial otras palabras reservadas por Python son:
(and,continue,else,elif,for,assert,break,def,except,exec,finally,from,global,if,import,in,lambda,not,or, pass,raice,return,try,while), ningunas de estas palabras pueden ser usadas como nombre de variables.

Como vemos el tipo de dato no lo definimos ya que Python es dinamico el internamente realiza esa operación por nosotros no es como en Java y C++ que son estaticos y a las variables hay que indicarle manualmente el tipo de dato:


int v=12 # variable entera

long n=1500000 # variable entera grande

float z=12,3 #variable punto flotante


como vemos esta asigacion es totalmente estatica y Python realiza eso por nosotros, si queremos saber el tipo de dato de nuestra variable hacemos lo siguiente:


tenemos

>>>a=12

>>>b=”hola mundo”

>>>c=12.5


verificamos el tipo de las variables anteriores:


>>>type(a)
type 'int'
>>>type(b)
type 'str'
>>>type(c)
type 'float'


ENTEROS:

el rango de un entero en python -2.147.483.648 a 2.147.483.647 superando esto la variable automaticamente pasara hacer long

>>>n=2147483647
>>>type(n)
type 'int'

aumentamos en 1 la variable para sobrepasar el rango de enteros en 1


>>>entero=2147483648
>>>type(n)
type 'long'

y vemos que nuestra variable paso hacer de tipo long podemos definir cualquier cantidad posible a una variable el unico limite es nuestra memoria ram :) entre mas ram, numeros extremadamente grandes podra almacenar una variable en Python.


Podemos indicar que una variable entera Python la tome como long:


>>>n=21L #Puede ser l o L mayuscula
type(n)
type 'long'


podemos asinarle el valor a la variable de forma octal:


>>>n=027 #anteponiendo el 0 (cero) indicamos que esta en modo octal que este caso es 23 en decimal

>>>print n

23


podemos asignarle en forma Hexadecimal:


>>>n=0x17 #anteponiendo el 0x: en este caso 0x17 equivale a 23 en decimal


ahora mira algo curioso en Python digamos que tengo una variable de esta forma

>>>x=5

que pasa si hago:

>>>x=x/2

2

???? por que carajo da 2 no deberia dar 2.5 a Python se le olvido dividir :) lo que pasa aquí es que si utilizamos dos operandos enteros Python determina que la variable resultado sea tambien un entero y por eso el resultado solo me devuelve la parte entera si queremos que nos devuelva el resultado como es debemos indicar un operando como real asi:

>>>x=5.0

>>>x=x/2

2.5

o bien tambien podemos indicar el otro operando como real

>>>x=5

>>>x=x/2.0

2.5

otra solucion sera:

>>>x = float(5) / 2

2.5


REALES:


Bueno muchos ya conocen este tipo de dato que utilizamos en C++ o en Java en C++ tenieos el float y el Double que es igual al float pero con mayor precision en python siempre va ser de doble precision 1 bit para el signo, 11 para el exponente y 52 para la mantisa osea si mi matematicas a un no me falla para ir por la calculadora :D claro que mi Python es como una calculadora, miremos y vera que si :):
>>>1+11+52
64

es un total de 64bits esto significa que los valores que podemos representar van desde ±2,2250738585072020 x 10-308 hasta
±1,7976931348623157×10308.



>>>r=0.77

>>>n=0.00001

si les parece aburrido escribir 5 veces el 0 (cero) podemos hacer:

>>>n=0.1e4


Hasta aquí todo bonito y facil pero esto es totalmente valido para las versiones de python inferior a su ultima version 3 que trae pequeños cambios en muchas cosas que para algunos programadores pusieron el grito en el cielo pero para otros lo ven como la evolucion del mismo lenguaje asi que miremos dichos cambios para este tema de las variables:

uno de los cambios es que el tipo entero y float se unificaron, solo va existir tipo entero, pero no te alarmes que a dicho entero le podas asignar la cifra que quieras bueno hasta donde aguante tu memoria Ram

veamos:


Python 3.x


>>> n=10000000000000000000000000000

si estuvieramos en Python 2.x este tipo de variable seria un float pero vemos que tipo arroja

>>>type(n)
type 'int'

vemos que si es verda :) unificaron el tipo de dato ahora solo existe int

se acuerdan de esto:

>>>x=5/2
2

y que teniamos que hacer unos de los dos operadores reales o utilizar la funcion float para que nos arrojara el resultado de 2.5 pues en Python 3.x esto fue corregido veamos:


>>>5/2

2.5


“excelente” :)


otro ejemplo:

>>>x= 6/5

>>>print x

File "", line 1
print x
^
SyntaxError: invalid syntax


error pero que joda ahora que hice mal :( no lo que pasa es que hay que recordar que el tradicional print antes de python 3 era una palabra reservada y ahora se convirtio en una funcion asi que desde python 3.x debes hacer ahora:


>>>print(x)

1.2


Ahora si bueno espero que no se desanimen porque el mundo necesita mas programadores en Python :) el tipo real permanece como lo vimos anteriormente.

bueno hasta aqui lo que tiene que ver con lo que son variables en python, cualquier error o aporte que nos ayuden para mejorar es bienvenido y no se le olviden que sus consejos y cualquier aporte que tenga que ver con Python es bienvenido y les recuerdo que al igual que ustedes estoy en el proceso de aprendisaje de Python :) bueno Animo que en unos dias estaremos haciendo aplicaciones y quien quita jueguitos 2d y en opengl :O asi que a estudiar y Programar bye.

write by Hackchan


domingo, 22 de febrero de 2009

EL MUNDO PYTHON


Hola a todos los programadores la idea principal de este blog es centrar todo lo que tiene que ver en el desarollo de aplicaciones con python. la duda de nuevos programadores es en que lenguaje inicio mi aprendisaje como programador???y los duros en java y .net no dan su brazo a torcer y los master en programacion web no les interesa porque para ellos no hay nada mejor para web sino php ...... pues en realidad python es como debio ser desde un princio Java bueno no voy a criticar a ninguno pues todos tienen ventajas y desventajas pero python promete mucho desde ya y para iniciadores en programacion es perfecto pues la escritura es elegante por obligacion mas no por convenciones ademas con python escribes aplicaciones de escritorio como web y son muy potentes no es por nada que Google esta reescribiendo su codigo a Python y no es por nada que contrataron a Guido el creador de Python para su desarollo y evolucion.en lo personal mis primeros pasos como estudiante fue C y C++ como todos sabemos C es el papa de de todo no habria windows ni Gnu-linux sin C porque en C++ serian mucho mas lento y en java un windows y un Gnu-linux serian desastrozos asi que por mi que todos estudieran C por aparte hasta convertirse es unos hacker de C ya con eso solo es estudiar las reglas del nuevo lenguaje aprender. Ademas python esta escrito en....... por supuesto con el "papa de los amores" :) si C despues salte a java y por su puesto que java alivio la vida de los programadores pero a que precio??? :( y su lucha por la multiplatoforma en aquellos dias mi maquina se recentia de mis programas con entorno grafico en java ya que lentitud de java en esos dias era muy notable con un equipito de ferreteria aun peor :D bueno dejemos el pasado y hablemos del futuro hablemos de Python en lo personal y por que aun en mi trabajos y mis aplicaciones aun no me ha tocado trabajar en Python pero no por eso no voy a dejar de ser parte hacia donde la programacion es cada vez mas cercana al lenguaje natural y por eso que todos los que van a ser participes de esta aventura novatos y guru de este lenguaje aportemos todo nuestro conocimiento en fin de mejorar y ayudar a nuestra sociedad y que los grados de libertad de richard stallman esten simpre presentes en este blog bueno me queda no vas que decirle que igual que todos ustedes quiero convertirme en un guru de Python asi que a Programar.

Características del lenguaje:


Propósito general:


Se pueden crear todo tipo de programas. No es un lenguaje creado específicamente para la web, aunque entre sus posibilidades sí se encuentra el desarrollo de páginas.

Multiplataforma

Hay versiones disponibles de Python en muchos sistemas informáticos distintos. Originalmente se desarrolló para Unix, aunque cualquier sistema es compatible con el lenguaje siempre y cuando exista un intérprete programado para él.


Interpretado

Quiere decir que no se debe compilar el código antes de su ejecución. En realidad sí que se realiza una compilación, pero esta se realiza de manera transparente para el programador. En ciertos casos, cuando se ejecuta por primera vez un código, se producen unos bytecodes que se guardan en el sistema y que sirven para acelerar la compilación implícita que realiza el intérprete cada vez que se ejecuta el mismo código.


Interactivo

Python dispone de un intérprete por línea de comandos en el que se pueden introducir sentencias. Cada sentencia se ejecuta y produce un resultado visible, que puede ayudarnos a entender mejor el lenguaje y probar los resultados de la ejecución de porciones de
código rápidamente.

Orientado a Objetos

La programación orientada a objetos está soportada en Python y ofrece en muchos casos una manera sencilla de crear programas con componentes reutilizables.

Funciones y librerías


Dispone de muchas funciones incorporadas en el propio lenguaje, para el tratamiento de strings, números, archivos, etc. Además, existen muchas librerías que podemos importar en los programas para tratar temas específicos como la programación de ventanas o sistemas en red o cosas tan interesantes como crear archivos comprimidos en .zip.

Sintaxis clara


Por último, destacar que Python tiene una sintaxis muy visual, gracias a una notación identada (con márgenes) de obligado cumplimiento. En muchos lenguajes, para separar porciones de código, se utilizan elementos como las llaves o las palabras clave begin y end. Para separar las porciones de código en Python se debe tabular hacia dentro, colocando un margen al código que iría dentro de una función o un bucle. Esto ayuda a que todos los programadores adopten unas mismas notaciones y que los programas de cualquier persona tengan un aspecto muy similar.

Bueno si quieres ver las organizaciones que usan Python vean en:
http://wiki.python.org/moin/OrganizationsUsingPython

Iniciemos entoces el mundo maravilloso de python con una comparacion de codigo entre C++ y Python de esa forma ir entendiendo esos cambios que nos podria confundir.


nota: Python 3 no es compatible con versiones anteriores asi que a medida que vaya explicando los temas ire mostrando como se hacia en Python antes de la version 3 y sus cambios con referente a la nueva version, un cambio a tener presente desde ya es el print que en Python 2.x esra una palabra reservada (statement) con tratamiento especial y desde Python 3.x es una funcion ahora hay que añadirle al tradicional print los parentisis pero esto no es problema al potencial poder que ahora tiene el print:

Python 2.x
-------------

print "Hola mundo" #imprime y va a la linea
print "Hola mundo", #imprime y no va a la linea

Python 3.x
-------------
print ("Hola mundo")
print ("Hola mundo", end="")

con C++ seria:
---------------


void test(){
int i=1;
while( i<11){
printf("%d",i);
i++;
}

printf("Fin...");

}
int
main()
{
printf ("Numeros del 1 al 10
\n");
test();

return 0;
}

En Python:
-------------

def test():

i = 1

while i <11:

____print (i)

____i += 1

print ("fin..")

def main():

print ("Numeros del 1 al 10")
test()

if__name__ == "__main__":main()

Bueno el codigo en C++ no creo que haya que explicarlo o si ?????


Explicacion del codigo Python:


def test():

aquí solo estamos definiendo una funcion, pero porque : y no { pues como python te exige a que escriba el codigo identado esto quiere decir que despues de los dos puntos tabules el contenido de la funcion:


while i < 11:

____print (i)

____i += 1

como vemos print(i) y i+=1 esta aliniados a 4 espacios desde el while osea que todo las lineas que esten asi son las que el while va a reconocer como suyas, asi que como vemos ahora el print ( “fin..") sale de la sangria de 4 espacios y por ende es como decir un } cierre de ciclo.

while i < 11:

____print (i)
____i+= 1

print (" fin..")

aquí solo definimmos lo que va ser mi funcion principal no es necesario que se llame asi pueden darle el nombre que quiera "Viva los recuerdos de C" :)

def
main():

imprimimos el mensaje y llamamos a nuestra funcion test() la cual contiene nuestro bucle.

print ("Numeros del 1 al 10")

test()

bueno la siguiente linea va asi por que si :) no mentiras, Para poder definir un modulo tanto como modulo como ejecutable se puede poner al final del modulo:


if__name__ == "__main__":main()

El interprete de Python reconoce el nombre del modulo cuando lo ejecutamos como "main" y ejecuta la funcion main( ) (en este caso la llamamos asi puedes colocar el nombre que quieras) o cualquier serie de sentencias que pongamos.Sin embargo si solo importamos el módulo para usarlo en otro modulo el interprete, al no asignarle en __name__ el valor __main__ no ejecutará la función

main( ).


entendieron ??? yo tampoco :) el tecnisismo es la barrera mas cruel entre el conocimiento y mi cerebro :) haber esto es un truco de python para usar nuestro programa como un ejecutable por si solito o si las funciones que estan definidas es este programa como test() al ser importado para reutilizar mi codigo entonces cuando hago esto miremoslo directamente desde el interprete Python , digamos que nuestro archivito se llama conteo.py el obvio contiene el codigo anterior de Python

>>>import conteo

>>>conteo.test()
1

2

3

4

5

6

7

8

9
10


vas captando el uso de este truco if __name__ == "__main__":main() nuestro archivo conteo.py puede ser llamado por si solo o desde un import para usar las funciones que esten definidas alli y cunado hacemos import conteo el ignora main(). Algo muy importante ha tener en cuenta cuando hacemos import los archivos son buscados en unas rutas definidas por Python si queremos ver
cuales son esas rutas basta con hacer lo siguiente:

>>>import sys

>>>sys.path


este es el resultado en mi compu con ubuntu 8.10:

['','/usr/lib/python2.5', '/usr/lib/python2.5/plat-linux2','/usr/lib/python2.5/lib-tk',/usr/lib/python2.5/lib-dynload','/usr/local/lib/python2.5/site-packages','/usr/lib/python2.5/site packages','/usr/lib/python2.5/site-packages/Numeric','/usr/lib/python2.5/site-packages/PIL '/usr/lib/python2.5/site-packages/gst-0.10','/var/lib/python-support/python2.5',/usr/lib /python2.5/site-packages/gtk-2.0','/var/lib/python-support/python2.5/gtk-2.0','/usr/lib/python2.5/site-packages/wx-2.8-gtk2-unicode']


como vemos son varias rutas donde Python busca los archivos, claro esta que podemos definir nuestra propia ruta pero de apocos :) mientras el archivo conteo.py lo podes copiar ha /usr/lib/python2.5 solo te ubicas donde esta nuestro archivo conteo.py y hacemos sudo cp conteo.py /usr/lib/python2.5


Asi que si python se quejo de esta forma:

Traceback (most recent call last):

File "<stdin>", line 1, in <module>
ImportError:
No module named hack.py


es porque cuando haces el import nuestro programa no esta almacenado en una de las rutas especificas para tal fin. Este comienzo para muchos puede ser traumatico pero maneja programacion muy basica para ver la diferencia desde lo que nos interesa a todos en la proxima veremos los que son Listas, tuplas y diccionarios para luego entrar a ver sentencias condicionales y control de flujo.



compilar en linux:

cualquier distro de linux ya viene con el compilador de Python


1)cualquier editor de texto nos sirve para escribir en Python
2)todos los archivos con codigo Python debe tener la extension .py
3)para hacer que nuestro archivo sea ejecutable la primera linea de nuestro archivo debe ser #!/usr/bin/env python
4)damos permisos de ejecucion # sudo chmod 755 miprograma.py
5)lo ejecutamos ./miprograma.py
6)tambien de forma directa podemos hacer python miprograma.py y si es con python 3 pues solo hacemos python3 miprogra.py

Para nuestros windowseros desde aquí:
http://www.python.org/download/releases/3.0.1/


esta es la ultima version disponible desde el 13 de De Feb. Del 2009


write by Hackhan