You are on page 1of 1335

APRENDIENDO PYTHON DESDE CERO (PARTE CERO)

Realmente esta serie de tutoriales, que comienza en esta parte cero como introduccion, trata de que yo aprenda python y a programar con el, y por supuesto ir compartiendo lo que voy leyendo y aprendiendo con el que quiera leerlo y aprender junto a mi. Realmente no me anime a llamarlo curso, porque para hacer un curso sobre algo hay que saber, y yo no se casi nada de python, lo poco que aprendi fue a los tropezones en mi trabajo y porque tenia que programar exploits, lo cual se realiza en este idioma mayormente, por lo tanto mis conocimientos del tema estan llenos de baches, dudas que como siempre ha pasado en mi vida a medida que voy escribiendo voy aprendiendo a solucionar y a entender, por lo cual, este realmente es una especie de lo que llamamos en al argentina machete, el papelito que haciamos en la escuela para copiarnos en las pruebas, y cuando terminabamos de escribirlo nos dabamos cuenta que por solo escribirlo, habiamos aprendido algo sobre el tema y que escribir hace que se aprenda mejor y se fijen conocimientos.

PORQUE PYTHON?

Bueno un poco ya lo dije al trabajar en el area de seguridad y de exploit writing, el idioma natural para ello es python, aunque hay quien usa otros idiomas, como ruby, C, o algun otro, de cualquier manera sin ser yo un experto del tema reconozco algunas ventajas del idioma python para dicho uso, lo mismo que para scripting de programas, lo cual tambien veremos mas adelante (OLLYPYTHON, IDA PYTHON) nos permitiran bastante mas adelante cuando ya conozcamos el idioma, programar potentes scripts para nuestros mas usados debuggers y programas, lo cual no invalida que python pueda ser usado para programar aplicaciones de cualquier tipo, sobre todo es muy util para programar facilmente keygens, crackmes, tools y en general cualquier programa en el cual la velocidad no sea lo mas importante, y si la rapidez de programacion, legibilidad y portabilidad. Una de las ventajas de python sobre otros idiomas tambien sobre todo a nivel scripting es que es muy sencillo de entender, el codigo es breve, y cualquiera aunque no haya escrito el programa, le costara mucho menos entender lo que hace que en otros idiomas, el codigo es facilmente reusable, y como se le pueden agregar modulos, puede incrementarse con modulos propios o ajenos. Muchos programas de hoy dia que necesitan actualizacion tienen una GUI principal, hecha en algun idioma, y ejecutan scripts hechos en python, para realizar sus tareas, los cuales proveen a los usuarios una forma de manejar el programa sencilla, facil de entender, portable (ya que el codigo python funciona en linux, windows, mac, hay versiones de python para java, para celulares, para pda, notebooks, asi que realmente es un lenguaje muy poderoso, y con una curva de aprendizaje mucho mas suave que otros idiomas similares. Por lo demas la indentacion o sangria que a muchos usuarios les parece algo molesto en python, no lo es tanto, pues permite leer el codigo mas facilmente, y de cualquier forma si uno se equivoca el interprete de python se encargara de avisarle que ha cometido un error de indentacion, por lo cual, es un pequeño paso de adaptacion que conlleva a que el codigo sea mas prolijo y legible.

Como por supuesto yo no se mucho de esto me baso en libros.

Estos libros que son la biblia de python : O'Reilly - Mark Lutz & David Ascherhttp://www.activestate.com/Products/activepython/ pulsamos el boton de GET ACTIVE PYTHON " id="pdf-obj-2-2" src="pdf-obj-2-2.jpg">

Estos libros que son la biblia de python :

O'Reilly - Mark Lutz & David Ascher - Learning Python Mark Lutz - Programming Python Oreilly.Python_Pocket_Reference, .Mark_Lutz

Estan escritos dichos libros en ingles por gente que sabe de esto, jeje, y bueno seguiremos sus pasos, por el aprendizaje de python, por otro lado, a pesar de que existen versiones de active python 2.5.x.x , nosotros usaremos aun la version 2.4 ya que es compatible con ollypython, con idapython, y realmente la diferencia con la version 2.5 es minima, asi que si uno aprende python lo puede hacer con ambos, pero todo lo que practique en estos tutoriales sera basado en este active python 2.4.x.x.

Para conseguirlo vamos a la pagina

pulsamos el boton de GET ACTIVE PYTHON

y luego de elegir la version FREE por obvias razones

y luego de elegir la version FREE por obvias razones

y luego de elegir la version FREE por obvias razones

Elegimos de la version 2.4.3.11 la correspondiente a windows, si realmente vamos a instalarlo en windows, en linux ya viene incluido en el sistema no hay que instalar nada, creo que en mac tambien.

Una vez instalado el paquete MSI que acabamos de bajar, verificamos si esta bien instalado por lo cual antes de ejecutarlo abrimos una ventana de comandos CMD y tipeamos python

Microsoft Windows XP [Versión 5.1.2600] (C) Copyright 1985-2001 Microsoft Corp.

C:\Documents and Settings\Ricardo.NARVAJA-D6A3908>python ActivePython 2.4.3 Build 12 (ActiveState Software Inc.) based on Python 2.4.3 (#69, Apr 11 2006, 15:32:42) [MSC v.1310 32 bit (Intel)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>>

y si esta todo bien nos debe devolver la version que acabamos de instalar con el prompt de python >>>, esto debe ocurrir en cualquier ventana de comandos con cualquier path, si no ocurre, pues habra que ir a la ventana de environment variables o variables de entorno y agregar el path al ejecutable de python en mi caso C:\Python24\, aunque el instalador lo hace automaticamente.

Elegimos de la version 2.4.3.11 la correspondiente a windows, si realmente vamos a instalarlo en windows,

Bueno tenemos todo listo para ejecutar el active python que acabamos de instalar, pero tambien como vimos es bueno recordar que en cualquier ventana de comandos si escribimos python, se abre un interprete del mismo, y podemos escribir alli cualquier comando o instruccion del mismo, muchas veces para hacer una pequeña cuenta no necesitamos abrir el active python, abrimos la CMD.

Como python es calculadora tambien y su lenguaje es tan intuitivo y sencillo, podremos hacer operaciones

Como python es calculadora tambien y su lenguaje es tan intuitivo y sencillo, podremos hacer operaciones alli mismo.

Pueden en una sola liea escribir intuitivamente una operación por ejemplo

56+ 45* 6 y al apretar enter lo resolvera

>>> 56+45*6

326

alli esta por lo demas podemos facilmente darnos cuenta que podemos por ejemplo asignar un valor a una variable X o el nombre que queramos y en el siguiente paso operar con ella

si escibimos X=5 enter y luego X+67 y enter nos dara el resultado

>>> x=5

>>> x+67

72

>>>

Por supuesto esto demuestra la flexibilidad del idioma que nos permite probar linea a linea cada instrucción y ejecutarla una a una, o todas a la vez si realizaramos un script, pero bueno, es importante saber que la linea de comandos, o el terminal de linux, nos quedaran muy poderosos, pues podemos ejecutar directamente instrucciones de python, que siempre son sencillas, y poderosas.

Como python es calculadora tambien y su lenguaje es tan intuitivo y sencillo, podremos hacer operaciones

Tambien si ejecutamos el programa veremos la interface del mismo

Vemos la ventana interactiva donde podemos tambien practicar tipear lo que antes hemos hecho en la

Vemos la ventana interactiva donde podemos tambien practicar tipear lo que antes hemos hecho en la ventana de comandos de windows o en el terminal de linux.

Vemos la ventana interactiva donde podemos tambien practicar tipear lo que antes hemos hecho en la

Vemos que es muy intuitivo escribir alli, al igual que en la CMD, podemos asignar variables y al darle enter, tomaran su valor, podemos realizar operaciones con las mismas, y mientras no cerremos la ventana interactiva, quedaran en memoria los ultimos valores que se han asignado o ejecutado.

Si en el caso anterior agrego

Y= x + 5666

a diferencia de escribir solo x + 5666 que me muestra el resultado directo en la consola, en este caso como es una asignacion, el resultado quedara almacenado en Y el cual podemos ver tipeando Y y enter.

Por supuesto esto lo veremos mas detalladamente por ahora solo estamos mostrando la interface grafica con

Por supuesto esto lo veremos mas detalladamente por ahora solo estamos mostrando la interface grafica con algun ejemplito simple.

Ademas de la interface interactiva, al apretar el boton NEW

Por supuesto esto lo veremos mas detalladamente por ahora solo estamos mostrando la interface grafica con

Podemos abrir un editor de script de python completos.

Por supuesto esto lo veremos mas detalladamente por ahora solo estamos mostrando la interface grafica con

Pythonwin posee las dos posibilidades, la ventana interactiva y el editor de scripts, realmente la ventana interactiva solo se usa para probar comandos sueltos o pocos comandos, a ver que efecto tienen y mientras uno esta aprendiendo es muy util ver que ocurre al ejecutar algun comando, o un par de comandos, mientras que el editor de scripts, se utiliza para programar.

Cuando uno ya conoce mas las instrucciones, puede armar un script o programa completo en el editor, es lo que se utiliza normalmente, lo que si en este ultimo, no podremos ejecutar instrucciones sueltas sino que deberemos correr el script completo, por eso quizas en las primeras instancias del aprendizaje, mientras nos familiarizamos con los comandos usamos, la ventana interactiva por su efecto inmediato.

Cuando uno ya conoce mas las instrucciones, puede armar un script o programa completo en el

Aquí la cosas no se ejecutan ya linea a linea como en la ventana interactiva, si no que en forma bastante similar al editor OLLYSCRIPT, para los que lo conozcan, aquí podemos escribir un script entero de python, guardarlo y correrlo, ya veremos su uso mas detallado, lo importante es que se vea la diferencia de que aquí no se ejecuta instrucción a instrucción como en la ventana interactiva, sino se escriben scripts completos, como ejemplo breve.

Cuando uno ya conoce mas las instrucciones, puede armar un script o programa completo en el

Bueno es un miniscript que realmente se podia ejecutar directamente en la ventana interactiva pero nos servira para probar la ventana de scripts.

Guardo mi script con un nombre Lo cierro y vuelvo a la ventana interactiva, puedo borrar

Guardo mi script con un nombre

Guardo mi script con un nombre Lo cierro y vuelvo a la ventana interactiva, puedo borrar

Lo cierro y vuelvo a la ventana interactiva, puedo borrar todo lo que habia de antes y script ...

si corro el

Guardo mi script con un nombre Lo cierro y vuelvo a la ventana interactiva, puedo borrar
y puedo ver el resultado impreso en la consola,veo lo que mencione anteriormente la salida de

y puedo ver el resultado impreso en la consola,veo lo que mencione anteriormente la salida de un script, se hace por medio del comando print . Si no le colocara el print delante, el script no mostraria nada en la consola de salida, aunque pongamos el nombre de la variable solo:

hello='Hello World!' hello

Es de mencionar que el hecho de que la ventana interactiva, nos muestre el valor de una variable solo tipeando el nombre de la misma y ENTER, es una caracteristica especial de la misma, para ayudarnos a saber el valor rapidamente de alguna variable, pero cuando un script lo escribimos completo en el editor de scripts, y queremos que al ejecutarlo muestre el valor de algo, deberemos usar print, lo cual mostrara el valor en la consola o salida, hago esta aclaracion porque muchos lectores al ver que en la ventana interactiva puedo ver el contenido solo tipeando la variable y ENTER, se confunden y piensan que en un script tambien es similar, y no es asi, alli habra que usar el comando print para mostrar algo en la salida. El hello solo como dijimos, no mostrara salida alguna, sin el print delante, siempre debemos recordar que tipear una variable sola, y luego apretar ENTER solo sirve para ayudarnos a saber su valor, en la ventana interactiva y no funciona en el editor de scripts.

y puedo ver el resultado impreso en la consola,veo lo que mencione anteriormente la salida de

Fue realmente facil mi primer script jeje, puedo reabirlo con OPEN y agregarle cosas, modificarlo

si le agrego y lo guardo y corro Veo que podia escribir una sola string YO

si le agrego

si le agrego y lo guardo y corro Veo que podia escribir una sola string YO

y lo guardo y corro

si le agrego y lo guardo y corro Veo que podia escribir una sola string YO

Veo que podia escribir una sola string YO SOY PEPE o sumar strings, jeje, asi de una sumo strings , puse YO mas SOY mas PEPE y asi como venia sumo las tres a una sola string y la asigno a la variable pepe, la cual imprimi en la siguiente linea.

Vemos en estos ejemplos que sin tener que declarar tipos de variables, solamente asignandoles valores, podemos trabajar con ellas, ya veremos mas adelante ejemplos y como podemos profundizar en el tema.

Tambien vemos que como lenguaje para hacking es python muy poderoso, pues desde una simple linea de comandos podremos tener acceso a muchisimas posibilidades, que mas adelante veremos aunque realmente esto no sera un curso de hacking ni de exploit, se podra entrever, las posibilidades del idioma para estos menesteres.

Bueno creo que ingresamos amenamente en el tema y de a poco, iremos paso a paso avanzando espero que a alguien le interese, aunque como dije, yo aprendo y el que me siga pues si quiere que me siga y si no, pues hay miles de tutoriales de otros temas, seguramente mejores y mas interesantes que este.

Un abrazo a todos los crackslatinos y hasta la proxima parte 1 donde empezaremos a estudiar el idioma en profundidad.

INTRODUCCION A PYTHON (parte 1)

EJECUTANDO

Como vimos en la parte 0, ejecutar el mas simple script o programa en todo lenguaje, es imprimir como salida la cadena de texto HOLA MUNDO o HELLO WORLD, en la parte anterior hicimos un script que ejecutaba dicha accion, vimos que si lo corremos desde la interfase de python apretando el boton RUN

INTRODUCCION A PYTHON (parte 1) EJECUTANDO Como vimos en la parte 0, ejecutar el mas simple
INTRODUCCION A PYTHON (parte 1) EJECUTANDO Como vimos en la parte 0, ejecutar el mas simple

En la consola interactiva nos mostrara la salida del programa que esta guardado en el script, o sea la cadena HOLA MUNDO o HELLO WORLD.

Recordemos siempre que si hacemos cambios en el script, antes de correrlo debemos guardarlos y alli se ve.

Ahora si el mismo script lo ejecutamos haciendo doble click en el mismo, estando cerrado el

Ahora si el mismo script lo ejecutamos haciendo doble click en el mismo, estando cerrado el interprete de python, nos mostrara la salida en una ventana de comandos, si estamos en windows, dicha ventana no dara tiempo a ver nada y se cerarra como ocurre con todos los programas que tienen salida por consola, hasta que hagamos programas con otro tipo de salida es bueno saber este truquito.

Ahora si el mismo script lo ejecutamos haciendo doble click en el mismo, estando cerrado el

Ya explicaremos bien comando por comando, pero bueno input es un comando que queda esperando que el usuario aprete una tecla y si apreta ENTER terminara y se cerrara el programa y quedara visible hasta que apretemos dicha tecla.

Ahora si el mismo script lo ejecutamos haciendo doble click en el mismo, estando cerrado el

Y cuando apretamos ENTER podemos salir, este truquito mientras hagamos scripts que tenga salida por ventana de comandos siempre lo agregaremos al final, para que no se cierre solo, y podamos ver los scripts solo ejecutandolos con doble click.

Por supuesto que este simple script es una de las tantas formas que podemos imprimir HOLA MUNDO, ya vimos que si abrimos una consola de windows y escribimos python.

Microsoft Windows XP [Versión 5.1.2600] (C) Copyright 1985-2001 Microsoft Corp.

C:\Documents and Settings\Ricardo.NARVAJA-D6A3908>python ActivePython 2.4.3 Build 12 (ActiveState Software Inc.) based on Python 2.4.3 (#69, Apr 11 2006, 15:32:42) [MSC v.1310 32 bit (Intel)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>>

y alli tipeamos

print 'Hola Mundo'

Microsoft Windows XP [Versión 5.1.2600] (C) Copyright 1985-2001 Microsoft Corp. C:\Documents and Settings\Ricardo.NARVAJA-D6A3908>python ActivePython 2.4.3 Build

Tendremos la salida similar, lo mismo que si abrimos la ventana interactiva de python

Microsoft Windows XP [Versión 5.1.2600] (C) Copyright 1985-2001 Microsoft Corp. C:\Documents and Settings\Ricardo.NARVAJA-D6A3908>python ActivePython 2.4.3 Build

y escribimos la instrucción y apretamos ENTER tambien obtenemos la misma salida o sea que tenemos diversas formas de lograr el mismo objetivo.

1) ejecutando la instrucción en la consola de windows o terminal en linux o mac luego de tipear python.

2)

tipeando la instrucción en la ventana interactiva de python

3)

haciendo un script y corriendolo con doble click o con el RUN desde python.

Vemos que la opcion 1 y la 2 son para ejecutar unas cuantas instrucciones y para experimentar que resultado se produce al ejecutarlas, pero para programas largos o scripts complejos, no podemos tipear cada vez lo mismo, por lo cual en esos casos se aconseja la opcion 3 que es de guardar el codigo en un script, el cual no necesita ser retipeado y puede ejecutarse, copiarse, editarse, mejorarse, la cantidad de veces que uno quiera.

De cualquier manera según lo que uno necesite hacer, python permite en forma flexible, elegir entre las diferentes opciones, lo cual es muy util, por ejemplo, en el aprendizaje de las instrucciones de python es muy util la ventana interactiva para poder ver y practicar con pocos comandos en forma

inmediata,y ver que resultados producen.

Bueno abramos el primer script que realizamos ahora le agregaremos

------------------------------------------------------------------------------------------------------------------------

hello = "Hello, World!"

print hello

print 2 * 100

input( "Presione ENTER para terminar" )

Guardamos los cambios y lo ejecutamos con doble click

inmediata,y ver que resultados producen. Bueno abramos el primer script que realizamos ahora le agregaremos ------------------------------------------------------------------------------------------------------------------------

Bueno ahi tenemos el primer print imprime una string que esta entre comillas , HELLO WORLD, el segundo print imprime el resultado de 2 por 100 y luego tenemos la salida de la ventana apretando ENTER.

Por ahora no nos preocupamos mucho de la sintaxis, mas adelante se explicara comando por comando, por ahora estamos ejecutando scripts en forma bastante intuitiva.

Realmente un script no necesitamos crearlo en python, en cualquier editor de texto, como el notepad, si escribimos el mismo texto y lo guardamos con extension .py o con extension .txt y luego se la cambiamos, sera exactamente lo mismo.

Si le agregamos un * mas sera como elevar 2 a la 100

hello = "Hello, World!" print hello

print 2 ** 100

input( "Presione ENTER para terminar" )

al ejecutarlo se vera el resultado de la operación

Otro truco parecido para evitar que se cierren las consolas de comandos es usando el comando

Otro truco parecido para evitar que se cierren las consolas de comandos es usando el comando raw_input, que es bastante similar a lo que pusimos anteriormente pero menos aparatoso.

Si al final del script agrego

raw_input ()

veamos que ocurre, alli en mi primer script le cambie por raw_input() el comando para evitar que se cierre la ventana, guardemos los cambios y ejecutemoslo.

Otro truco parecido para evitar que se cierren las consolas de comandos es usando el comando

Si lo ejecuto

Otro truco parecido para evitar que se cierren las consolas de comandos es usando el comando

es menos invasivo y al apretar enter tambien sale, recomiendan este y bueno cada uno aplica el que mas le guste, mas adelante detallaremos la diferencia entre ambos.

Realmente cuando uno ejecuta un script de python, el interprete lo compila en una fila de extension .pyc que es el codigo de python compilado, y para mayor velocidad mientras no se cambie el codigo cada vez que se ejecuta un script, se ejecuta dicho pyc para mayor rapidez.

Igual esto no necesita saberse pues siempre uno ejecuta el .py, este o no este el

Igual esto no necesita saberse pues siempre uno ejecuta el .py, este o no este el .pyc es un tema de funcionamiento interno, pero bueno a modo ilustrativo es bueno saberlo. Esos pyc son ejecutados por la llamada PYTHON VIRTUAL MACHINE que es realmente un loop que lee byte a byte y según cual es ejecuta la siguiente instrucción.

Igual esto no necesita saberse pues siempre uno ejecuta el .py, este o no este el

Asimismo los usuarios de C veran que aquí no existe make ni es necesario compilar el codigo fuente, el mismo se compila y ejecuta automaticamente, por lo cual es mas sencillo, aunque un poco mas lento al ejecutar, pero con los avances de hardware de hoy dia, realmente no se nota gran diferencia.

Tambien existen formas de crear exes, que pueden correr en maquinas que no tienen python instalados, por ejemplo en WINDOWS, existe un programa llamado Py2exe que genera exes que corren en cualquier windows, tengan o no tengan python instalado, por supuesto el hecho de llevar las dll de python dentro del mismo exe, supone un incremento de tamaño, piensen si en cada

ejecutable .NET pusieramos las dll que necesita dentro del mismo exe, para evitar que el usuario instale el runtime necesario, habria exes de NET de 60 megas jeje, que ejecutan 2 o 3 instrucciones, por lo tanto lo logico es que si alguien corre programas escritos en python, tenga instalado python en su maquina, mejor que meter todo en exes, agrandando las cosas.

Bueno volvamos a nuestra ventana interactiva para tipear algunos comandos en forma intuitiva que explicaremos mas en profundidad en siguientes partes.

Esto pueden tipearlo tanto en la ventana interactiva de pyton como en una consola de comandos o terminal luego de tipear python es similar.

Por mejor claridad lo tipeare en la ventana interactiva de python.

ejecutable .NET pusieramos las dll que necesita dentro del mismo exe, para evitar que el usuario

Practicamos ejecutando prints, primero el clasico 'Hola Mundo' y luego una operación que se resuelve y me muestra el resultado.

Si asigno algun valor a una variable, puedo ver el valor asignado a la misma solo tipeando el nombre de ella.

ejecutable .NET pusieramos las dll que necesita dentro del mismo exe, para evitar que el usuario

Alli asigne a pepe el valor 87655 que quedo almacenado, no lo muestra pues fue una asignacion solamente, si tipeo el nombre de la variable me mostrara el valor asignado.

ejecutable .NET pusieramos las dll que necesita dentro del mismo exe, para evitar que el usuario

Vemos que al tipear pepe, la ventana interactiva nos mostro el valor asignado, de cualquier manera esto no debe confundirnos, es solo una opcion para visualizar en la ventana interactiva de python, si queremos que un programa muestre en la salida un resultado deberemos usar print, si no no se mostrara.

Tambien vimos que python puede concatenar strings facilmente si tipeamos

print 'PEPE' + ' ES'+ ' UN' + ' GENIO' ##concatenar

lo que se halla luego de ## es un comentario que no se ejecuta y sirve para saber en un programa que se esta haciendo, si tipeo esto y lo ejecuto.

Vemos que al tipear pepe, la ventana interactiva nos mostro el valor asignado, de cualquier manera

Vemos que se concatenan las strings y que el comentario por supuesto no se ejecuta, es muy practico dentro de un script complejo, poner comentarios para ayudar a la comprension del codigo.

Ahora escribimos un script con estas lineas

Vemos que al tipear pepe, la ventana interactiva nos mostro el valor asignado, de cualquier manera

Lo guardo con el nombre spam.py y al darle doble click

Vemos que al tipear pepe, la ventana interactiva nos mostro el valor asignado, de cualquier manera

tambien si en una consola de comandos, me ubico en el path donde esta el archivo

C:\Documents and Settings\Ricardo.NARVAJA-D6A3908>cd Escritorio

C:\Documents and Settings\Ricardo.NARVAJA-D6A3908\Escritorio>

y luego escribo python y el nombre del archivo a ejecutar lo correra.

C:\Documents and Settings\Ricardo.NARVAJA-D6A3908> cd Escritorio C:\Documents and Settings\Ricardo.NARVAJA-D6A3908\Escritorio> y luego escribo python y el nombre del

Es bueno poder ejecutar un script desde una linea de comandos, eso nos permite por ejemplo desviar la salida del script a un archvo de texto facilmente.

Si tipeo en la linea de comandos

python spam.py > pepe.txt

guardara la salida del archivo a un archivo de texto llamado pepe.

Si abro el pepe.txt

C:\Documents and Settings\Ricardo.NARVAJA-D6A3908> cd Escritorio C:\Documents and Settings\Ricardo.NARVAJA-D6A3908\Escritorio> y luego escribo python y el nombre del
C:\Documents and Settings\Ricardo.NARVAJA-D6A3908> cd Escritorio C:\Documents and Settings\Ricardo.NARVAJA-D6A3908\Escritorio> y luego escribo python y el nombre del

Vemos que direcciono la salida al archivo de texto y no se mostro en la ventana de comandos jeje.

Asi vamos practicando y divirtiendonos con ejemplos simples, que son faciles de entender antes de hacer un resumen mas detallado de las instrucciones en la parte siguiente.

Escribo import sys que me importara el modulo sys, y en la linea siguiente tipeo print

Escribo import sys que me importara el modulo sys, y en la linea siguiente tipeo

print sys.

Escribo import sys que me importara el modulo sys, y en la linea siguiente tipeo print

Vemos que al apretar sys y el punto sale una ventana para elegir las distintas opciones que tiene el modulo sys en este caso elegimos platform con TAB lo ingresamos y luego ENTER.

Escribo import sys que me importara el modulo sys, y en la linea siguiente tipeo print

Alli vemos como importamos una funcion que pertenece al modulo sys, que nos devuelve la plataforma donde estamos corriendo nuestro script, la posibilidad de importar modulos hechos y de hacer mas, nosotros mismos, o bajar de internet nos da muchas posibilidades.

Tambien hay scripts en python que no muestran la consola de windows, y tienen la extension .pyw, en ese caso son scripts que tienen su propia salida y la consola de windows molesta, de forma que al guardarlo como .pyw, no se mostrara.

IMPORTANDO MODULOS

La definicion de modulo en python es simple, cualquier archivo que esta hecho en python, y tiene extension .py es un MODULO. Cualquier otro archivo de python puede acceder a las posibilidades de un modulo, importandolo y usandolo.

Generalmente largos programas escritos en python tienen la forma de multiples modulos, los cuales importan herramientas de otros modulos.

Ya hemos visto como ejemplo la importacion del modulo sys, y hay muchisimos mas que podriamos poner como ejemplos.

Si hacemos un script con ello

import sys print sys.platform print 2 ** 100

y lo guardamos con el nombre Script4.py

IMPORTANDO MODULOS La definicion de modulo en python es simple, cualquier archivo que esta hecho en

si lo ejecuto desde la linea de comandos

IMPORTANDO MODULOS La definicion de modulo en python es simple, cualquier archivo que esta hecho en

alli esta la salida que nos muestra que estamos en win32.

Si alli entro en python y tipeo

import Script4

IMPORTANDO MODULOS La definicion de modulo en python es simple, cualquier archivo que esta hecho en

la primera vez lo ejecutara, sucesivas veces tendre que usar el comando reload

reload (Script4)

lo ejecutara nuevamente al modulo que tiene cargado. Importar realment sirve para ejecutar modulos ajenos en

lo ejecutara nuevamente al modulo que tiene cargado.

Importar realment sirve para ejecutar modulos ajenos en el nuestro asi como usar las herramientas que este tenga programadas internamente.

Vayamos a la ventana interactiva

lo ejecutara nuevamente al modulo que tiene cargado. Importar realment sirve para ejecutar modulos ajenos en

alli importo el modulo

lo ejecutara nuevamente al modulo que tiene cargado. Importar realment sirve para ejecutar modulos ajenos en

vemos que al escribir print Script4. Aparece las posibles tools y variables que tiene incluidas el modulo Script4, como aun no define propias, usa la que importo de sys, pero como eso no lo asigna a ninguna variable no nos mostrara nada

Esto te dice que el modulo esta alli pero no muestra nada porque no se asigna

Esto te dice que el modulo esta alli pero no muestra nada porque no se asigna a ninguna variable, si editamos Script4 y cambiamos para que asigne a la variable llamada a el valor de la string de que sistema estamos corriendo y guardamos los cambios y ahora si importamos el modulo.

Esto te dice que el modulo esta alli pero no muestra nada porque no se asigna

Como cerre y abri la ventana interactiva no lo encuentra ya veremos que hay una carpeta especial conde se colocan los modulos de python para que los busque alli, pero si lo abro y lo guardo ya lo localiza nuevamente.

Esto te dice que el modulo esta alli pero no muestra nada porque no se asigna

Alli importo el modulo ahora no se ve en que sistema operativo estamos trabajando porque eso esta en la variable a dentro de Script4, si hacemos ...

ahora no solo nos aparece sys como opcion si no tambien la variable a que creamos,

ahora no solo nos aparece sys como opcion si no tambien la variable a que creamos, la elegimos con TAB.

ahora no solo nos aparece sys como opcion si no tambien la variable a que creamos,

Y al apretar enter ahi si nos muestra que estamos en WIN32, vimos como usar una funcion del modulo sys, como asignarlo a una variable a dentro del modulo Script4, y luego como podemos llamar a la variable Script4.a que nos devuelve el valor solicitado, usando el trabajo entre modulos.

Bueno por hoy hay bastante para practicar esto es solo un pequeño pantallazo para que se vayan familiarizando con el idioma, ya iremos detallando mas adelante.

Un abrazo hasta la parte 2 Ricardo Narvaja

APRENDIENDO PYTHON DESDE CERO Parte 2 ( practicando importar modulos + keys utiles)

Seguimos despacio practicando importar modulos, un poco mas para que quede claro como funciona esto, que es tan importante en python.

a = 'pepe' b = 'pirulo' c = 'campeon' print a, b, c

# definimos 3 atributos.

Lo guardamos en un script nuevo llamado Practica1.py

APRENDIENDO PYTHON DESDE CERO Parte 2 ( practicando importar modulos + keys utiles) Seguimos despacio practicando

Como vemos este script asigna tres variables a,b y c que pueden ser invocadas al importar este modulo desde el mundo exterior, ademas si lo ejecutamos imprime los contenidos de esas variables.

En la ventana interactiva lo ejecutamos desde el boton RUN y lo buscamos donde lo hayamos guardado con el buscadorcito que trae al apretarlo.

Si hacemos import ...

APRENDIENDO PYTHON DESDE CERO Parte 2 ( practicando importar modulos + keys utiles) Seguimos despacio practicando

Las proximas veces para correrlo hay que hacer reload desde aquí o apretar nuevamente el boton RUN

Ahora que esta importado en la ventana interactiva podemos invocar cualquiera de las variables de ese

Ahora que esta importado en la ventana interactiva podemos invocar cualquiera de las variables de ese modulo y usarlas, ya se desde otro script o desde la ventana misma.

Ahora que esta importado en la ventana interactiva podemos invocar cualquiera de las variables de ese

Vemos que apenas escribo print Practica1 y el punto me salen las opciones de variables que tiene ese modulo asignadas para usar en el mundo exterior, que somo sabemos son a, b y c, si queremos imprimr b solamente elegimos b y TAB.

Ahora que esta importado en la ventana interactiva podemos invocar cualquiera de las variables de ese

Al apretar ENTER podemos imprimir la variable b, que esta asignda dentro del modulo Practica1, veremos que tambien esto se puede hacer desde un segundo script escribamos un nuevo script llamado Practica2.

Ahora que esta importado en la ventana interactiva podemos invocar cualquiera de las variables de ese

Vemos que mientras escribo el nuevo script tambien me aparece la ayuda para elegir variables del modulo que importe.

Ahora vuelvo a la ventana interactiva y voy al boton RUN y al correr Practica2, importa

Ahora vuelvo a la ventana interactiva y voy al boton RUN

Ahora vuelvo a la ventana interactiva y voy al boton RUN y al correr Practica2, importa
Ahora vuelvo a la ventana interactiva y voy al boton RUN y al correr Practica2, importa

y al correr Practica2, importa el modulo Practica1 y imprime del mismo la variable b.

Ahora vuelvo a la ventana interactiva y voy al boton RUN y al correr Practica2, importa

Es muy importante entender el concepto de importacion por eso puse algunas practicas mas para que estemos seguros antes de avanzar mas.

Debemos recordar que como no guardamos el modulo en la carpeta de modulos, si cerramos y abrimos la ventana interactiva solo aceptara importar modulos que esten en la misma carpeta, que el script que estoy ejecutando, para evitar eso existe la carpeta de modulos como explicaremos mas adelante. Existe una forma de importacion selectiva de un modulo, en vez de como veniamos haciendo hasta ahora,que importabamos el modulo completo, si sabemos por ejemplo que solo usaremos la variable b y el resto no, en ese caso tipeamos en la ventana interactiva.

Debemos recordar que como no guardamos el modulo en la carpeta de modulos, si cerramos y

En este caso solo importo la variable b, y luego imprime las 3, eso es porque tiene incluido el print de las 3 variables dentro del modulo, pero si quiero usar una variable, veremos que solo puedo usar la b, pues es la unica importada.

En esta forma de importar parcial, no necesito invocar el nombre del modulo original, es mas si lo hago me dara error solo haciendo print b vere el resultado.

Debemos recordar que como no guardamos el modulo en la carpeta de modulos, si cerramos y

Vemos que solo print b no me da error, tanto print a que no esta importada como print Practica1.b no funcionan esta ultima porque no importamos el modulo completo, solo una variable suelta, por eso hay que llamarla directamente, como hemos hecho con print b. A veces con modulos muy largos y con muchas variables que uno sabe que solo va a usar una o dos y no el modulo completo es mejor hacer una importacion parcial, para hacer mas rapido y que sea mas breve el codigo.

Alli copiamos nuestro mudulo de ejemplo a la carpeta lib que esta dentro del directorio de

Alli copiamos nuestro mudulo de ejemplo a la carpeta lib que esta dentro del directorio de instalacion.

Alli copiamos nuestro mudulo de ejemplo a la carpeta lib que esta dentro del directorio de

Tambien copiamos el modulo Practica1 alli ya que Practica2, importa Practica1 dentro de el.

Alli copiamos nuestro mudulo de ejemplo a la carpeta lib que esta dentro del directorio de

Ahora veo que si abro una ventana interactiva nueva, o una ventana de comandos nueva o lo que sea, mis modulos son aceptados como modulos de python siempre, jeje.

Esa es la forma de agregar un modulo a la instalacion de python, copiandolo al directorio

Esa es la forma de agregar un modulo a la instalacion de python, copiandolo al directorio lib se podra usar, como los otros que ya vienen incluidos y se encuentran alli, sin problemas de path ni nada, de cualquier manera si es un script que uno distribuye y envia, puede enviar los modulos que se van a usar para que los coloquen o bien en su propia carpeta modulos, como asi tambien en la misma carpeta que el script que se ejecutara, en ambos casos funcionara igual.

Esa es la forma de agregar un modulo a la instalacion de python, copiandolo al directorio

Si voy a Browse Python Path puedo ver los modulos actuales y estan los mios jeje

Esa es la forma de agregar un modulo a la instalacion de python, copiandolo al directorio

al hacer doble click se abre tanto ese como cualquiera de los modulos incorporados

el comando dir con el nombre del modulo entre parentesis nos muestra ademas de alguna info

el comando dir con el nombre del modulo entre parentesis

el comando dir con el nombre del modulo entre parentesis nos muestra ademas de alguna info

nos muestra ademas de alguna info interna de python, el nombre de los atributos internos del modulo.

el comando dir con el nombre del modulo entre parentesis nos muestra ademas de alguna info

Como el modulo Practica2 no tiene ningun atributo propio, entonces sale solo la info interna de python.

Para terminar este parte les dire algunos truquitos sobre el IDE de python, algunos se habran dado cuenta quizas por ustedes mismos otros quizas no sabian, aquí van:

1)Al menos en los teclados españoles, el asterisco, el signo mas deben usarse de las teclas que estan encima de la tecla ENTER, las del teclado numerico no responden.

2)CTRL mas la flecha hacia arriba sale el ultimo texto tipeado anteriormente alli guarda como una memoria mientras no se cierre la ventana, podemos recorrer con esto los comandos viejos que ya tipeamos y volverlos a ingresar sin tener que retipearlos.

3)Si tenemos una ventana interactiva abierta y algun script abierto con ALT mas I podemos switchear entre ambos.

4)CTRL + Z deshace lo ultimo que hemos hecho, si repetimos ira deshaciendo hacia atrás todo lo

que hicimos ultimamente.

5)CTRL + Y lo opuesto al anterior lo recuperara.

6)CTRL + U pasa a minusculas

7)CTRL mas SHIFT mas U pasa a mayusculas

Estos creo son los mas importantes y los que recuerdo ahora a medida que vayamos usando, y me acuerde o descubra alguno mas los agregamos.

Hasta la parte 3 Ricardo Narvaja

APRENDIENDO PYTHON DESDE CERO PARTE 3 ( numeros y operaciones)

En python los datos toman la forma de objetos, los tipos de objetos que trae Pyhton pre-definidos son NUMEROS, STRINGS, LISTAS, DICCIONARIOS, TUPLAS y FILAS.

Alli en la tabla vemos los tipos de objetos predefinidos y ejemplos de los mismos en esta parte empezaremos a ver el primer tipo que son los NUMEROS y las operaciones entre ellos.

APRENDIENDO PYTHON DESDE CERO PARTE 3 ( numeros y operaciones) En python los datos toman la

NUMEROS

Es el mas comun de los objetos, y el que uno esta mas familiarizado, uno puede llevar la cuenta bancaria, medir distancias, alturas, y demas cuentas con numeros de diferentes tipos. Python soporta los tipos numericos usuales como ENTEROS y PUNTO FLOTANTE, LONGS, HEXA, OCTALES, COMPLEJOS que veremos a continuacion.

Python soporta:

ENTEROS NORMALES (1234, -23,0)

ENTEROS LARGOS o LONG INTEGERS (9999999999999999999L)

PUNTO FLOTANTE (1.23, 3.14e-10, 4E210, 4.0e+210)

OCTAL Y HEXA (0177, 0x9ff, 0XFF)

NUMEROS COMPLEJOS (3+4j, 3.0+4.0j, 3J)

EXTENSIONES PROVISTAS PARA REALIZAR OPERACIONES

Python provee un set de herramientas para procesar los numeros y realizar operaciones.

Aquí podemos ver una tabla con los mas usados

Como lo mejor es ver las operaciones en accion abramos la ventana interactiva de python para

Como lo mejor es ver las operaciones en accion abramos la ventana interactiva de python para tipear algunos ejemplos.

OPERACIONES BASICAS Y VARIABLES

A pesar de lo flexible que es python hay algunas reglas que debemos respetar, si usamos una variable en una operación, esta debe tener asignado anteriormente algun valor, si no no podra realizar la operación

Por ejemplo si yo tipeo

a= c+ 5

y apreto ENTER

Como lo mejor es ver las operaciones en accion abramos la ventana interactiva de python para

Me dice el error, que la variable c no esta definida, y logicamente no le he asignado ningun valor antes de llegar a la operación por lo cual no puede realizarla.

Me dice el error, que la variable c no esta definida, y logicamente no le he

Ahora asigno por ejemplo c = 67 y luego si podra realizar la operación con dicha variable.

Realmente la variable c no existia en el programa, hasta que no le asigné un valor, en el mismo momento que le asigno un determinado valor comienza a existir y puede ser usada en operaciones.

Si vuelvo a asignar un nuevo valor a c se perdera el anterior

Me dice el error, que la variable c no esta definida, y logicamente no le he

Asignemos estos valores para los proximos ejemplo:

a = 3 b = 4

ahora tipeemos

>>> a+1, a-1

Me dice el error, que la variable c no esta definida, y logicamente no le he
y nos devuelve (4, 2) En el siguiente ejemplo, usando las mismas asignaciones anteriores de a

y nos devuelve (4, 2)

En el siguiente ejemplo, usando las mismas asignaciones anteriores de a y b, multiplica b por 3 y b lo divide por 2.

y nos devuelve (4, 2) En el siguiente ejemplo, usando las mismas asignaciones anteriores de a

En el siguiente ejemplo, suma 2.0 mas 4.0 y tambien 2.0 lo eleva a la 4

y nos devuelve (4, 2) En el siguiente ejemplo, usando las mismas asignaciones anteriores de a

Vemos que las posibilidades de operaciones numericas son muchas y en el caso de estos ejemplos, Python interpreta los resultado como TUPLAS, porque se los entregamos separados por comas, lo cual es la separacion para las partes que componen una TUPLA la cual veremos en detalle mas adelante.

Realmente no necesitamos declarar variables como en C, decirle al programa si dicha variable va a ser integer, long, string o algun tipo en especial, solo debemos asignarle un valor y con eso la variable esta en funcionamiento, inclusive una variable que tenia enteros por ejemplo, si la asignamos nuevamente, puede cambiar a string o otro tipo.

y nos devuelve (4, 2) En el siguiente ejemplo, usando las mismas asignaciones anteriores de a

Alli le asignamos a c el valor nueve y luego le asignamos la string pepe, y si vemos el valor que quedo asignado es el ultimo, la string pepe.

Hagamos otro ejemplo con las mismas asignaciones anteriores, aquí divide 4 / 2 y luego le suma 3, dano como resultado 5.

En el siguiente ejemplo, se ejecuta primero 2.0 + 3 porque esta entre parentesis y luego

En el siguiente ejemplo, se ejecuta primero 2.0 + 3 porque esta entre parentesis y luego realiza la division de b sobre lo anterior, y coloca el resultado como punto flotante con decimales, ya que siempre que algun miembro de una operación se expresa aomo punto flotante, el resultado lo obtendremos en punto flotante tambien.

En el siguiente ejemplo, se ejecuta primero 2.0 + 3 porque esta entre parentesis y luego

El comando print que trabaja redondeando lo que muestra, el resultado completo es:

En el siguiente ejemplo, se ejecuta primero 2.0 + 3 porque esta entre parentesis y luego

Realmente lo que se redondea es el resultado mostrado, porque la variable continua teniendo el valor completo, asi el programa puede seguir operando con valor preciso.

En el siguiente ejemplo, se ejecuta primero 2.0 + 3 porque esta entre parentesis y luego
En el siguiente ejemplo, se ejecuta primero 2.0 + 3 porque esta entre parentesis y luego

Si vemos el resultado de esta operacion

En el siguiente ejemplo, se ejecuta primero 2.0 + 3 porque esta entre parentesis y luego

al dividir por 3.0 la operación pasa a tener resultado de punto flotante y el resultado se asigna a la variable g.

al imprimirse

print g redondea a 0.333333333333 igual se mantiene el valor completo en la variable g para el uso del programa.

Lo mismo que expresamos sobre el punto flotante se cumple en la division. Si hicieramos 1 dividido 3, como ambos son enteros la operación se realiza como una division de enteros cuyo resultado muestra solo la parte entera del mismo, ahora como ya vimos si uno de los operadores esta expresado en forma de punto flotante, su resultado será mostrado como tal en punto flotante con decimales.

1er caso (division de enteros = resultado entero)

al imprimirse print g redondea a 0.333333333333 igual se mantiene el valor completo en la variable

2do caso (division con uno o mas miembros siendo punto flotante = resultado punto flotante)

al imprimirse print g redondea a 0.333333333333 igual se mantiene el valor completo en la variable

Existe ademas de la division comun representada por el simbolo / que vimos hasta ahora, una division especial que se representa con dos // y que a diferencia de la anterior, sea cual sea el tipo de numero utilizado en ambos miembros, sea entero o de punto flotante, siempre pone a cero los decimales.

al imprimirse print g redondea a 0.333333333333 igual se mantiene el valor completo en la variable

En el caso de dos enteros no cambia nada el resultado sera la parte entera del mismo.

al imprimirse print g redondea a 0.333333333333 igual se mantiene el valor completo en la variable

Ahora si uno de los numeros es de punto flotante, vemos que la division comun, muestra el resultado correcto con decimales, la otra division // pone a cero los decimales.

OPERACIONES CON BITS

SHIFT

OPERACIONES CON BITS SHIFT Podemos hacer shift de los bits de una variable, si asignamos a

Podemos hacer shift de los bits de una variable, si asignamos a x=1 que en binario es 0001

y luego hago shift 2 lugares hacia la izquierda

x << 2

movera los bits dos lugares hacia la izquierda dando 0100 que es 4

OPERACIONES CON BITS SHIFT Podemos hacer shift de los bits de una variable, si asignamos a

Podemos tambien realizar shift moviendo hacia a la derecha >> , tambien podemos hacer operaciones xor, and, not en la forma usual entre binarios.

OR

En este ejemplo realizamos la operación OR con el simbolo | que representan la operación.

x= 1 (0001 binario)

y=4 (0100 binario)

OPERACIONES CON BITS SHIFT Podemos hacer shift de los bits de una variable, si asignamos a

OR ( | ) operara bit a bit según su tabla de verdad y nos dara como resultado 5.

Donde A y B son los bits de una misma columna y X sera el resultado

Donde A y B son los bits de una misma columna y X sera el resultado

0001

0100

0101

Vemos que dara 0101 binario o sea 5 decimal

AND

Tambien existe la operación AND entre bits

Donde A y B son los bits de una misma columna y X sera el resultado

En este caso si hacemos AND (&) entre 1 y 4, el resultado sera cero

0001

0100

0000

escribimos en python

x & y

XOR

Donde A y B son los bits de una misma columna y X sera el resultado

Tambien existe la funcion OR EXCLUSIVA o XOR ( ^ )

En python se representa con el simbolo ^ En la parte siguiente completaremos el tema numeros

En python se representa con el simbolo ^

En python se representa con el simbolo ^ En la parte siguiente completaremos el tema numeros

En la parte siguiente completaremos el tema numeros y operaciones para no ir demasiado rapido y fijar bien los conocimientos.

Hasta la parte 4 Ricardo Narvaja

APRENDIENDO PYTHON DESDE CERO PARTE 4 ( mas numeros y operaciones)

LONG INTEGERS (enteros largos)

Los enteros largos son un poco exoticos, pero son numeros que pueden ser tan largos como memoria tengamos mientras que luego de escribirlos le coloquemos la letra L.

Veamos estos ejemplos en la ventana interactiva de python.

APRENDIENDO PYTHON DESDE CERO PARTE 4 ( mas numeros y operaciones) LONG INTEGERS (enteros largos) Los

Al hacer una operación siendo uno de los miembros un entero LONG, lo cual esta expresado por la L al final, el resultado sera un long tambien.

APRENDIENDO PYTHON DESDE CERO PARTE 4 ( mas numeros y operaciones) LONG INTEGERS (enteros largos) Los

Vemos que el resultado mientras que tengamos memoria, tratara de escribirse tan largo como se pueda.

En el ejemplo siguiente vemos que en las nuevas versiones de python (mayor que 2.2), si escribimos una operación que deberia dar overflow porque ninguno de los dos operadores es long, python convierte el resultado a long y lo muestra sin hacer overflow.

APRENDIENDO PYTHON DESDE CERO PARTE 4 ( mas numeros y operaciones) LONG INTEGERS (enteros largos) Los

NUMEROS COMPLEJOS

Python posee soporte para numeros complejos, para el que los utiliza, los mencionaremos por encima mostrando algunos ejemplos, sabemos que son dos partes una real ( la expresada con jota minuscula) y otra imaginaria (expresada con jota mayuscula)

APRENDIENDO PYTHON DESDE CERO PARTE 4 ( mas numeros y operaciones) LONG INTEGERS (enteros largos) Los
APRENDIENDO PYTHON DESDE CERO PARTE 4 ( mas numeros y operaciones) LONG INTEGERS (enteros largos) Los
APRENDIENDO PYTHON DESDE CERO PARTE 4 ( mas numeros y operaciones) LONG INTEGERS (enteros largos) Los

Alli hay tres ejemplos, realmente los numeros complejos se usan mas que nada en usos cientificos,

y raramente en uso comun, pero dejamos constancia de como se usan en python brevemente.

NOTACION HEXADECIMAL Y OCTAL

Ademas de la notacion decimal (base 10) que se utiliza normalmente, python puede expresar numeros en notacion hexadecimal (base 16) y octal(base 8 )

Los octales se representan comenzando en 0 por ejemplo

01, 010, 0100

corresponden a los decimales (1, 8 y 64)

y los hexadecimales se les agrega delante el prefijo 0x

0x01, 0x10, 0xFF

que corresponden a los decimales (1, 16, 255)

Creo que es parte de un manual de matematica y no de programacion en python, enseñar la forma de convertir de un tipo al otro y excede el objetivo este curso, pero veremos las funciones que tiene python predefinidas para hacerlo.

La funciones oct y hex permiten convertir decimales a octal y hexa respectivamente

y raramente en uso comun, pero dejamos constancia de como se usan en python brevemente. NOTACION

alli vemos que oct (64) transforma el decimal 64 en octal, y lo mismo hexa (64) transforma el decimal 64 en hexa.

La funcion opuesta para convertir a decimal de octal y de decimal a hexa es la funcion int

y raramente en uso comun, pero dejamos constancia de como se usan en python brevemente. NOTACION

Esta funcion de dos argumentos, el primero es el numero a convertir, y el segundo argumento, si es 8, convierte a octal, y si es 16 convierte a hexa, usando una sola funcion para ambos casos.

Según lo visto debemos tener cuidado siempre de no poner ceros delante de numeros decimales, por ejemplo si quiero escribir el decimal 10, no debo ponerle un cero delante pues 010, sera interpretado como el octal 8, asi que siempre que escriba un decimal debo cuidarme de nunca ponerle ceros delante en ningun caso.

OTRAS HERRAMIENTAS NUMERICAS

A diferencia de las funciones predefinidas como vimos en el caso de int, oct,hex, que se pueden utilizar sin importarlas de un modulo externo, hay funciones que para utilizarlas hay que importar algun modulo, en el cual estan definidas.

Por ejemplo si importamos el modulo math

Por ejemplo si importamos el modulo math Cuando escribimos el punto nos aparecen diferentes funciones que

Cuando escribimos el punto nos aparecen diferentes funciones que podemos utilizar de este modulo, por ejemplo

Por ejemplo si importamos el modulo math Cuando escribimos el punto nos aparecen diferentes funciones que

math.pi

Por ejemplo si importamos el modulo math Cuando escribimos el punto nos aparecen diferentes funciones que

Nos devuelve la constante pi, lo mismo trae incluidas mas constantes y funciones utiles que se pueden consultar en la documentacion del modulo.

Por ejemplo si importamos el modulo math Cuando escribimos el punto nos aparecen diferentes funciones que

Como habiamos visto el comando dir nos mostraba todas las posibles funciones y variables del modulo math, que podemos utilizar al importarlo.

Alli vemos por ejemplo la funcion sin (seno)

Por ejemplo si importamos el modulo math Cuando escribimos el punto nos aparecen diferentes funciones que

Bueno es muy facil darse cuenta por el nombre que hace cada funcion, aunque hay una forma mas

detallada de obtener informacion de las funciones incluidas en un modulo.

En este caso tipeemos

help (math)

el resultado es el siguiente

>>> help (math) Help on built-in module math:

NAME

math

FILE

(built-in)

DESCRIPTION This module is always available. It provides access to the mathematical functions defined by the C standard.

FUNCTIONS

acos(

...

)

acos(x)

Return the arc cosine (measured in radians) of x.

asin(

...

)

asin(x)

Return the arc sine (measured in radians) of x.

atan(

...

)

atan(x)

Return the arc tangent (measured in radians) of x.

atan2(

...

)

atan2(y, x)

Return the arc tangent (measured in radians) of y/x. Unlike atan(y/x), the signs of both x and y are considered.

ceil(

...

)

ceil(x)

Return the ceiling of x as a float. This is the smallest integral value >= x.

cos(

...

)

cos(x)

Return the cosine of x (measured in radians).

cosh(

...

)

cosh(x)

Return the hyperbolic cosine of x.

degrees( degrees(x) -> converts angle x from radians to degrees

...

)

exp(

...

)

exp(x)

Return e raised to the power of x.

fabs(

...

)

fabs(x)

Return the absolute value of the float x.

floor(

...

)

floor(x)

Return the floor of x as a float. This is the largest integral value <= x.

fmod(

...

)

fmod(x,y)

Return fmod(x, y), according to platform C. x % y may differ.

frexp(

...

)

frexp(x)

Return the mantissa and exponent of x, as pair (m, e).

m is a float and e is an int, such that x = m * 2.**e.

If x is 0, m and e are both 0.

Else 0.5 <= abs(m) < 1.0.

hypot(

...

)

hypot(x,y)

Return the Euclidean distance, sqrt(x*x + y*y).

ldexp( ldexp(x, i) -> x * (2**i)

...

)

log( log(x[, base]) -> the logarithm of x to the given base. If the base not specified, returns the natural logarithm (base e) of x.

...

)

log10(

...

)

log10(x) -> the base 10 logarithm of x.

modf(

...

)

modf(x)

Return the fractional and integer parts of x. Both results carry the sign of x. The integer part is returned as a real.

pow(

...

)

pow(x,y)

Return x**y (x to the power of y).

radians(

)

... radians(x) -> converts angle x from degrees to radians

sin(

...

)

sin(x)

Return the sine of x (measured in radians).

sinh(

...

)

sinh(x)

Return the hyperbolic sine of x.

sqrt(

...

)

sqrt(x)

Return the square root of x.

tan(

...

)

tan(x)

Return the tangent of x (measured in radians).

tanh(

...

)

tanh(x)

Return the hyperbolic tangent of x.

DATA e = 2.7182818284590451 pi = 3.1415926535897931

-----------------------------------------------------------------------------------------------------------------------

Como vemos nos da una descripcion mas detallada de las funciones y posibilidades del modulo, si

quisieramos solo info de una de ellas, la tipeamos dentro del parentesis.

Como vimos nos devuelve la info solo de asin y no de todo el modulo. Si

Como vimos nos devuelve la info solo de asin y no de todo el modulo.

Si escribimos

Nos sale la ayuda general

Como vimos nos devuelve la info solo de asin y no de todo el modulo. Si

Welcome to Python 2.4! This is the online help utility.

If this is your first time using Python, you should definitely check out the tutorial on the Internet at http://www.python.org/doc/tut/.

Enter the name of any module, keyword, or topic to get help on writing Python programs and using Python modules. To quit this help utility and return to the interpreter, just type "quit".

To get a list of available modules, keywords, or topics, type "modules", "keywords", or "topics". Each module also comes with a one-line summary of what it does; to list the modules whose summaries contain a given word such as "spam", type "modules spam".

You are now leaving help and returning to the Python interpreter. If you want to ask for help on a particular object directly from the interpreter, you can type "help(object)". Executing "help('string')" has the same effect as typing a particular string at the help> prompt. >>> help ()

Welcome to Python 2.4! This is the online help utility.

If this is your first time using Python, you should definitely check out the tutorial on the Internet at http://www.python.org/doc/tut/.

Enter the name of any module, keyword, or topic to get help on writing Python programs and using Python modules. To quit this help utility and return to the interpreter, just type "quit".

To get a list of available modules, keywords, or topics, type "modules", "keywords", or "topics". Each module also comes with a one-line summary of what it does; to list the modules whose summaries contain a given word

such as "spam", type "modules spam".

You are now leaving help and returning to the Python interpreter. If you want to ask for help on a particular object directly from the interpreter, you can type "help(object)". Executing "help('string')" has the same effect as typing a particular string at the help> prompt.

Y una ventana para tipear sobre que queremos ayuda

such as "spam", type "modules spam". You are now leaving help and returning to the Python

si pongo

such as "spam", type "modules spam". You are now leaving help and returning to the Python

Me muestra el mismo resultado que si tipeo help (math).

Bueno despacio terminamos de ver tipos de numeros y operaciones incluidas e importadas de otros modulos, en la parte siguiente comenzaremos a ver el siguiente tipo de objeto que son las strings.

Hasta la parte 5 Ricardo Narvaja

APRENDIENDO PYTHON DESDE CERO PARTE 5 ( Strings)

Sigo lentamente aprendiendo python, leyendo los libros que mencione en las partes anteriores, que me sirven de inspiracion y guia para seguir, con poco o nulo feedback de la lista, para saber si vamos bien o mal, pero bueno ya estamos acostumbrados a eso, asi que seguimos con la parte 5, tratando de aprender algo y escribirlo, por si a alguien le sirve.

En esta parte empezaremos con el manejo del siguiente tipo de objeto predefinido que son las Strings, y por supuesto para ellos abrimos el editor interactivo de python asi podemos tipear los ejemplos que veremos.

Ejemplos faciles:

STRING VACIA: las strings se escriben entre comillas dobles o simples, si no ponemos nada dentro de las comillas tenemos una string vacia.

APRENDIENDO PYTHON DESDE CERO PARTE 5 ( Strings) Sigo lentamente aprendiendo python, leyendo los libros que

DOBLE COMILLAS:Si necesitamos usar una comilla simple en una string, la cerramos entre doble comillas, las cuales seran consideradas las comillas que encierran la string, y la comilla simple interna, un carácter mas dentro de la misma.

APRENDIENDO PYTHON DESDE CERO PARTE 5 ( Strings) Sigo lentamente aprendiendo python, leyendo los libros que

TRIPLE COMILLAS: Sirve para que cuando dicha string se utilice en un print, se respete el formato como se escribio, al mostrarlo, por ejemplo.

APRENDIENDO PYTHON DESDE CERO PARTE 5 ( Strings) Sigo lentamente aprendiendo python, leyendo los libros que

Si hago print a

APRENDIENDO PYTHON DESDE CERO PARTE 5 ( Strings) Sigo lentamente aprendiendo python, leyendo los libros que

Veo que el formato que arme dentro del entrecomillado triple se mantiene.

Si lo hago en un script veo mas clara la diferencia

Si lo hago en un script veo mas clara la diferencia Al correrlo la ventana interactiva

Al correrlo la ventana interactiva me muestra la salida

Si lo hago en un script veo mas clara la diferencia Al correrlo la ventana interactiva

Si le cambio las comillas por simples

Si lo hago en un script veo mas clara la diferencia Al correrlo la ventana interactiva

Vemos que ni siquiera lo acepta pues toma a la variable a como una string que le faltan las comillas de cerrar la misma, asi que vemos claramente la diferencia entre ambas, print con comillas triples sirve para mostrar las cosas en cierto formato, de forma de no tener que lidiar con comandos de saltos de linea y demas.

RAW STRING : la traduccion de esto seria string cruda o sin refinar, las strings que delante de las mismas llevan una r minuscula, se toman como strings crudas, ignorando los caracteres especiales que puedan tener dentro.

Como ejemplo pensemos en un path de un archivo

\temp\narvaja

si lo quiero incluir en una string tendre el problema que \t y \n tienen significados especiales y no se imprimen si no que ejecutan ciertas acciones, veamos:

Vemos que no hallara nunca una fila en ese path, jeje, para que respete la string

Vemos que no hallara nunca una fila en ese path, jeje, para que respete la string y use los caracteres especiales como caracteres comunes, simplemente debemos ponerle un r adelante y convertirla en una raw string.

Vemos que no hallara nunca una fila en ese path, jeje, para que respete la string

De esta forma la string se utiliza en forma cruda y se imprime lo que esta dentro de las comillas, sin usar los caracteres especiales de salto de linea, etc que veremos mas adelante.

UNICODE STRING: De la misma forma si le agregamos una u delante la string es interpretada como que es una unicode string.

Vemos que no hallara nunca una fila en ese path, jeje, para que respete la string

Si la imprimimos se ve como una string comun pero el sistema la utilizara como UNICODE.

Vemos que no hallara nunca una fila en ese path, jeje, para que respete la string

CONCATENAR STRINGS: Ya habiamos visto este ejemplo

Vemos que no hallara nunca una fila en ese path, jeje, para que respete la string
Vemos que no hallara nunca una fila en ese path, jeje, para que respete la string

Vemos como concatenamos strings alli me falta intercalar un espacio

Vemos que no hallara nunca una fila en ese path, jeje, para que respete la string

Ahora si le agregue una string con un espacio vacio y me quedo mejor.

REPETIR STRINGS:

Usando la misma string del ejemplo anterior, al multiplicarla por cinco se repite cinco veces.

REPETIR STRINGS: Usando la misma string del ejemplo anterior, al multiplicarla por cinco se repite cinco

Veo que al repetir me falta tambien un espacio vacio para que quede bien.

REPETIR STRINGS: Usando la misma string del ejemplo anterior, al multiplicarla por cinco se repite cinco

Ahora si, le sume a s3 un espacio vacio, lo encerre entre parentesis, para que el cinco multiplique a todo el resultado ya que si no pusiera los parentesis la multiplicacion siempre se efectua antes que la suma en matematica y saldria mal.

Asi que podemos concatenar y repetir en una misma operación

Veamos otro ejemplo

REPETIR STRINGS: Usando la misma string del ejemplo anterior, al multiplicarla por cinco se repite cinco
REPETIR STRINGS: Usando la misma string del ejemplo anterior, al multiplicarla por cinco se repite cinco
REPETIR STRINGS: Usando la misma string del ejemplo anterior, al multiplicarla por cinco se repite cinco

Vemos que la flexibilidad para concatenar strings y repetirlas es en python una herramienta muy importante.

Alli al multiplicar por 20 repito veinte veces el mensaje anterior.

INDICE: Tomemos una string por ejemplo la del ejemplo siguiente

Alli al multiplicar por 20 repito veinte veces el mensaje anterior. INDICE : Tomemos una string

Si utizo un indice que comience en cero, entre corchetes para indicar la posicion dentro de la string.

Alli al multiplicar por 20 repito veinte veces el mensaje anterior. INDICE : Tomemos una string

Veo que f2[1] es la letra U y asi puedo elegir imprimirla.

Alli al multiplicar por 20 repito veinte veces el mensaje anterior. INDICE : Tomemos una string

Como la el indice comienza en cero, f2[0] sera la letra M.

INDICE SLICE O REBANADA: De la misma forma que el anterior si quiero imprimir solo MUN, por ejemplo tengo que usar un indice SLICE.

Alli al multiplicar por 20 repito veinte veces el mensaje anterior. INDICE : Tomemos una string

Es igual que el indice comun, solo que se indica desde donde hasta donde quiero ultilizar de la string sin incluir el ultimo indice, o sea

f2 [0:3] es igual a f2[0]+ f2[1]+f2[2] sin incluir el ultimo indice, si quiero una parte intermedia de la string.

Alli al multiplicar por 20 repito veinte veces el mensaje anterior. INDICE : Tomemos una string

Si omito alguno de los dos indices

Alli al multiplicar por 20 repito veinte veces el mensaje anterior. INDICE : Tomemos una string

Interpretara que el indice que falta es cero.

LARGO: la funcion len nos dara el largo de una string, usando la string del ejemplo anterior.

Podemos incluir el indice slice para saber el largo de una parte de una string, aunque

Podemos incluir el indice slice para saber el largo de una parte de una string, aunque es obvio que entre 2 y 5 hay 3 de largo.

Podemos incluir el indice slice para saber el largo de una parte de una string, aunque

FORMATO DE STRING: lo veremos con detalle mas adelante aquí algunos ejemplos

print "a %s parrot"

% 'dead'
% 'dead'

vemos que en la string anterior "a %s parrot" hay un %s dentro de forma que se reemplazara por una string que se coloque a continuacion como en este caso la palabra dead, sustituira a %s.

si copio en la ventana interactiva

Podemos incluir el indice slice para saber el largo de una parte de una string, aunque

vemos que como %s se reemplaza numero.

por la string dead, si fuera %d seria que se reemplaza por un

Podemos incluir el indice slice para saber el largo de una parte de una string, aunque

Luego veremos mas detalladamente lso tipos de formato que se pueden reemplazar en una string, esto es un ejemplo para que entiendan la idea.

%s se reemplaza por una string que esta a continuacion de la misma luego de un % %d se reemplaza por un numero que esta a continuacion de la misma luego de un %

y asi hay mas formatos que veremos mas adelante en detalle.

BUSCAR EN UNA STRING

FIND busca en una string si existen ciertos carcateres en la string f2='MUNDO FELIZ' si hago f2.find (`pa') me da –1, que significa que no la encuentra.

Podemos incluir el indice slice para saber el largo de una parte de una string, aunque

En cambio

Siempre que halla los caracteres que buscamos, me devuelve la posicion donde se encuentran, y que

Siempre que halla los caracteres que buscamos, me devuelve la posicion donde se encuentran, y que logicamente es diferente a -1. REEMPLAZAR:

REPLACE sustituye una parte de la string si existe por otra, por ejemplo en f2='MUNDO FELIZ'

Siempre que halla los caracteres que buscamos, me devuelve la posicion donde se encuentran, y que

vemos que solo es lo que se muestra si imprimimos f2 sigue siendo MUNDO FELIZ, para que cambie debemos asignarle el resultado a otra variable f1.

Siempre que halla los caracteres que buscamos, me devuelve la posicion donde se encuentran, y que

Ahora si f2 sigue siendo 'MUNDO FELIZ' y f1 es 'MUNDO ALEGRE'

SPLIT o SEPARAR: Usadndo SPLIT podemos dividir una string, en este caso le decimos que la divida en el lugar donde encuentre un espacio, por eso le pasamos como argumento espacio, si es una string larga separada muchas veces con comas, y le pasamos split y como argumento la coma la dividira cada vez que halle una coma y asi.

Siempre que halla los caracteres que buscamos, me devuelve la posicion donde se encuentran, y que

si separamos en la coma

Siempre que halla los caracteres que buscamos, me devuelve la posicion donde se encuentran, y que

Podemos separar en cualquier carácter, siempre que lo pasemos como argumento, en el caso siguiente separamos en las e.

ITERACION: se repite una operación, mientras el indice de una string recorre la misma, por ejemplo

ITERACION: se repite una operación, mientras el indice de una string recorre la misma, por ejemplo

ITERACION: se repite una operación, mientras el indice de una string recorre la misma, por ejemplo

Alli estamos la instrucción for es una iteracion y se repetira mientras x tome todos los valores de los caracteres de la string f2 que es 'MUNDO FELIZ', sera M la primera vez, luego U y asi, cada vez lo imprimira mediante el print x, hasta que se acaben los caracteres y ahi termina y sale del for.

Creo que hemos dado una primera aproximacion al tema strings, el cual continuaremos la parte siguiente, el resumen de lo que hemos visto hoy esta en esta imagen que copiamos del libro,

No crean que esto es todo en cuanto a strings es solo un pequeño comienzo de

No crean que esto es todo en cuanto a strings es solo un pequeño comienzo de lo poderoso que es el manejo de strings en PYTHON.

Hasta la parte 6 Ricardo Narvaja

APRENDIENDO PYTHON DESDE CERO PARTE 6 ( strings y secuencias de escape)

Ya vimos en la parte anterior, que la comilla simple y la comilla doble, sirven para lo mismo, y que realmente pueden utilizarse indistintamente y tambien para poder insertar el otro tipo de comilla dentro.

APRENDIENDO PYTHON DESDE CERO PARTE 6 ( strings y secuencias de escape) Ya vimos en la

Asi que si quiero usar una string que tiene una comilla simple, la encierro entre comillas dobles y viceversa, python reconocera las comillas externas, y tratara la interna como un carácter mas.

Otra caracteristica de la concatenacion de strings que no vimos, es la posibiilidad de poner una string al lado de la otra y la concatenara tambien.

APRENDIENDO PYTHON DESDE CERO PARTE 6 ( strings y secuencias de escape) Ya vimos en la

Normalmente se usa el +, pero se puede hacer de ambas formas.

APRENDIENDO PYTHON DESDE CERO PARTE 6 ( strings y secuencias de escape) Ya vimos en la

SECUENCIAS DE ESCAPE

Si colocamos dentro de una string una barra invertida \ , dependiendo del carácter siguiente se ejecutara una accion.

s = 'a\nb\tc'

si tenemos esta string y la imprimimos

APRENDIENDO PYTHON DESDE CERO PARTE 6 ( strings y secuencias de escape) Ya vimos en la

Vemos que el resultado fue:

a

b

c

Que ocurrio aquí? La barra invertida seguida de la letra n, es un salto a la linea siguiente, no se imprime, simplemente se interpreta como que queres seguir imprimendo en la siguiente linea, y la barra invertida seguida de la t, es una tabulacion por eso la c sale separada de la b.

Explicaremos ahora una por una las secuencias de escape

Anular barra siguiente:

Explicaremos ahora una por una las secuencias de escape Anular barra siguiente: Poner una barra invertida

Poner una barra invertida adelante de otra, \\ , lo que hace es deshabilitar la barra invertida que esta a continuacion, asi se interpreta como un carácter comun, o sea que si quiero anular el efecto de alguna barra invertida, poniendole otra delante, se anulara.

Explicaremos ahora una por una las secuencias de escape Anular barra siguiente: Poner una barra invertida

Alli vemos que queremos imprimir un path 'c:\pepe\new', pero la \n que se encuentra en el medio, se interpretara como un salto a la siguiente linea, la forma de hacerlo, es poner otra barra invertida delante de la \n asi ignora el salto y lo copiara como caracteres.

Explicaremos ahora una por una las secuencias de escape Anular barra siguiente: Poner una barra invertida

Ahora si, podiamos haber tambien agregado la r delante para hacer una string cruda como vimos en los capitulos anteriores.

Explicaremos ahora una por una las secuencias de escape Anular barra siguiente: Poner una barra invertida

Pero muchas veces no queremos anular la funcionalidad de TODAS las secuencias de escape que haya si no solo de algunas, para estos casos es conveniente usar la barra invertida agregada.

Explicaremos ahora una por una las secuencias de escape Anular barra siguiente: Poner una barra invertida

En este ejemplo queria imprimir los paths uno abajo del otro, y use el salto de linea \n que esta entre ambos paths, mientras que los otros dos saltos de linea que necesitaba que no se ejecuten, les agregue la barra invertida adicional.

Si hubiera hecho una string cruda se anularian los 3 saltos de linea y no lograria lo que quiero, poner los dos paths uno abajo del otro.

Anular comllla simple: Si colocamos una barra invertida seguida de la comilla simple, \' , por

Anular comllla simple:

Anular comllla simple: Si colocamos una barra invertida seguida de la comilla simple, \' , por

Si colocamos una barra invertida seguida de la comilla simple, \' , por ejemplo si quiero que alguna comilla se interprete como el carácter de comillas y se imprima asi, y no se use como comienzo de string le pongo delante una barra invertida y se imprimira como comilla.

Si quiero escribir en python por ejemplo

Anular comllla simple: Si colocamos una barra invertida seguida de la comilla simple, \' , por

python me da error porque la string se cierra en la comilla del medio, si a esta la anulo, agregandole una barra invertida delante.

Anular comllla simple: Si colocamos una barra invertida seguida de la comilla simple, \' , por

Vemos que el resultado es el predicho, la comilla intermedia se interpreto como carácter y las otras como el comienzo y final de la string.

Anular comillas dobles:

Anular comllla simple: Si colocamos una barra invertida seguida de la comilla simple, \' , por

Si colocamos una barra invertida seguida de la comilla doble, \” , es similar al anterior, hara que la comilla se imprima como tal y no funcione como comienzo o final de string.

Campana:

Anular comllla simple: Si colocamos una barra invertida seguida de la comilla simple, \' , por
Anular comllla simple: Si colocamos una barra invertida seguida de la comilla simple, \' , por

Si colocamos una barra invertida seguida de la letra a , \a , es un efecto de campana, si hacemos un script.

al correrlo desde linea de comandos veremos que antes de imprimir pepe, suena un aviso sonoro,

al correrlo desde linea de comandos veremos que antes de imprimir pepe, suena un aviso sonoro, dentro de la ventana interactiva solo se muestra como el carácter BEL, por lo poco usado.

Salto atras

al correrlo desde linea de comandos veremos que antes de imprimir pepe, suena un aviso sonoro,

Si colocamos una barra invertida seguida de la letra be, \b , significa realizar un espacio atrás, si realizamos este ejemplo

al correrlo desde linea de comandos veremos que antes de imprimir pepe, suena un aviso sonoro,

y lo corremos en una ventana de comandos

al correrlo desde linea de comandos veremos que antes de imprimir pepe, suena un aviso sonoro,

Vemos que realmente escribe pepe, luego corre el cursor tres lugares atrás, uno por cada \b, y luego escribe papa, por eso queda ppapa, ya que al retroceder el cursor y volver a escribir encima, borramos lo que habia alli.

En la ventana interactiva nos muestra lo que haria pero según como este configurada lo ejecuta o no, en este caso nos muestra BS que significa que haria BACKSPACE o salto atrás alli.

al correrlo desde linea de comandos veremos que antes de imprimir pepe, suena un aviso sonoro,

por default solo ejecuta los codigos importantes y como saltos de linea y tabulacion., el resto los muestra solamente.

Alimentacion de formulario

al correrlo desde linea de comandos veremos que antes de imprimir pepe, suena un aviso sonoro,

Es muy poco usado realmente pero es bueno conocerlo si colocamos la barra invertida delante de la letra efe, \f , es un comando que permite el avance de pagina a la impresora.

En la ventana interactiva lo muestra como FF, si lo ejecutaramos en un script, alli funcionaria

En la ventana interactiva lo muestra como FF, si lo ejecutaramos en un script, alli funcionaria perfectamente permitiendo avanzar el papel de la impresora, realmente muy poco usado hoy dia.

Salto de linea:

En la ventana interactiva lo muestra como FF, si lo ejecutaramos en un script, alli funcionaria

Uno de los mas importantes, si colocamos la barra invertida delante de la letra n, se produce un salto a la linea siguiente, como si al escribir apretamos la tecla enter.

En la ventana interactiva lo muestra como FF, si lo ejecutaramos en un script, alli funcionaria

Alli vemos en el ejemplo cada \n, me salta a la linea siguiente donde continua imprimiendo.

Retorno de carro:

En la ventana interactiva lo muestra como FF, si lo ejecutaramos en un script, alli funcionaria

La letra r luego de la barra invertida se interpretara como retorno de carro.

En la ventana interactiva lo muestra como FF, si lo ejecutaramos en un script, alli funcionaria

La diferencia con el salto de linea según el sistema esta en esta nota:

Tabulacion horizontal: Si coloco la barra invertida delante de la letra te , \t , se

Tabulacion horizontal:

Tabulacion horizontal: Si coloco la barra invertida delante de la letra te , \t , se

Si coloco la barra invertida delante de la letra te , \t , se ejecutara una tabulacion.

Tabulacion horizontal: Si coloco la barra invertida delante de la letra te , \t , se

Tabulacion vertical:

Tabulacion horizontal: Si coloco la barra invertida delante de la letra te , \t , se

si colocamos luego de la barra invertida la letra ve, \v , se ejecutara una tabulacion vertical, la ventana interactiva solo la muestra, no es de las mas importantes pero es bueno conocerla.

Valor hexadecimal y octal: Si coloco la barra invertida y luego la letra equis, \x ,

Valor hexadecimal y octal:

Valor hexadecimal y octal: Si coloco la barra invertida y luego la letra equis, \x ,

Si coloco la barra invertida y luego la letra equis, \x , interpretara que lo que hay a continuacion es un valor hexa

Valor hexadecimal y octal: Si coloco la barra invertida y luego la letra equis, \x ,

Si hago un print del mismo, imprimira el caracter ASC correpondiente a dicho valor hexa.

Aquí tenemos la tablita de las correspondencias entre DECIMAL, HEXADECIMAL, OCTAL y el caracter que se imprime.

Como vemos el hexadecimal 41 corresponde a la A, por eso se imprimio en el ultimo

Como vemos el hexadecimal 41 corresponde a la A, por eso se imprimio en el ultimo ejemplo la misma.

Como vemos el hexadecimal 41 corresponde a la A, por eso se imprimio en el ultimo

Si quiero imprimir la A pero usando numeros octales, en la misma linea veo que corresponde al 101, veamos que pasa.

Como vemos el hexadecimal 41 corresponde a la A, por eso se imprimio en el ultimo

El octal se puede ingresar directamente luego de la barra invertida y en este caso el octal 101, corresponde al carácter A.

Bueno con esto ya conocemos los carecteres de escape mas conocidos, algunos nos serviran otros

nos molestaran, y sabemos como anularlos, poniendoles una barra invertida mas delante, si no queremos que se ejecuten, normalmente al usar paths que tienen la barra invertida incluida, tendremos el problema de que al intentar abrir un archivo que se encuentra por ejemplo en

c:\windows

nos molestaran, y sabemos como anularlos, poniendoles una barra invertida mas delante, si no queremos que

\files

no funciona, y es que \f es un carácter especial de escape, y hay que ponerle otra barra delante para que no se ejecute y se reconozca e imprima como \f.

nos molestaran, y sabemos como anularlos, poniendoles una barra invertida mas delante, si no queremos que

al agregarle la segunda barra anulamos el \f

nos molestaran, y sabemos como anularlos, poniendoles una barra invertida mas delante, si no queremos que

es muy importante entender bien esto para evitar problemas al tratar de ejecutar archivos y manejar strings de paths, que tengan las secuencias de escape que acabamos de estudiar.

Hasta la parte 7 Ricardo Narvaja

APRENDIENDO PYTHON DESDE CERO PARTE 7 ( strings en accion )

Esta parte sera de ejemplos y usos de las strings, algunos ya los hemos visto y practicaremos, otros los aprenderemos a medida que los vamos viendo, para que queden bien claros.

Abrimos la ventana interactiva de python.

>>> a= 'Estamos practicando strings' >>> print a Estamos practicando strings >>> len (a)

27

En este ejemplito asignamos la string a la variable a, luego la imprimimos y luego le hallamos el largo, en los ejemplos siguientes utilizaremos las strings que ya estan asignadas como en este caso la variable a, asi que no cierren la ventana interactiva, sino se perderan las asignaciones y cambios que le vayamos haciendo a las variables.

Asi que tenemos una string almacenada en la variable a, de 27 caracteres de largo, si a b le asignamos a*2, deberia quedar en b con el doble de largo.

APRENDIENDO PYTHON DESDE CERO PARTE 7 ( strings en accion ) Esta parte sera de ejemplos

Jeje, y si era muy facil, jeje.

A veces repetir una string, parece algo trivial, pero pensemos el siguiente ejemplo, quiero imprimir una linea horizontal.

>>> print '

'

____________________________________________________________

es bastante fastidioso, repetir tantas veces una tecla, para hacer una linea, mas facil es

>>> print '_' * 80

en este caso de largo 80, y si nos quedo larga, podemos cambiar el numero facilmente hasta que se adapte al tamaño deseado.

Ya vimos que podemos hacer una iteracion para imprimir las letras de una string. Este es

Ya vimos que podemos hacer una iteracion para imprimir las letras de una string.

Ya vimos que podemos hacer una iteracion para imprimir las letras de una string. Este es

Este es un bucle que crea una variable x, que recorrera las letras que tiene a, y las imprime una a una, la coma que hay despues del print evita que salte a otro renglon, luego de imprimir cada letra, si le quito la coma.

Ya vimos que podemos hacer una iteracion para imprimir las letras de una string. Este es

Cada vez que imprime un carácter, salta a la linea siguiente:.

Ya vimos que podemos hacer una iteracion para imprimir las letras de una string. Este es

Si asigno a la variable dias el valor 30, y en la string siguiente hago un format string con formato decimal, se reemplazara el %d, por el valor que tenga la variable dias en ese momento, siempre que sea numerico, ya que %d pide un numero.

Otra forma de buscar caracteres o partes de una string, es la siguiente ya vimos el comando find, pero existe otra forma.

En este ejemplo pregunto sil a string ''zip' esta o no, dentro de 'pepe.zip', como la

En este ejemplo pregunto sil a string ''zip' esta o no, dentro de 'pepe.zip', como la halla, me devuelve True o sea que es verdad que esta incluida, en la segunda parte, pregunta si doc esta dentro de pepe.zip y como no esta devuelve False o falso.

Aunque todavia no estudiamos los for y los if, les muestro un ejemplo que es facilmente entendible.

Primero asigno a la variable a= 'pepe.zip'

y luego hago

En este ejemplo pregunto sil a string ''zip' esta o no, dentro de 'pepe.zip', como la

es una especie de detector si en el nombre de una archivo esta incluida la palabra zip, si la halla, imprime 'archivo zipeado', si no la encuentra imprime 'archivo no zipeado', si cambio la string que hay en a y pongo una que no tenga incluida la string zip, y luego ejecuto el if, me dira archivo no zipeado.

Aunque no hemos visto aun como deben construirse los if, aquí hay algo que nos daremos cuenta facilmente.

En este ejemplo pregunto sil a string ''zip' esta o no, dentro de 'pepe.zip', como la

Ahi vemos lo que en python se llama indentacion, o sangria, como python es un lenguaje que no usa llaves }} para determinar como en este caso el formato de los if, si entraste o no en un nivel interno del mismo, se realiza el mismo trabajo mediante la llamada indentacion, al escribir el if y apretar ENTER.

Vemos que el cursor se coloca automaticamente como si hubieramos tabulado, para que respetemos la indentacion,

Vemos que el cursor se coloca automaticamente como si hubieramos tabulado, para que respetemos la indentacion, porque lo que vamos a tipear, solo se ejecuta si la condicion del if es valida, si no sigue al else:

ya explicaremos el tema de la indentacion mas adelante, pero es bueno ver que si corro el cursor de donde me sugiere.

Vemos que el cursor se coloca automaticamente como si hubieramos tabulado, para que respetemos la indentacion,

El error me dice, que en la segunda linea esta esperando un indented block, o sea que nos olvidamos de dejar el tabulado necesario alli, la indentacion esta incorrecta.

Algunos ejemplos de indices y slices que vimos en las partes anteriores.

Vemos que el cursor se coloca automaticamente como si hubieramos tabulado, para que respetemos la indentacion,

Creo que esto quedo suficientemente claro, lo unico que nos habia quedado en el tintero es que un indice negativo cuenta de atrás de la string para adelante, o sea que si tengo una string a='navidades' por ejemplo.

Vemos que el cursor se coloca automaticamente como si hubieramos tabulado, para que respetemos la indentacion,

En el caso de que usemos numeros negativos, el primero de atrás hacia adelante es la 's' el -1, luego la 'e' el -2 y asi consecutivamente.

O sea si usamos indices positivos :

Y si usamos indices negativos: CONVERSION DE STRINGS Hemos visto que podemos que concatenar strigs,pero no

Y si usamos indices negativos:

CONVERSION DE STRINGS

Y si usamos indices negativos: CONVERSION DE STRINGS Hemos visto que podemos que concatenar strigs,pero no

Hemos visto que podemos que concatenar strigs,pero no podemos concatenar strings con enteros (recordar que para ello existen los format strings)

Si por ejemplo quiero concatenar la string pepe con el numero 1, salta el error que me dice claramente que no puedo concatenar strings con integers.

Y si usamos indices negativos: CONVERSION DE STRINGS Hemos visto que podemos que concatenar strigs,pero no

La forma correcta con un format string es:

Y si usamos indices negativos: CONVERSION DE STRINGS Hemos visto que podemos que concatenar strigs,pero no

Haciendolo con format string no hay problema, reemplezara %d, por el numero 1.

Tambien se puede usar la funcion str para convertir el numero concatenarlo facilmente

1

en

la string

'1' asi podemos

Y si usamos indices negativos: CONVERSION DE STRINGS Hemos visto que podemos que concatenar strigs,pero no

str convierte el numero entre parantesis a la string correspondiente

Luego que esta convertido a string podremos concatenarlo, repetirlo y aplicarle cualquier operación como a una
Luego que esta convertido a string podremos concatenarlo, repetirlo y aplicarle cualquier operación como a una

Luego que esta convertido a string podremos concatenarlo, repetirlo y aplicarle cualquier operación como a una string mas.

La operación opuesta es la que convierte una string de numeros al numero correspondiente

int ('42')

Luego que esta convertido a string podremos concatenarlo, repetirlo y aplicarle cualquier operación como a una

De esta forma puedo transformar una string de numeros, al numero correspondiente y hacer operaciones como si fuera un numero mas.

Luego que esta convertido a string podremos concatenarlo, repetirlo y aplicarle cualquier operación como a una

En este ejemplo, la funcion int convierte la string 42 en el numero 42, al cual luego le sumamos 89.

Existe tambien una operación para convertir strings que representan numeros de punto flotante o sea con coma.

Luego que esta convertido a string podremos concatenarlo, repetirlo y aplicarle cualquier operación como a una

Dicha operación es float, en este caso convierte la string '1.5', al numero correspondiente el cual despues podemos realizarle las operaciones como a cualquier numero.

Luego que esta convertido a string podremos concatenarlo, repetirlo y aplicarle cualquier operación como a una

Alli float convierte la string '1.5' al numero 1.5 al cual le sumamos luego el numero 89

CAMBIANDO STRINGS

Una limitacion del lenguale python es que puede leer de una string un determinado indice, pero dara error al tratar de asignarle un valor diferente al mismo, la misma string es inmutable, al asignarle nuevos valores por medio de indices.

Probemos esto:

Probemos esto: Tenemos en la variable a, asignada la string navidades, si vemos a [0] es

Tenemos en la variable a, asignada la string navidades, si vemos a [0] es la n, si queremos asignarle otro carácter me da error dice que este objeto no soporta este tipo de asignacion.

Probemos esto: Tenemos en la variable a, asignada la string navidades, si vemos a [0] es

Pero si lo hacemos asignandolo a una nueva variable b, donde construimos una nueva string, podemos armar la que queremos, primero ponemos la u que queriamos asignar, y luego de tomamos de a, usando indices, toda la string menos el primer carácter, al sumarlo obtenemos el mismo resultado, una string que tiene la u en vez de la a inicial.

EJEMPLOS DE FORMAT STRING

Asigno a la variable llamada de, la siguiente string

>>> de='UUUUUUUUUUUUY'

al tipear

>>> a= 'Al ver la factura telefonica exclamo %s que barbaridad'% de

y imprimir a o al ver su contenido

Probemos esto: Tenemos en la variable a, asignada la string navidades, si vemos a [0] es

Vemos que el format string reemplazo el %s por el contenido de la variable de, que tiene que ser una string, ya que %s se utiliza para reemplazar por strings solamente.

Se pueden combinar diferentes format strings en la misma instrucción:

a= 'Al ver la factura telefonica exclamo %s que barbaridad me cobraron %d pesos ' %(de,500)

aquí dentro de la string hay un %s y un %d, por lo que al final de la misma, debere poner entre parantesis, las entradas que deben respetar el orden como en este caso, la primera es una string, y la

segunda el numero 500, si cambio el orden que espera en este caso (string, numero) dara un miserable error jeje, pero mientras le vayamos pasando en el formato correcto y en el orden correcto, no hay problema.

segunda el numero 500, si cambio el orden que espera en este caso (string, numero) dara

En el siguiente ejemplo tenemos 3 entradas en el format string

"%d %s %d you" % (1, 'spam', 4)

segunda el numero 500, si cambio el orden que espera en este caso (string, numero) dara

Siempre dbemos mirar cual es la string en este caso

"%d %s %d you"

y ir reemplazando una a una para ver que quedaria, el primer %d lo reemplazo por el primer numero dentro del parentesis, en este caso 1.

“ 1 %s %d you"

luego hay un %s, lo reemplazo por la string que debe estar a continuacion dentro del parentesis.

"1 spam %d you"

luego nos queda el tercero, lo reemplazamos por el tercer numero del paremtesis

"1 spam 4 you"

Asi obtenemos el resultado, creo que se entiende.

En la parte 8 seguiremos con mas sobre strings, practicando y aprendiendo.

Hasta la parte 8 Ricardo Narvaja

APRENDIENDO PYTHON DESDE CERO PARTE 8 ( format strings avanzado )

Para el manejo avanzado de format strings podemos usar los codigos de la tablita siguiente, los que explicaremos a continuacion con ejemplos para que se comprenda.

APRENDIENDO PYTHON DESDE CERO PARTE 8 ( format strings avanzado ) Para el manejo avanzado de

Antes que nada es bueno saber que a diferencia del lenguaje C, en python no se imprime y asigna directamente con format string, si no quedebemos realizar una asignacion o sea

b= 'la sandia vale %d pesos ' % 100

APRENDIENDO PYTHON DESDE CERO PARTE 8 ( format strings avanzado ) Para el manejo avanzado de

es valida y si luego quiero imprimir b lo podre hacer en el siguiente paso

Lo que no esta permitido es realizar el format string y la asignacion dentro del mismo

Lo que no esta permitido es realizar el format string y la asignacion dentro del mismo print en un solo paso.

Lo que no esta permitido es realizar el format string y la asignacion dentro del mismo

Por lo tanto, si hay una asignacion, luego de realizada esta, se puede en un siguiente paso imprimir el resultado.

Vamos otros ejemplos:

si asigno precio=1234

y hago un format string decimal

a='este objeto vale %d' % precio

Lo que no esta permitido es realizar el format string y la asignacion dentro del mismo

Ahora si delante de la 'd' le ponemos un numero con un guion medio delante, aqui -6 no significa numero negativo, el guion medio (-) es el comando de justificacion izquierda, o sea que en este caso, significa que al reemplazarlo, lo hara, pero antes creara un espacio vacio de 6 lugares a partir de la izquierda, de la ubicación normal que tendria.

Lo que no esta permitido es realizar el format string y la asignacion dentro del mismo

a='este objeto vale %-6d' % precio

'este objeto vale

1234 '
1234
'

Ahi vemos que luego de 1234 quedaron dos espacios vacios antes de la comilla final.

Lo que no esta permitido es realizar el format string y la asignacion dentro del mismo

Alli vemos que reemplazo como antes por 1234, pero separo antes 6 lugares desde la izquierda del

lugar donde estaria ubicado normalmente, uso 4 caracteres y quedaron 2 vacios de los 6 reservados.

lugar donde estaria ubicado normalmente, uso 4 caracteres y quedaron 2 vacios de los 6 reservados.

Alli vemos en verde la zona que separo de 6 lugares desde la izquierda, como 1234, tiene solo cuatro caracteres, quedan dos lugares vacios al final antes de la comilla.

Si en vez de 6 pusiera 20, el lugar vacio seria mayor.

lugar donde estaria ubicado normalmente, uso 4 caracteres y quedaron 2 vacios de los 6 reservados.

Alli vemos en verde la zona que preparo de 20 lugares vacios para escribir, y como ocupa solo los primeros 4 caracteres de esos 20, quedaran 16 lugares vacios antes de la comilla final.

Otro comando curioso seria si en el ejemplo anterior en vez de usar el guion usamos un cero.

lugar donde estaria ubicado normalmente, uso 4 caracteres y quedaron 2 vacios de los 6 reservados.

Vemos que en este caso separa los 20 lugares, los cuales llena con ceros delante, y al final coloca el valor que reemplaza jeje.

O sea que hasta ahora vimos dos comandos el guion (-) que significa justificacion izquierda y el cero delante (0) que significa zero padding o llenar con ceros delante.

Vemos que hay tres tipos de format string para punto flotante, %e, %f y %g, veamos los ejemplos.

lugar donde estaria ubicado normalmente, uso 4 caracteres y quedaron 2 vacios de los 6 reservados.

Vemos que muestra el punto flotante en el formato 1.234568

e+000
e+000

con exponencial en base e, el

que sabe de matematica sabe que en este caso el numero 'e', elevado a la 0, es igual a 1, asi que el

valor final es el mismo.

En numeros mas grandes

El resultado es 2.222222 e+055, realmente no haremos un curso de matematica aquí, pero es notacion

El resultado es 2.222222 e+055, realmente no haremos un curso de matematica aquí, pero es notacion exponencial en base ' e ' ,que en cualquier libro de matematica, se puede profundizar.

Si cambiamos a %f el mismo ejemplo

El resultado es 2.222222 e+055, realmente no haremos un curso de matematica aquí, pero es notacion

Vemos que se muestra en formato de punto flotante comun y por ultimo %g muestra en punto flotante,pero redondeando el resultado.

El resultado es 2.222222 e+055, realmente no haremos un curso de matematica aquí, pero es notacion
El resultado es 2.222222 e+055, realmente no haremos un curso de matematica aquí, pero es notacion

Tambien aceptan en los format strings de punto flotante, la justificacion izquierda con el guion (-)

El resultado es 2.222222 e+055, realmente no haremos un curso de matematica aquí, pero es notacion

Vemos dos ejemplos, en el primer caso se reservan 9 lugares y como el numero de punto flotante tiene 8 caracteres, queda un solo espacio vacio antes de la comilla final, en el ejemplo de abajo como reserve 20 lugares, quedan luego de llenar con los 8 caracteres, 12 lugares vacios antes de la comilla final.

Otro caso ocurre al poner un numero por ejemplo 0.2 en el formato, lo que hacemos es decidir cuantos lugares despues del punto se mostraran, en este caso, el numero 0.2, lo que hace es que se muestren solo dos decimales del numero de punto flotante.

Vemos que solo utiliza 1. 23 o sea dos lugares despues del punto. En el ejemplo

Vemos que solo utiliza 1.23 o sea dos lugares despues del punto.

Vemos que solo utiliza 1. 23 o sea dos lugares despues del punto. En el ejemplo

En el ejemplo anterior, mostrara 9 decimales, al poner 0,9 en el formato.

Vemos que solo utiliza 1. 23 o sea dos lugares despues del punto. En el ejemplo

En este combinamos que se muestren solo 2 decimales al poner 05.2 y el 05 hace que se llenen con ceros delante hasta completar cinco caracteres en total usando el cero como padding, jejeeje.

Vemos que combinando las tecnicas de justificacion izquierda (-), el zero padding o relleno de ceros (0) y la cantidad de decimales (0,5) por ejemplo para cinco decimales, podemos hacer muchos desastres je.

En este ejemplo combinamos todo, en el primero justificacion izquierda de 30 lugares y 5 decimales y en el segundo reservo tambien 30 lugares llenando con ceros los que estan delante y 5 decimales tambien.

Vemos que solo utiliza 1. 23 o sea dos lugares despues del punto. En el ejemplo

Es bueno repasar bien estos ejemplos y entenderlos bien, por eso yo voy despacito marcando bien cada paso.

Vemos que solo utiliza 1. 23 o sea dos lugares despues del punto. En el ejemplo

Aquí vemos la forma sencilla que ya conocemos reemplazando el primer %d por el decimal 1, y el %s por la string 'spam'

Otra forma de hacer lo mismo aunque un poco mas compleja, es la siguiente:

la string es '%(v)d %(t)s' all hay dos indices v y d que se reempazan los

la string es

'%(v)d %(t)s'

all hay dos indices v y d que se reempazan los valores en la llave que esta a continuacion de la string.

Mas adelante veremos que el objeto entre llaves se denomina diccionario, y lo aplicaremos en ejemplos en su momento.

Otros de los ejemplos de la tablita que nos faltan:

la string es '%(v)d %(t)s' all hay dos indices v y d que se reempazan los

Al utilizar %c, reemplaza por el carácter correspondiente al valor ASCII, que colocamos,

la string es '%(v)d %(t)s' all hay dos indices v y d que se reempazan los

Los que no tienen carácter se reemplazan por la representacion correspondiente, hexadecimal 14, o

sea '\x14'.

sea '\x14'. %d es decimal y %i es entero, %u unsigned integer, no hay diferencias, en
sea '\x14'. %d es decimal y %i es entero, %u unsigned integer, no hay diferencias, en

%d es decimal y %i es entero,%u unsigned integer, no hay diferencias, en los ejemplos siguientes se ve que es indistinto, aunque el que mas se usa es el %d.

sea '\x14'. %d es decimal y %i es entero, %u unsigned integer, no hay diferencias, en
sea '\x14'. %d es decimal y %i es entero, %u unsigned integer, no hay diferencias, en

Si es %x lo pasara a hexadecimal al reemplazar.

sea '\x14'. %d es decimal y %i es entero, %u unsigned integer, no hay diferencias, en
sea '\x14'. %d es decimal y %i es entero, %u unsigned integer, no hay diferencias, en

Bueno creo que con esto ya conocemos bastante del tema de format string que luego lo utilizaremos

al programar, al menos hemos visto la mayor parte de los ejemplos sobre el tema y podemos entender que es lo que significa una string con formato y como manejarlas, punto y aparte al tema siguiente.

'Hasta la parte %d' % 9

Ricardo Narvaja

PD:jejeje

EJERCICIOS HASTA LA PARTE 8

Ejercicio 1)

sean las variables

c='pesos'

a=67.873

b=-65432.86

d='euros'

crear una string con formato para cada caso siguiente, de forma que cuando la imprima la salida sea

a)'si me das vuelto me quedaran 67 pesos' b)'si me das vuelto me quedaran 67.9 pesos' c)'si me das vuelto me quedaran 68 pesos' d)'si me das vuelto me quedaran 6.79e+001 pesos' e)'si me das vuelto me quedaran 6.79e+001

euros'

f)'si me das vuelto me quedaran 000000000006.79e+001 euros'

g)'si me das vuelto me quedaran -65364.987000 euros'

----------------------------------------------------------------------------------------------------------

Ejercicio 2) sea la variable a='56743' y b='67893'

Crear un script que testee si el primer caracter es un 5 y si es asi imprima CORRECTO si no es cinco imprima INCORRECTO.

probar el script con a y b, y debe decir CORRECTO e INCORRECTO cuando corresponda.

----------------------------------------------------------------------------------------------------------

Ejercicio 3):

Igual que el ejercicio anterior, pero debe imprimir el valor de la variable 'a' o 'b', que se esta chequeando tanto si es correcto como si no lo es.

----------------------------------------------------------------------------------------------------------

Ejercicio 4) :

Igual que el ejercicio anterior, pero debe imprimir el valor del primer caracter solamente de la variable 'a' o 'b' que se esta chequeando tanto si es correcto como si no lo es.

Ricnar

APRENDIENDO PYTHON DESDE CERO PARTE 9 ( strings-metodos)

Los metodos son simples funciones que se asocian a un determinado tipo de objeto como en este caso las strings. Los metodos para las strings, funcionan solo para strings logicamente, si los queremos aplicar a otro tipo de objetos no funcionaran. Estos metodos estan preincluidos en python asi que no es necesario importar nada, y realizan funciones un poco mas complejas, los veremos a continuacion:

Abramos la ventana interactiva:

Si asigno una string a la variable a

>>> a='japones'

cuando en la siguiente linea tipeo a y a continuacion el punto me aparece una ventana con opciones.

APRENDIENDO PYTHON DESDE CERO PARTE 9 ( strings-metodos) Los metodos son simples funciones que se asocian

Si recorro las opciones, veo los metodos, que ya trae incluidos python, para aplicar a una string, por ejemplo cuando aparece replace, apreto TAB.

APRENDIENDO PYTHON DESDE CERO PARTE 9 ( strings-metodos) Los metodos son simples funciones que se asocian

Vemos que el metodo replace, lo que hizo fue reemplazar 'ja' por 'pi'

APRENDIENDO PYTHON DESDE CERO PARTE 9 ( strings-metodos) Los metodos son simples funciones que se asocian

En a sigue estando 'japones', si quiero reemplazarlo definitivamente, debere asignarlo a otra variable, en este caso b.

Ahora b contiene 'pipones' y a contiene 'japones'

Aquí estan los metodos que trae incluidos python, en una lista luego los explicaremos.

En este tute, me ayuda mas y quizas es muy util que a la larga comencemoshttp://ricardonarvaja.info/WEB/OTROS/HERRAMIENTAS/V-W-X-Y- Z/Wing%20Ide%20Professional%202.0.4-1%20With%20Keygen%20En.rar alli esta con keygen y todo y se adjunta un tute de absolom porque activarlo es medio dificultoso por no decir un dolor de huevos, jejeje. Abro el WING ya activado, el mismo tiene una pestaña que es similar a la ventana interactiva de pythonwin llamada PYTHON SHELL, alli podremos tipear comandos sueltos, igual que en la ventana interactiva de pythonwin, quizas no es tan poderoso como la ventana interactiva de pythonwin, porque el poder del WING realmente se encuentra en su editor de scripts, que es el que mas ayuda a hacer programas de los que conozco, por eso es que lo utilizaremos a partir de ahora, porque ya cada vez utilizaremos menos la ventana interactiva, y mas la edicion de scripts. " id="pdf-obj-87-2" src="pdf-obj-87-2.jpg">

En este tute, me ayuda mas y quizas es muy util que a la larga comencemos a usar un IDE un poco mas avanzado, no quiere decir que lo que se haga en un IDE, no se pueda hacer en otro, pero las ayudas que da usar un IDE mejor ya se empiezan a poner en evidencia aquí, y es bueno verlas, el IDE de activepython ayuda un poco, pero no mucho,sobre todo cuando haces scripts, en cambio el IDE que les voy a mostrar, ayuda muchisimo mas, sobre todo al programar scripts complejos.

alli esta con keygen y todo y se adjunta un tute de absolom porque activarlo es medio dificultoso por no decir un dolor de huevos, jejeje.

Abro el WING ya activado, el mismo tiene una pestaña que es similar a la ventana interactiva de pythonwin llamada PYTHON SHELL, alli podremos tipear comandos sueltos, igual que en la ventana interactiva de pythonwin, quizas no es tan poderoso como la ventana interactiva de pythonwin, porque el poder del WING realmente se encuentra en su editor de scripts, que es el que mas ayuda a hacer programas de los que conozco, por eso es que lo utilizaremos a partir de ahora, porque ya cada vez utilizaremos menos la ventana interactiva, y mas la edicion de scripts.

Ahora comenzaremos a ver algunas ventajas que tiene la edicion de scripts en wing con respecto

Ahora comenzaremos a ver algunas ventajas que tiene la edicion de scripts en wing con respecto a otros editores.

Ahora comenzaremos a ver algunas ventajas que tiene la edicion de scripts en wing con respecto

Vemos que si creo un script vacio y solo apreto la a, me sale una lista de los comandos que python tiene incluidos que empiezan con a, y a la derecha si pongo en la pestaña SOURCE ASSISTENT, una explicacion de lo que hace cada uno, jeje, muchisima ayuda, en este caso como solo es la variable a, no hay que elegir nada sigo de largo escribiendo a=

Cuando termino de escrbir la variable a en la informacion me aparece que es una variable

Cuando termino de escrbir la variable a en la informacion me aparece

Cuando termino de escrbir la variable a en la informacion me aparece que es una variable

que es una variable string, y si cambio a la pestaña SOURCE BROWSER vere las variables que se van creando.

Cuando termino de escrbir la variable a en la informacion me aparece que es una variable

Volvamos al asistente SOURCE ASSISTANT.

Vemos que al igual que en el otro IDE me aparecen la lista de metodos para

Vemos que al igual que en el otro IDE me aparecen la lista de metodos para las strings, alli esta capitalize, pero al estar resaltado ya me aparece, el significado del metodo y como funciona.

Vemos que al igual que en el otro IDE me aparecen la lista de metodos para

Alli dice que el metodo capitalize, retorna una copia de la string, con la primera letra cambiada a mayuscula. Ademas me dice que se aplica a una string y que se debe escribir sin argumentos o sea con () al final.

Con toda esa ayuda no necesito mas nada ya me dijo todo jeje.

Vemos que al igual que en el otro IDE me aparecen la lista de metodos para

Ahora imprimiremos la variable b

Al solo escribir la p me aparece la ayuda puedo elegir print y TAB o hacer

Al solo

escribir la p me aparece la ayuda puedo elegir

print y TAB

o hacer

doble

click y

se

selecciona.

Tambien en el menu de autocompletar me salen las variables que cree, aparece la b, la cual elijo.

Al solo escribir la p me aparece la ayuda puedo elegir print y TAB o hacer
Al solo escribir la p me aparece la ayuda puedo elegir print y TAB o hacer

Le agregue el RAW_INPUT al final y guardo con algun nombre en el menu FILE-SAVE AS.

Alli en el menu DEBUG, esta la opcion para ejecutar el script. Alli vemos la salida

Alli en el menu DEBUG, esta la opcion para ejecutar el script.

Alli en el menu DEBUG, esta la opcion para ejecutar el script. Alli vemos la salida

Alli vemos la salida que es la string 'Japones', a la cual le fue cambiada la letra inicial a mayuscula, gracias al metodo capitalize, si queremos tracear este script.

Si quiero tracearlo apretando f7 que es STEP INTO me aparece un menu por si quiero cambiar algunas opciones se menu tiene una tilde que me da a elegir si no quiero que aparezca mas cada vez que corro el mismo script, la cambio y directamente acepto la ventana con OK y a tracear.

Alli estamos en la primera linea, al pasar a la segunda con f7, vemos abajo en

Alli estamos en la primera linea, al pasar a la segunda con f7, vemos abajo en la pestaña stack data los valores que van tomando las variables.

Alli estamos en la primera linea, al pasar a la segunda con f7, vemos abajo en

Tambien si hacemos click derecho en el nombre de la variable, nos mostrara donde se le asigno el valor resaltandolo.

Alli estamos en la primera linea, al pasar a la segunda con f7, vemos abajo en
Alli estamos en la primera linea, al pasar a la segunda con f7, vemos abajo en

Apretamos

de nuevo

f7

y

en

el

stack data,

vemos

el valor

que

tomo b

que es 'Japones' con

mayuscula.

Ademas hay otra pestaña que se llama DEBUG I/O que muestra las entradas y salidas cuando

Ademas hay otra pestaña que se llama DEBUG I/O que muestra las entradas y salidas cuando estas debuggeando, si imprimis b, alli se debe ver.

Ademas hay otra pestaña que se llama DEBUG I/O que muestra las entradas y salidas cuando

Para pasar por encima del raw_input, debo apretar f6 que es STEP OVER si no dara error porque estoy intentando entrar dentro de un comando, y eso no se puede, para eso existe el STEP OVER o f6, logicamente si apreto f6 para pasar por encima, luego debo ir a la ventana de entrada y salida y ingresar el texto que me pide el raw_input y ENTER para que pase a la siguiente linea.

Ademas hay otra pestaña que se llama DEBUG I/O que muestra las entradas y salidas cuando

Tambien puedo poner Breakpoints

Si pongo un breakpoint debo saber que solo funcionara si el programa corre en modo DEBUG,

Si pongo un breakpoint debo saber que solo funcionara si el programa corre en modo DEBUG, si lo ejecuto, correra normalmente sin parar en ningun breakpoint.

Al apretar DEBUG, correra hasta que encuentre un BREAKPOINT o algun error, o pare por algun motivo como algun input de teclado, por ejemplo.

Veamos mas metodos para las strings.

Si borro capitalize al tipear el punto sale la ayuda y marco CENTER

Si pongo un breakpoint debo saber que solo funcionara si el programa corre en modo DEBUG,

Que nos dice la ayuda

Si pongo un breakpoint debo saber que solo funcionara si el programa corre en modo DEBUG,

Bueno esta es un poco mas compleja pero no tanto

Si vemos cuanto vale b despues de tracear, en el stack data Lo que hizo center,

Si vemos cuanto vale b despues de tracear, en el stack data

Si vemos cuanto vale b despues de tracear, en el stack data Lo que hizo center,

Lo que hizo center, fue centrar la string 'japones' en otra de 20 lugares de largo que es el parametro que le pasamos, tiene un parametro mas opcional que por default, si no colocas nada, la centra entre espacios, pero uno puede elegir el carácter entre el cual se hara el padding para centrarse.

Si vemos cuanto vale b despues de tracear, en el stack data Lo que hizo center,

Si le pongo como segundo argumento una 'Y', luego traceo veo que en el stack me queda

Puedo seguir traceando hasta que imprima b, veo que la centro entre 20 letras y. si

Puedo seguir traceando hasta que imprima b, veo que la centro entre 20 letras y.

Puedo seguir traceando hasta que imprima b, veo que la centro entre 20 letras y. si

si le cambio

Puedo seguir traceando hasta que imprima b, veo que la centro entre 20 letras y. si

Lo paro, le doy f7, cuando llego al center y lo quiero pasar me da error

Puedo seguir traceando hasta que imprima b, veo que la centro entre 20 letras y. si

Y me lo dice muy grande, el segundo argumento debe ser un solo carácter, no una string, jeje logico

no se puede hacer padding con dos letras, con un solo carácter es lo correcto, jeje.

Pruebo usar la letra M de padding.

no se puede hacer padding con dos letras, con un solo carácter es lo correcto, jeje.

Ahora si, al tracear veo que hizo el padding usando la letra M.

no se puede hacer padding con dos letras, con un solo carácter es lo correcto, jeje.

El proximo metodo es COUNT

no se puede hacer padding con dos letras, con un solo carácter es lo correcto, jeje.
no se puede hacer padding con dos letras, con un solo carácter es lo correcto, jeje.

Bueno este retorna el numero de ocurrencias de una substring buscando en la string principal, tambien tiene la opcion de poner un slice para marcar donde quiero que comience a buscar y donde termine de buscar.

La ayuda es tanta que cuando voy a poner el primer argumento

Bueno este retorna el numero de ocurrencias de una substring buscando en la string principal, tambien

en la ayuda me muestra cual es el que le toca entrar.

Bueno este retorna el numero de ocurrencias de una substring buscando en la string principal, tambien

El que no sabe, luego lo explicaremos con mas detalle, self es una definicion, no es un argumento en si, el primer argumento es el que esta marcado o sea la substring, alli no lo marque yo, si no el mismo IDE, diciendome que eso es lo que debo ingresar.

Bueno este retorna el numero de ocurrencias de una substring buscando en la string principal, tambien

Cuando escribo el primer argumento y salto al siguiente, la ayuda tambien cambia al siguiente.

Como estos son opcionales por ahora no los usaremos, asi que usamos uno solo. Al tracear

Como estos son opcionales por ahora no los usaremos, asi que usamos uno solo.

Como estos son opcionales por ahora no los usaremos, asi que usamos uno solo. Al tracear
Como estos son opcionales por ahora no los usaremos, asi que usamos uno solo. Al tracear

Al tracear y pasar el count vemos que b quedo valiendo 1, que es la cantidad de veces que se repite, 'po' dentro de 'japones'.

Si cambio la palabra 'japones' por 'pompones' que tiene dos 'po' veamos que pasa.

Como estos son opcionales por ahora no los usaremos, asi que usamos uno solo. Al tracear

Traceo con f7

Traceo con f7 y b toma el valor 2, y sigo traceando lo imprimira en la

y b toma el valor 2, y sigo traceando lo imprimira en la salida

Traceo con f7 y b toma el valor 2, y sigo traceando lo imprimira en la
Traceo con f7 y b toma el valor 2, y sigo traceando lo imprimira en la

Si le agrego los argumentos opcionales, en este caso buscara cuantas veces esta 'po' entre las posiciones 2 y 6 y logico solo una vez estara.

Traceo con f7 y b toma el valor 2, y sigo traceando lo imprimira en la

Luego de pasar el print

Vemos que imprime b que vale 1. Bueno vimos algunos los metodos mas sencillos, en la

Vemos que imprime b que vale 1.

Bueno vimos algunos los metodos mas sencillos, en la parte 10 seguiremos con mas metodos para strings.

Hasta la parte 10 Bye bye

Bueno en primer lugar quiero agradecer enormemente a los miembros de SHOCK por esta fantástica release… fantástica en cuanto a utilidad que no en cuanto a facilidad de uso.

Espero que si alguna vez os dá por hacer una release, al menos expliqueis correctamente como se usa…

Empezamos … en el archio rar del crack viene entre otras cosas las instrucciones… esas ya las podéis tirar… además viene un zip, que se llama crack.zip

En su interior encontrareis…

Bueno en primer lugar quiero agradecer enormemente a los miembros de SHOCK por esta fantástica release…

Bien pues aquí empieza el cachondeo, para que funcione debemos adivinar donde coño, (y perdonad por la expresión) ponemos cada archivo…

Antes de que os pongais a buscar ya os lo digo yo…

El wingide.exe y el python23.dll los colocais en

C:\Archivos de programa\Wing IDE 2.0\bin

Eso si lo habeis instalado por defecto… si no pues ya sabéis

..

Tupuñeterodirectorio\bin

El _sre.pyd lo metéis en…

C:\Archivos de programa\Wing IDE 2.0\bin\PyCore\DLLs

Este como pa encontrarlo facil esta, grrrrr

NOTA importante: Para hacer estos cambios ha de estar el Wing Ide cerrado, si no, no podréis sobreescribir las dll´s.

Bueno ahora si intentais arrancar el keygen vereis que despues de escribirle como unos gilipollas todos los numeritos se os cierra antes de que os de tiempo a copiar vuestro serial… asi que

InicioEjecutarcmd

Y abris una consola de dos

Ahora navegáis hasta donde esta el keygen, esto supongo que no hace falta explicarlo…

pero por si acaso os lo pongo tambien, pa que nadie se me queje

cd

(para subir de nivel)

.. cd archivos de programa cd wing ide 2.0 cd bin wingide y apretamos return

Abrimos también el WingIde y nos salta un cartelito que nos recuerda que aun no lo hemos crackeado…

En el escribimos un codigo cualquiera del tipo CNXXX-XXXXX-XXXXX-XXXXX, donde X corresponde a un integer, digoooooooo a un número…

Pongamos por ejemplo y para no complicarnos mucho CN123-12345-12345-12345

Lo pegamos en el sitio correspondiente y le damos a continuar ..

Ahora navegáis hasta donde esta el keygen, esto supongo que no hace falta explicarlo… pero por

Hacemos lo mismo con el keygen que deberiamos tenerlo a la espera de este primer codigo… (supongo que sabreis pegar y copiar en y desde las consolas de DOS, asi que ya no os explico más)

De aquí pasamos a otra pantalla donde nos suelta un código con un formnato parecido al que nosotros le metimos y que tambien le tenemos que pasar al keygen…

señalamos la segunda opción, le metemos ese número al keygen ( se puede copypastear) y ahora

señalamos la segunda opción, le metemos ese número al keygen ( se puede copypastear) y ahora una ultima bromita del cracker de SHOCK( también apañetelas tu mismo) te pregunta para que SO es el keygen (windows, linux o mac), hay que ponerle windows en minusculas ¡!! Esto es importante

señalamos la segunda opción, le metemos ese número al keygen ( se puede copypastear) y ahora

Le damos a continuar y ahora si, ya tenemos el soft crackeado…

Además de activar un buen soft que nos va a ayudar en nuestra ardua tarea, hemos

Además de activar un buen soft que nos va a ayudar en nuestra ardua tarea, hemos aprendido como NO hacer una release. Hasta la próxima.

APRENDIENDO PYTHON DESDE CERO PARTE 10 (mas strings-metodos)

Realmente la idea no es que nos aprendamos todos los metodos para strings de memoria, porque son muchos, si no que sepamos, como interpretar la ayuda que nos da en este caso el IDE que tenemos, si usamos el WING, tendremos la ayuda sobre que es cada cosa, y si no, podemos usar google y buscar ayuda sobre el metodo como cualquier hijo de vecino, usando el activepython.

APRENDIENDO PYTHON DESDE CERO PARTE 10 (mas strings-metodos) Realmente la idea no es que nos aprendamos

Vemos que el activepython nos da una lista de los metodos tambien, aunque con menos info podemos debuggear en el active python, elijjiendo la columna

APRENDIENDO PYTHON DESDE CERO PARTE 10 (mas strings-metodos) Realmente la idea no es que nos aprendamos

.

Y guardando el script antes de debuggearlo, podemos poner BREAKPOINTS y tracear tambien el codigo perfectamente en el active python, eso si no tendremos un autocompletado tan poderoso, pero hoy dia buscando en google se encuentra info de cualquier cosa, asi que,con paciencia, igual se puede hacer.

De cualquier manera nosotros seguiremos aprendiendo a manejar el WING ya que es mas completo, y

De cualquier manera nosotros seguiremos aprendiendo a manejar el WING ya que es mas completo, y ayudandonos con el, iremos hallando el significado de mas metodos para strings.

El siguiente metodo que miraremos sera endswith.

De cualquier manera nosotros seguiremos aprendiendo a manejar el WING ya que es mas completo, y

Cuando tipeamos la a y el punto nos aparece el menu de autocompletado.

De cualquier manera nosotros seguiremos aprendiendo a manejar el WING ya que es mas completo, y

Al poner el cursor sobre la palabra endswith en la ayuda nos muestra:

Return True if S ends with the specified suffix, False otherwise. With optional start, test S beginning at that position. With optional end, stop comparing S at that position.

O sea que si acaba en la substring que nosotros ponemos como modelo, nos devuelve True, y si no termina en la substring, nos devuelve False

En el ejemplo como le pasamos la subestring 'es', nos dara True o verdadero ya que 'japones', termina con 'es'.

O sea que si acaba en la substring que nosotros ponemos como modelo, nos devuelve True,

Alli vemos que imprime True si hubieramos puesto cualquier otra string nos devolveria False

O sea que si acaba en la substring que nosotros ponemos como modelo, nos devuelve True,

Si ponemos que mire si termina en 'nes', por supuesto tambien nos devolvera en b=True y lo imprimira.

El proximo que miraremos sera find.

O sea que si acaba en la substring que nosotros ponemos como modelo, nos devuelve True,

Esta nos busca una substring, dentro de una string mayor y nos dice el indice a partir de donde la encuentra (recuerden que los indices empiezan en 0, como ya se explico en la parte 5). Además podemos especificar a partir de que indice debe empezar a buscar…

En el ejemplo nos devuelve que la letra 'o', la encuentra en el lugar 3, por primera vez, y si repetimos la busqueda diciendo que encuentre a partir de 4 en adelante, la siguiente vez la encuentra en el lugar 9.

En este otro ejemplo busca la subestring 'os' y la encuentra en el lugar 9. Como

En este otro ejemplo busca la subestring 'os' y la encuentra en el lugar 9.

En este otro ejemplo busca la subestring 'os' y la encuentra en el lugar 9. Como

Como vemos la ayuda siempre es util, nos dice que tipo de variable lleva cada entrada, para ver que esta esperando en cada caso, y la definicion del metodo.

Veremos en este caso join.

En este otro ejemplo busca la subestring 'os' y la encuentra en el lugar 9. Como

La ayuda nos dice algo, que retorna una string que se concatena con la que pasamos como secuencia, que es tambien una string, probemos.

En este otro ejemplo busca la subestring 'os' y la encuentra en el lugar 9. Como
Yo se que el parametro es una string, asi que lo mejor a veces es probar

Yo se que el parametro es una string, asi que lo mejor a veces es probar a ver que pasa, le doy debug.

Yo se que el parametro es una string, asi que lo mejor a veces es probar

Jeje, concateno la string principal, usando las letras en este caso el numero 8, de la substring sequence, jeje, si la cambiamos por 123456789, a la misma.

Yo se que el parametro es una string, asi que lo mejor a veces es probar

Vemos que separa la sequencia carácter a carácter, y en medio le pone la string principal repetida, no se si es de mucha utilidad, pero descubrimos algo jeje.

El ejercicio seria agarrar algunos metodos faciles, de pocos parametros y tratar por las de uno, de averiguar que hacen, hay un anexo que va con este tute con la explicacion rapida de muchos metodos de strings, seria bueno que practiquen con uno o dos y si ven que no pueden hallar su funcionamiento, en ese caso vayan a ver que alli estan la mayoria, salvo algunos que requieren mayor explicacion como ENCODE, DECODE y se veran mas adelante.

Los metodos que estan practicar son:

en el anexo (algunos pocos ya los vimos aqui) y que son faciles para

S.endswith

S.expandtabs

S.find

S.index

S.isalnum

S.isalpha

S.isdigit

S.islower

S.isspace

S.istitle

S.isupper

S.ljust

S.lower

S.lstrip

S.replace

S.rfind

S.rindex

S.rjust

S.rsplit

S.rstrip

S.split

Estas son todas las que hay en el anexo, no es necesario saberlas todas de memoria, las pusimos separadas a ver si alguien se anima y practica un poco como hallar con la ayuda del WING, que hace cada una, si las pongo todas aca, tienen la solucion a la vista.

Bueno con esto terminamos el tema de metodos para strings en la parte 11 veremos otra cosa, jeeje

hasta la 11 Ricardo Narvaja

ANEXO MODULOS PARA STRINGS

S.endswith

ANEXO MODULOS PARA STRINGS S.endswith Return True if S ends with the specified suffix, False otherwise.

Return True if S ends with the specified suffix, False otherwise. With optional start, test S beginning at that position. With optional end, stop comparing S at that position.

O sea que si acaba en la substring que nosotros ponemos como modelo, nos devuelve True, y si no termina en la substring nos devuelve False

En los ejemplos…

ANEXO MODULOS PARA STRINGS S.endswith Return True if S ends with the specified suffix, False otherwise.

S.expandtabs

ANEXO MODULOS PARA STRINGS S.endswith Return True if S ends with the specified suffix, False otherwise.

Si en la string que le pasamos al método hubiese un tabulador (como lo hay en el ejemplo \t) sustituira el tab, por los espacios en blanco que le pasamos como parámetro, si no pasasemos nada nos devolvería 8 espacios por cada tab.

En el ejemplo se ve mas claro…

S.find Esta nos busca una substring, dentro de una string mayor y nos dice el indice

S.find

S.find Esta nos busca una substring, dentro de una string mayor y nos dice el indice

Esta nos busca una substring, dentro de una string mayor y nos dice el indice a partir de donde la encuntra (recordar que los indices empiezan en 0, como ya se explico en la parte 5). Además podemos especificar a partir de que indice debe empezar a buscar…

S.find Esta nos busca una substring, dentro de una string mayor y nos dice el indice

Ejemplo de substring

S.find Esta nos busca una substring, dentro de una string mayor y nos dice el indice

S.index

S.index Esta en principio parece igual que la anterior pero no es asi, ya que si

Esta en principio parece igual que la anterior pero no es asi, ya que si la substring no existe, con el metodo find nos devuelve un -1, y con el index nos saltará un error… Veámoslo…

S.index Esta en principio parece igual que la anterior pero no es asi, ya que si

Lo mismo con s.find

S.index Esta en principio parece igual que la anterior pero no es asi, ya que si

S.isalnum

S.index Esta en principio parece igual que la anterior pero no es asi, ya que si

Como su propio nombre indica, mira los caracteres de la string que le pasamos y si son alfanumericos nos devolverá True, en cualquier otro caso nos devolverá False.

Como su propio nombre indica, mira los caracteres de la string que le pasamos y si

Ahora viene una gran familia de los IS… estas son casi autoexplicativas, en todas ellas se retorna True o False, según la condicion que se compruebe en cada una de ellas, además todas devuelven False si la string está vacia.

S.isalpha

Como su propio nombre indica, mira los caracteres de la string que le pasamos y si

Esta es parecida a la anterior pero en este caso para que retorne True, solo debe haber caracteres alfabéticos

Como su propio nombre indica, mira los caracteres de la string que le pasamos y si

S.isdigit

Pues otra más como las anteriores, esta vez comprueba que los caracteres sean números S.islower Otra

Pues otra más como las anteriores, esta vez comprueba que los caracteres sean números

Pues otra más como las anteriores, esta vez comprueba que los caracteres sean números S.islower Otra

S.islower

Pues otra más como las anteriores, esta vez comprueba que los caracteres sean números S.islower Otra

Otra más, esta vez, miramos si todas son minúsculas…

Pues otra más como las anteriores, esta vez comprueba que los caracteres sean números S.islower Otra

S.isspace

Pues otra más como las anteriores, esta vez comprueba que los caracteres sean números S.islower Otra

Esta es medio rara, miramos si toda la string esta rellena de al menos un espacio en blanco…

S.istitle Otra un pelín rara, nos devuelve True, si la string esta en formato título. Es

S.istitle

S.istitle Otra un pelín rara, nos devuelve True, si la string esta en formato título. Es

Otra un pelín rara, nos devuelve True, si la string esta en formato título. Es decir detrás de una letra, solo puede ir una minúscula, y en cualquier otro caso sólo una mayúscula (un espacio en blanco entre dos palabras es uno de ellos) Mejor un ejemplo…

S.istitle Otra un pelín rara, nos devuelve True, si la string esta en formato título. Es

Un último ejemplo de mayúsculas…

S.istitle Otra un pelín rara, nos devuelve True, si la string esta en formato título. Es

S.isupper

S.isupper Lo contrario a islower…. Y con esto terminamos los IS… S.ljust Sirve para justificar a

Lo contrario a islower….

S.isupper Lo contrario a islower…. Y con esto terminamos los IS… S.ljust Sirve para justificar a

Y con esto terminamos los IS…

S.ljust

S.isupper Lo contrario a islower…. Y con esto terminamos los IS… S.ljust Sirve para justificar a

Sirve para justificar a la izquierda un texto… podemos especificar cuantos espacios dejaremos a su derecha, y si queremos que se rellenen con algun carácter ( NO STRING).

20
20

S.lower

Como su nombre indica nos devuelve una string toda en minúsculas, si es que hubiese alguna mayúscula escrita…

Como su nombre indica nos devuelve una string toda en minúsculas, si es que hubiese alguna

S.lstrip

Como su nombre indica nos devuelve una string toda en minúsculas, si es que hubiese alguna

Es decir, si no ponemos nada y hubiese un espacio antes de la string lo borraría, si ponemos como en el ejemplo la substring ‘ja’, el resultado es un ‘pones’

Como su nombre indica nos devuelve una string toda en minúsculas, si es que hubiese alguna

Como recordaran en la parte 5, habiamos visto que podiamos hacer lo mismo con un slice…

Como su nombre indica nos devuelve una string toda en minúsculas, si es que hubiese alguna

Y parece que hemos hecho lo mismo, pero no es así, el resultado es el mismo en este caso, pero en el primero siempre quitamos dos caracteres, y con el lstrip buscamos coincidencia, y solo si existe extraemos la substring…

S.replace

Buscamos una substring y la sustituimos por otra… en este caso suistiumos ‘os’ por ‘as’

Buscamos una substring y la sustituimos por otra… en este caso suistiumos ‘os’ por ‘as’ también

también podemos definir el numero de veces que tiene que hacer la sustitucion, por ejemplo solo 2 veces… y solo lo hará en las dos primeras ocurrencias que encuentre…

Buscamos una substring y la sustituimos por otra… en este caso suistiumos ‘os’ por ‘as’ también

Y aquí ya podemos lanzarnos a imaginar miles de posibilidades….

Buscamos una substring y la sustituimos por otra… en este caso suistiumos ‘os’ por ‘as’ también

S.rfind

Parecido al find, esta vez nos devuelve el indice mas alto en el que encuentra la substring

Buscamos una substring y la sustituimos por otra… en este caso suistiumos ‘os’ por ‘as’ también

Podemos especificar un slice de comienzo y final…

En este caso le pedimos el indice mas alto en el que encuentre la substring ‘os’

En este caso le pedimos el indice mas alto en el que encuentre la substring ‘os’ hasta que llegue al indice 13, por lo que encuentra en el indice 2 la segunda parte de ‘osos’.

S.rindex

Exactamente igual que el anterior pero si no existe la substring, en lugar de devolver -1, saltará un error… Para mas información leer S.index

S.rjust

Parecida a S.ljust, pero el padding o la justificación son por la izquierda…

En este caso le pedimos el indice mas alto en el que encuentre la substring ‘os’

S.rsplit

Hacemos un split de la string principal, separandola en substrings mas pequeñas cada vez que encontremos el “modelo” que pasamos como argumento, teniendo en cuenta que se empieza a mirar por la derecha de la string(por eso la r de right)… Además podemos especificar cuantas separaciones maximas queremos hacer…

En este caso le pedimos el indice mas alto en el que encuentre la substring ‘os’

Notese la diferencia entre los siguientes, y como se empieza por la derecha….

S.rstrip

Notese la diferencia entre los siguientes, y como se empieza por la derecha…. S.rstrip Como su
Notese la diferencia entre los siguientes, y como se empieza por la derecha…. S.rstrip Como su

Como su homologa S.lstrip, pero empezando por la derecha

Notese la diferencia entre los siguientes, y como se empieza por la derecha…. S.rstrip Como su

S.split

Con esta partimos la string en substrings cada vez que encontremos el parametro.

Notese la diferencia entre los siguientes, y como se empieza por la derecha…. S.rstrip Como su

Podemos especificar el maximo numero de cortes que haremos…

Notese la diferencia entre los siguientes, y como se empieza por la derecha…. S.rstrip Como su

Y bueno hay muchas mas pero creo que con estos ejemplos se entiende la idea, si uno necesita alguna en especial que no este aquí, busca info en el WING o en google y siempre si tiene una base saldra adelante

ricnar

11-APRENDIENDO PYTHON DESDE CERO (listas)

Luego de terminar con el objeto string, pasaremos a los siguientes objetos que son las listas, las cuales explicaremos a continuacion.

LISTAS

Las listas son realmente una colección ordenada de objetos de diferentes tipos, pueden contener strings, numeros y pueden contener tambien otras listas.

Las listas son accedidas por offsets, y como las strings pueden ser concatenadas, y pueden usarse indices, slices y demas. A diferencia de las strings las listas pueden crecer y achicarse, mientras las strings solo se achican o agrandan cuando les realizamos operaciones y asignamos en otras variables, pero la string original sigue inmutable.

Si yo hago

c= ' pepe' d= c + ' campeon'

Realmente pepe no crecio en c sigue siendo la misma string, lo que se hizo fue concatenar con otra string y guardarla en otra variable, por lo tanto lo que dijimos anteriormente es cierto, las strings no aumentan ni disminuyen en tamaño, pero las listas si pueden aumentar y disminuir.

Ejemplos de listas

Si abro una ventana interactiva o en WING en la pestaña PYTHON SHELL y tipeo

L1=[]

Una lista sin ningun contenido es una lista vacia.

11-APRENDIENDO PYTHON DESDE CERO (listas) Luego de terminar con el objeto string, pasaremos a los siguientes

Este segundo ejemplo es una lista de cuatro items, vemos que son todos numeros y que si llamo mediante subindice al primero sera L2[0] ya que como vimos los indices siempre empiezan a contar desde cero.

Alli uso indices, si quiero obtener mas de un item, uso un indice similar al de

Alli uso indices, si quiero obtener mas de un item, uso un indice similar al de la strings.

Alli uso indices, si quiero obtener mas de un item, uso un indice similar al de

Alli al igual que en el caso de las strings, mostrara los dos primeros items, ya que el colocar que termine en el indice 2, excluye al que esta en esa posicion, realmente muestra el que esta en posicion 0 y el que esta en posicion 1.

En este ejemplo vemos claro que una lista es realmente una lista de objetos que pueden ser de diferentes tipos.

L3= ['pepe', 90, 0x34]

Alli uso indices, si quiero obtener mas de un item, uso un indice similar al de

Si quiero los dos ultimos items al igual que con las strings pongo el indice desde donde quiero que se inicie, y si pongo los dos puntos y obvio el segundo indice, significa que obtendre todos los items hasta el final.

Alli uso indices, si quiero obtener mas de un item, uso un indice similar al de

Dijimos que una lista podia contener otra lista dentro veamos:

L2 = [0, 1, 2, 3] L3= ['pepe', 90,

L2]
L2]

Vemos que el tercer item de la lista L3 es la lista L2 que esta incluida, puedo llamar a los items de L2 con doble indice

ya que L3[2] =[0, 1, 2, 3]

para mostrar a su vez el indice de estos tres objetos, habra que colocar un segundo indice que ubicara la posicion de los 3 items internos de esta sublista.

INDICE SLICE O REBANADA Al igual que en las strings puedo sacar una rebanada de la

INDICE SLICE O REBANADA

Al igual que en las strings puedo sacar una rebanada de la lista por ejemplo

L4=[54, 'pepe', 'redjau', 'crackslatinos', 0, 1, 2, 3]

si quiero hacer un indice slice desde 2 a 5

L4 [2:5]

INDICE SLICE O REBANADA Al igual que en las strings puedo sacar una rebanada de la

Como sabemos el primer item es el de posicion cero, asi que el 2 sera 'redjau' y luego incluira todos los items hasta el 5, sin incluir este ultimo, asi que realmente seran los item 2, 3 y 4, que corresponden a:

[54, 'pepe',

'redjau', 'crackslatinos', 0

, 1, 2, 3]

LARGO DE UNA LISTA

La funcion len, nos dara la cantidad de items que tiene una lista, si usamos la del ejemplo anterior, tendra 8 items.

CONCATENAR Y REPETIR

INDICE SLICE O REBANADA Al igual que en las strings puedo sacar una rebanada de la
INDICE SLICE O REBANADA Al igual que en las strings puedo sacar una rebanada de la

Si tenemos a L4 y a L2 que son las listas de los ejemplos anteriores.

Si concateno las dos listas

L3= L4+L2

Vemos que uni las dos listas respetando el orden en que estan sus items, primero colocare

Vemos que uni las dos listas respetando el orden en que estan sus items, primero colocare todos los items de la primera lista de la suma, y luego le agregare en orden todos los items de la segunda lista, creando una tercera.

Repetir una lista es sencillo

L1=[9,'pepe']

si la quiero repetir 20 veces por ejemplo la multiplicare por 20

L2= L1*20

>>> L2=[9, 'pepe', 9, 'pepe', 9, 'pepe', 9, 'pepe', 9, 'pepe', 9, 'pepe', 9, 'pepe', 9, 'pepe', 9, 'pepe', 9, 'pepe', 9, 'pepe', 9, 'pepe', 9, 'pepe', 9, 'pepe', 9, 'pepe', 9, 'pepe', 9, 'pepe', 9, 'pepe', 9, 'pepe', 9, 'pepe']

Se repetira el contenido de la lista original la cantidad de veces que hayamos repetido, en este caso 20 veces.

ITERACION

En forma similar a las strings podemos interar, si usamos la lista del ejemplo anterior L2.

>>> for x in L2:

...

print x

Recordamos que adelante del print debemos dejar lugar vacio por la indentacion, si ejecuto x, ira tomando los valores de cada item de L2, la primera vez sera x=9, la segunda vez sera x='pepe' y asi recorrera toda la lista imprimendo todos sus items hasta que se acaben.

Para que no sea tan largo podemos agregar una coma, despues de la x, asi los imprime todos en la misma linea.

Vemos que uni las dos listas respetando el orden en que estan sus items, primero colocare

APPEND

Si le quiero agregar un item a una lista puedo realizarlo sumandole otra lista, o con el comando APPEND.

Vemos que a la lista L1, que tiene solo dos items, con append, le agregamos un

Vemos que a la lista L1, que tiene solo dos items, con append, le agregamos un item mas , en este caso el numero 3.

Vemos que a la lista L1, que tiene solo dos items, con append, le agregamos un

Luego le agregue la string 'sol', asi que me quedo una lista de cuatro items.

EXTEND

Vemos que a la lista L1, que tiene solo dos items, con append, le agregamos un

A diferencia de append que agrega items completos, extend ( 'sol'),agrega tres items, uno por cada letra de la palabra sol.

Vemos que a la lista L1, que tiene solo dos items, con append, le agregamos un

Lo mismo si es un numero lo agregara un item por cada cifra.

ORDENAR:

El metodo sort que se aplica a listas, sirve para ordenar, en el ejemplo son tres items que estan desordenados, y sort lo colocara en orden alfabetico.

.

Vemos que a la lista L1, que tiene solo dos items, con append, le agregamos un

En el siguiente ejemplo se ordenan strings que representan numeros

Si son tres numeros los ordenara tambien Y si son numeros y strings mezcladas, primero colocara

Si son tres numeros los ordenara tambien

Si son tres numeros los ordenara tambien Y si son numeros y strings mezcladas, primero colocara

Y si son numeros y strings mezcladas, primero colocara los numeros en orden, luego las strings en orden y asi sucesivamente.

Si son tres numeros los ordenara tambien Y si son numeros y strings mezcladas, primero colocara

INDEX

Me devuelve que indice es el siguiente item.

Si son tres numeros los ordenara tambien Y si son numeros y strings mezcladas, primero colocara

Vemos que si le pregunto por el item 4, me dice que esta en la posicion 1 en la lista.

REVERSE

Sirve para ordenar pero en orden inverso al de sort, de mayor a menor.

Si son tres numeros los ordenara tambien Y si son numeros y strings mezcladas, primero colocara

DELETE

Sirve para quitar un item

Si son tres numeros los ordenara tambien Y si son numeros y strings mezcladas, primero colocara

Si quito uno del medio los siguientes se correran hasta completar las posiciones, y estar

consecutivos.

consecutivos. Bueno creo que con esto tenemos bastante claro el tema de las listas en la

Bueno creo que con esto tenemos bastante claro el tema de las listas en la parte 12 veremos los diccionarios que es el siguiente tipo de objetos.

Hasta la parte 21 Ricardo Narvaja

Lista o array

.count

Cuenta el número de concurrencias, items iguales a la muestra, que tenemos…

En el ejemplo vemos como encuentra primero una coincidencia y despues dos con el item de referencia que es la string ‘o’.

Lista o array .count Cuenta el número de concurrencias, items iguales a la muestra, que tenemos…

.insert

Como su nombre, indica, sirve para insertar un item en medio de otros de un array, para ello, tenemos que proporcionarle el index en el cual queremos que se inserte, y el item a insertar.

Lista o array .count Cuenta el número de concurrencias, items iguales a la muestra, que tenemos…

.pop

El contrario del insert, lo que hacemos es quitar el elemento apuntado por el index( si no ponemos nada se quita el último por defecto), y además nos devuelve el item que quitamos en la variable que asignemos, ( si es que asignamos alguna variable para contenerlo)

.remove También sirve para quitar un elemento, pero en este caso especificamos el elemnto a quitar

.remove También sirve para quitar un elemento, pero en este caso especificamos el elemnto a quitar y si hay mas de uno quitará el de index mas bajo.

.remove También sirve para quitar un elemento, pero en este caso especificamos el elemnto a quitar

APRENDIENDO PYTHON DESDE CERO (diccionarios)

El proximo objeto a estudiar seran los diccionarios, tal como las listas son colecciones de objetos ordenadas, a los cuales se apunta por indices para saber la posicion de algun item en la misma, los diccionarios son tambien colecciones de objetos, pero no se apuntan por un indice de orden como en el caso de las listas, por lo cual se puede decir que son desordenados.

Al no poder referenciarse por indices numericos, el referenciamiento de una entrada dentro de un diccionario se realiza por medio de keys, veremos a continuacion ejemplos que nos aclararan facilmente el panorama sobre este objeto tan util.

Los diccionarios para diferenciarlos de las listas que se escribian entre corchetes, se escriben entre llaves {}, por lo tanto asi como la lista vacia era.

L1=[]

el diccionario vacio es

D1={}

aquí tenemos un simple ejemplo de un diccionario de dos entradas.

D2 = {'spam': 2, 'eggs': 3}

Vemos que cada entrada de un diccionario esta compuesto por un par de valores, en el ejemplo anterior la primera entrada esta compuesto por el par

'spam': 2

donde 'spam' es la key y el 2 es el valor asociado correspondiente, realmente aquí vemos que en las listas teniamos items apuntados por indices, aquí tenemos entradas, con un valor que es apuntado por keys que son strings, y cada valor tiene una key correspondiente y unica para poder ubicarlo en el diccionario.

D2 = {'spam': 2, 'eggs': 3}

Por ejemplo si en este diccionario quisiera ubicar entrada 1, no serviria de nada utilizar el metodo de indices D2[1] que serviria para listas, aquí es erroneo.

APRENDIENDO PYTHON DESDE CERO (diccionarios) El proximo objeto a estudiar seran los diccionarios, tal como las

Alli lo vemos sale un error diciendo que en este diccionario no hay ninguna key con el valor 1, y por eso da error, si colocaramos.

Alli si la key 'eggs', me devuelve su valor correspondiente que es 3, de esta forma

Alli si la key 'eggs', me devuelve su valor correspondiente que es 3, de esta forma los diccionarios trabajan con entradas, que son un par, una string llamada key y su valor asociado correspondiente.

Si tenemos este diccionario de 3 entradas

D2 = {'spam': 2, 'ham': 1, 'eggs': 3}

esta claro que las keys son las strings `spam', 'jam' y 'eggs' y sus valores correspondientes seran 2, 1 y 3.

Realmente los diccionarios no tienen un orden, uno puede escribirlos en un orden determinado y cuando uno los llama mas adelante, estar en otro orden, python mantiene la relacion entre una key y su valor asociado inmutable, pero su ubicación puede variar, ya que realmente no interesa, pues no se llama por indices de posicion.

Alli si la key 'eggs', me devuelve su valor correspondiente que es 3, de esta forma

Aquí vemos que yo escribi las entradas en un orden, y pyhon al mostrarlos, lo hizo en un orden diferente, pero nunca cambio la relacion entre una key y su valor asociado, por lo cual las propiedades del diccionario se mantienen, siempre en el ejemplo anterior, 'spam' se asocio con 2 y 'eggs' con 3.

D9={'pepe': 5, 'ham': 'happy', 'spam': 2}

Otro ejemplo en este caso el valor asignado a la key 'ham' es una string en este caso 'happy'.

LARGO DE UN DICCIONARIO

La funcion len, aquí tambien nos devuelve la cantidad de entradas que tiene un diccionario.

D2 = {'spam': 2, 'ham': 1, 'pepe': 3}

len (D2)

Alli si la key 'eggs', me devuelve su valor correspondiente que es 3, de esta forma

Logicamente el resultado es 3, pues posee tres entradas.

La concatenacion y repeticion de diccionarios no esta soportada.

TEST DE KEY

Uno de los metodos incluidos para diccionarios, es has_key, el mismo le pregunta a un diccionario si tiene la key correspondiente entre las que posee.

D2 = {'spam': 2, 'ham': 1, 'pepe': 3} D2.has_key('ham') Me responde que es verdadero, lo cual

D2 = {'spam': 2, 'ham': 1, 'pepe': 3}

D2.has_key('ham')

D2 = {'spam': 2, 'ham': 1, 'pepe': 3} D2.has_key('ham') Me responde que es verdadero, lo cual

Me responde que es verdadero, lo cual es logico porque posee dicha key, si pregunto una que no tiene, me respondera falso.

D2 = {'spam': 2, 'ham': 1, 'pepe': 3} D2.has_key('ham') Me responde que es verdadero, lo cual

Otra forma alternativa de testear si un diccionario posee una key es

'ham' in D2

D2 = {'spam': 2, 'ham': 1, 'pepe': 3} D2.has_key('ham') Me responde que es verdadero, lo cual

CREAR UNA LISTA DE LAS KEYS DE UN DICCIONARIO

El metodo keys, buscara todas las keys de un diccionario y hara una lista con ellas.

D2 = {'spam': 2, 'ham': 1, 'pepe': 3} D2.has_key('ham') Me responde que es verdadero, lo cual

Usando el diccionario anterior

D2 = {'spam': 2, 'ham': 1, 'pepe': 3}

D2.keys( )

D2 = {'spam': 2, 'ham': 1, 'pepe': 3} D2.keys( ) Vemos que ha creada una lista,

Vemos que ha creada una lista, por supuesto como toda lista va entre corchetes, y se puede asignar a otra variable que sera una lista.

D2 = {'spam': 2, 'ham': 1, 'pepe': 3} D2.keys( ) Vemos que ha creada una lista,

CAMBIANDO DICCIONARIOS

D2 = {'spam': 2, 'ham': 1, 'pepe': 3}

Usando el ejemplo anterior podemos alterar un diccionario asignandole un nuevo valor correspondiente, a una key.

D2['pepe']=5

D2 = {'spam': 2, 'ham': 1, 'pepe': 3} D2.keys( ) Vemos que ha creada una lista,

Alli le cambio la asignacion a la key 'pepe', antes tenia el valor 3, ahora 5.

Por supuesto como ya vimos, el valor asociado correspondiente , puede ser tanto numerico como strings, puedo asignarle a la key 'ham', el valor 'happy'.

D2 = {'spam': 2, 'ham': 1, 'pepe': 3} D2.keys( ) Vemos que ha creada una lista,

BORRANDO UNA ENTRADA

D2 = {'spam': 2, 'ham': 1, 'pepe': 5}

del D2['ham']

No necesita mucha explicacion con del, borramos la entrada que queremos. AGREGANDO ENTRADAS Se realiza de

No necesita mucha explicacion con del, borramos la entrada que queremos.

AGREGANDO ENTRADAS

Se realiza de la misma forma que cambiabamos un valor asignado a una key, solo que en este caso al usar una key que no existe en el diccionario, python la creara.

No necesita mucha explicacion con del, borramos la entrada que queremos. AGREGANDO ENTRADAS Se realiza de

Como la key 'hurra' no existia, creo una nueva entrada con dicha clave, y el valor asignado 90.

MAS METODOS DE DICCIONARIO

Python trae metodos especiales para trabajar en diccionarios algunos ya los vimos, existen mas por ejemplo:

D.values()

Usemos para todos estos ejemplos el diccionario D2.

D2={'hurra': 90, 'pepe': 5, 'spam': 2}

>>D2.values()

No necesita mucha explicacion con del, borramos la entrada que queremos. AGREGANDO ENTRADAS Se realiza de

Me devuelve una lista con los valores asociados.

No necesita mucha explicacion con del, borramos la entrada que queremos. AGREGANDO ENTRADAS Se realiza de

Alli asigne el resultado a una lista L4.

D.items()

Si a D2 , si le aplico el metodo items()

Me devuelve una lista con tantos items como entradas tenia el diccionario, ya sabemos que una

Me devuelve una lista con tantos items como entradas tenia el diccionario, ya sabemos que una lista puede contener en un item, cualquier cosa, en este caso entre parentesis, esta cada key con su valor asociado.

D.get()

Si a D2 , si le aplico el metodo get

Me devuelve una lista con tantos items como entradas tenia el diccionario, ya sabemos que una

Me sirve para obtener el valor asignado, pasandole su key, de esta forma puedo utilizarlo asignandolo a una variable.

Me devuelve una lista con tantos items como entradas tenia el diccionario, ya sabemos que una

D.update()

Ya dijimos que la concatenacion directa al estilo de las listas no existe, pero el metodo update hace algo bastante parecido.

Sean:

D2={'hurra': 90, 'pepe': 5, 'spam': 2} D3={'keke': 7, 'pepe': 7}

D2.update (D3)

Me devuelve una lista con tantos items como entradas tenia el diccionario, ya sabemos que una

Vemos que a D2, le agrego las entradas de D3, y si alguna key ambos tienen similar, el resultado tendra el valor asociado de la ultima, por eso se llama update, porque agrega lo que no tiene y cambia si alguna key esta en ambas, por el valor de la ultima.

El ejemplo es claro D2 no tenia la key 'keke', por eso se la agrego, y la key 'pepe' se actualizo al valor que tenia D3, o sea 7.

UN EJEMPLO DE DICCIONARIO REALISTA

table = {'Python': 'Guido van Rossum', 'Perl': 'Larry Wall', 'Tcl': 'John Ousterhout' }

Alli tenemos la variable table, que es un diccionario, que esta compuesto de 3 entradas, cada una tiene una key que es el idioma, y su valor asociado es el autor del mismo.

Ahora si creo una variable llamada lenguaje

lenguaje='Python'

Ya que dicha variable es una key en mi diccionario, puedo hallar el nombre de su creador con el.

>print table [lenguaje]

Alli tenemos la variable table, que es un diccionario, que esta compuesto de 3 entradas, cada

Imprimiendo de acuerdo al lenguaje, el nombre de su creador

ITERACION

Podemos iterar por las keys de un diccionario, usando el ejemplo anterior.

Alli tenemos la variable table, que es un diccionario, que esta compuesto de 3 entradas, cada

De esta forma iterara tomando x el valor de todas las keys de un diccionario, es similar a:

Alli tenemos la variable table, que es un diccionario, que esta compuesto de 3 entradas, cada

Si quiero imprimir los valores de un diccionario

Alli tenemos la variable table, que es un diccionario, que esta compuesto de 3 entradas, cada

Logicamente haciendo print table [x], ya que x toma el valor de las keys, imprimira los valores correspondientes.

Si quiero hacer una tablita con cada key y su valor correspondiente al lado.

Queda medio desacomodado, si le pongo tabulacion. Ahora quedo mejor jeje Bueno creo que con esto

Queda medio desacomodado, si le pongo tabulacion.

Queda medio desacomodado, si le pongo tabulacion. Ahora quedo mejor jeje Bueno creo que con esto

Ahora quedo mejor jeje

Bueno creo que con esto queda claro el tema dccionarios, si quieren averiguar los metodos restantes, siempre es buena practica hacerlo uno, hay algunos mas seguro se agregaran como anexo a esta parte, y podran tener la informacion y verificar si pudieron hallar los metodos por ustedes mismos correctamente.

Hasta la parte 13 que veremos tuplas Ricardo Narvaja

.clear

Vaciamos un diccionario de todo su contenido, obteniendo como resultado un diccionario vacio.

.clear Vaciamos un diccionario de todo su contenido, obteniendo como resultado un diccionario vacio. .copy Bueno

.copy

Bueno esto según la ayuda es una copia somera, poco profunda, de diccionarios, jejeje, es un tema peliagudo, voy a tratar de explicarlo….

Si decimos E=D.copy() creamos un nuevo diccionario E que hereda los valores de D, y a partir de este momento se comporta como undiccionario nuevo.

D2

E1

.clear Vaciamos un diccionario de todo su contenido, obteniendo como resultado un diccionario vacio. .copy Bueno

Que no es lo mismo que hacer E1=D2, que es como si dijesemos un puntero a nuestro diccionario D2, es decir si modificamos E1 modificamos D2.

.clear Vaciamos un diccionario de todo su contenido, obteniendo como resultado un diccionario vacio. .copy Bueno

En la imagen vemos como si lo asignamos directamente, en realidad E1 es un puntero, u otro nombre si lo quereis decir asi, para exactamente el mismo diccionario…

.fromkeys

Sirve para hacer un nuevo diccionario a partir de uno existente, asignando de esta forma.

En la imagen vemos como si lo asignamos directamente, en realidad E1 es un puntero, u

>>> D2.fromkeys (['hurra','pepe'],8) {'hurra': 8, 'pepe': 8}

O sea a las keys que elijo y cierro entre corchetes, le asigna el valor que le coloco a continuacion en este caso 8.

En la imagen vemos como si lo asignamos directamente, en realidad E1 es un puntero, u

.get

Es parecido a cuando pediamos un item determinado de un diccionario escribiendo D2[key], pero en este caso si el elemento no existe, no saltara una excepción, si no lo que nosotros especifiquemos…

Veamos ahora lo que ocurre si lo hacemos con D2[key] y no existe la key… Coo

Veamos ahora lo que ocurre si lo hacemos con D2[key] y no existe la key…

Veamos ahora lo que ocurre si lo hacemos con D2[key] y no existe la key… Coo

Coo veis con el .get, como no hemos especificado lo que hacer si no encuentra la key, simplemente nos responde ‘None’, pero al intentarlo llamando directamente a la key, nos salta una excepción.

.has_key

Preguntamos al diccionario en cuestión si tiene una key igual a la muestra que le pasamos, si la tiene nos responde True, y si no False.

Veamos ahora lo que ocurre si lo hacemos con D2[key] y no existe la key… Coo

.pop

Si os acordais de cuando las listas, pues aquí basicamente lo mismo, con el pop quitamos un item del diccionario, que le pasamos. Si la key no existe, saltará una excepción a menos que especifiquemos lo contrario.

excepción como un SHE
excepción
como un SHE
.pop Si os acordais de cuando las listas, pues aquí basicamente lo mismo, con el pop
.pop Si os acordais de cuando las listas, pues aquí basicamente lo mismo, con el pop

.popitem

Otro de esos metodos estupidos que uno los mira y no sabe que carajo pretendían con él… Sirve para quitar el primer elemento del diccionario (siempre el primero)y devolverlo como una tupla de 2 (o sea una pareja ordenada)

.pop Si os acordais de cuando las listas, pues aquí basicamente lo mismo, con el pop

.setdefault

Ponemos por defecto el valor de la key de un diccionario, para cuando queramos asignarle un elemento, o si ya hubiese un elemento con esa key nos devuelve el diccionario sin modificarlo. Es decir es parecido al método .get, pero en este caso si la key no existe, la crea y la añade.

.setdefault Ponemos por defecto el valor de la key de un diccionario, para cuando queramos asignarle

Y hast aquí hemos llegado.

Thanks al ayudante maravilla

ricnar

APRENDIENDO PYTHON DESDE CERO (tuplas)

Las tuplas, son una colección de objetos ordenados que son bastante parecido a las listas, se encierran entre parentesis, en vez de corchetes como las listas.

Las principales caracteristicas de esta colección de objetos son:

1)

Es una colección ordenada de objetos.

2)

Al igual que las listas se accede por offset o indice

3)

A diferencia de las listas que podian mutar, las tuplas son inmutables, solo se cambian items al asignarlas a otra tupla.

4) Tuplas son mejor conocidas como arrays de referencia, ya que es una forma sencilla de acceder por offset a objetos.

Veamos los ejemplos y alli se aclarara:

Un tupla vacia.

t1=()

APRENDIENDO PYTHON DESDE CERO (tuplas) Las tuplas, son una colección de objetos ordenados que son bastante

Recordemos que las otros colecciones de objetos que conociamos, las listas se cierran entre corchetes [ ] y los diccionarios entre llaves { }, en el caso de las tuplas el conjunto se encierra entre parentesis, aunque no es obligatorio, si un conjunto de objetos esta separado por comas, y no esta encerradoentre parentesis, python lo interpretara como una tupla.

t1= (0,)

APRENDIENDO PYTHON DESDE CERO (tuplas) Las tuplas, son una colección de objetos ordenados que son bastante

Esta es una tupla de un solo item, vemos que si es de un solo item habra que poner la coma, si no la colocamos la interpretara como un entero.

una tupla de cuatro items

t2 = (0, 'Ni', 1.2, 3)

APRENDIENDO PYTHON DESDE CERO (tuplas) Las tuplas, son una colección de objetos ordenados que son bastante
APRENDIENDO PYTHON DESDE CERO (tuplas) Las tuplas, son una colección de objetos ordenados que son bastante

Otra tupla de cuatro items similar a la anterior

t2 = 0, 'Ni', 1.2, 3

Vemos que los parentesis son opcionales, podemos no colocarlos, pero cuando queremos ver el contenido de la tupla python la muestra con parentesis, por claridad visual.

Otra tupla de cuatro items similar a la anterior t2 = 0, 'Ni', 1.2, 3 Vemos

Una tupla dentro de otra

t3 = ('abc', ('def', 'ghi'))

Al igual que en las listas, los items se llaman por indices que comienzan en cero, si usamos el ejemplo anterior

t3 [0]

Otra tupla de cuatro items similar a la anterior t2 = 0, 'Ni', 1.2, 3 Vemos

vemos que nos muestra el primer item, ya dijimos que las tuplas son conjuntos ordenados, asi que por medio de indices se puede acceder a ellos perfectamente.

t3[1][1]

Otra tupla de cuatro items similar a la anterior t2 = 0, 'Ni', 1.2, 3 Vemos

Como en el caso de las listas, si hay una tupla dentro de otra, para acceder a un solo item de la tupla que esta dentro, habra que usar doble subindice,

Existe el indice slice o rebanada

t2 = (0, 'Ni', 1.2, 3)

Otra tupla de cuatro items similar a la anterior t2 = 0, 'Ni', 1.2, 3 Vemos

Alli tomamos una rebanada que comienza en 2 y termina en 4 excluyendo a este ultimo o sea mostrara los items 2 y 3 como vemos.

y la funcion len

>len (t2)

Vemos que len nos da la cantidad de items de una tupla Existe tambien concatenar y

Vemos que len nos da la cantidad de items de una tupla

Existe tambien concatenar y repetir

Concatenar

(1, 2) + (3, 4)

(1, 2, 3, 4)

o tambien

t2 = (0, 'Ni', 1.2, 3) + (4,5)

>>> t2 (0, 'Ni', 1.2, 3, 4, 5)

alli vemos por si alguno no le quedo claro el concepto de mutable o inmutable, como las strings las tuplas son inmutables, lo cual quiere decir que no podemos asignarle directamente un valor nuevo a un item sin crear una tupla nueva, eso si podemos concatenarla al igual que las strings con otras y muliplicarlas, la inmutablidad se refiere al hecho de que si hago.

Vemos que len nos da la cantidad de items de una tupla Existe tambien concatenar y

Veo que no puedo cambiar directamente un item, lo mismo que pasaba en las strings, no podia cambiar una letra de la misma directamente

Vemos que len nos da la cantidad de items de una tupla Existe tambien concatenar y

Aca en las tuplas es similar, puedo concatenarle objetos y repetirlos, pero no puedo asignarle nuevos valores en la misma tupla, para ello hay que crear una segunda.

Vemos que len nos da la cantidad de items de una tupla Existe tambien concatenar y

Ahi vemos que para reemplazar el primer item de una tupla, tuve que crear una nueva, con un item de otra tupla, y concatenarlo con los restante que corte con el slice.

t2=(0, 'Ni', 1.2, 3, 4, 5)

t2*4

repetira 4 veces la misma tupla

t2=(0, 'Ni', 1.2, 3, 4, 5) t2*4 repetira 4 veces la misma tupla se puede iterar

se puede iterar perfectamente

t2=(0, 'Ni', 1.2, 3, 4, 5)

for x in t2:

print x,

Esto imprimira todos los items de la tupla.

t2=(0, 'Ni', 1.2, 3, 4, 5) t2*4 repetira 4 veces la misma tupla se puede iterar

Las tuplas no tienen metodos asociados, por lo cual si queremos operar en forma flexible, como ordenarlos con sort, o usar cualquier metodo de las listas, habra que convertirlas en listas.

Si tengo la t2 anterior y la quiero convertir a lista

t2=(0, 'Ni', 1.2, 3, 4, 5)

l2=list (t2)

t2=(0, 'Ni', 1.2, 3, 4, 5) t2*4 repetira 4 veces la misma tupla se puede iterar

Con eso creo una lista con el mismo contenido que la tupla original , vemos que esta cerrada entre corchetes, y podre aplicarle los metodos que existen para listas.

Ahora puedo aplicarle por ejemplo el metodo sort para ordenarlo

l2.sort ()

t2=(0, 'Ni', 1.2, 3, 4, 5) t2*4 repetira 4 veces la misma tupla se puede iterar

Y ahora que esta ordenadito puedo transformarlo a tupla nuevamente

t2=tuple (l2)

t2=tuple (l2) Una vez que todo alumno aprende lo que son las tuplas, salta la pregunta

Una vez que todo alumno aprende lo que son las tuplas, salta la pregunta inmediata, porque existen las tuplas si ya existen las listas?

Bueno la respuesta es un poco dificil, muchas son razones historicas de los lenguajes, pero en la practica vemos que a veces en un programa muy extenso trabajar con tuplas nos asegura la inmutabilidad de las mismas y que no haya en el medio una asignacion que cambie un item de la misma, y nos trastoque el programa.

Es a gusto del consumidor hay dos variedades de algo parecido, para que se creo el destornillador tipo philips existiendo el plano, y bueno, son parecidos cumplen una funcion parecida y cada cual colocara tornillos philips o planos según crea mejor, es asi.

En el caso de la programacion, es bueno tener diferentes alternativas y aunque parezcan parecidas, las caracteristicas de inmutabilidad o mutabilidad, o que existan metodos o no, pueden hacer que en algun caso sea mejor usar un tipo de objeto que otro.

Hasta la parte 14 Ricardo Narvaja

14-APRENDIENDO PYTHON DESDE CERO (archivos)

El ultimo tipo de objeto son los archivos y con esto terminamos la enumeracion y la explicacion de cada uno. La mayoria tenemos nocion de los archivos de nuestra PC, compartimientos que alojan informacion en nuestra computadora que son manejados por el sistema operativo. La funcion open que viene incluida en python, crea un objeto archivo, que es un link a un archivo que reside en nuestra maquina. Una vez que llamamos a open, podemos leer y escribir en el archivo externo asociado, gracias a metodos especiales para archivos, que python trae incluidos.

OPEN o FILE (ABRIR O CREAR)

Cuando queremos establecer un link a un archivo existente o crear un nuevo archivo utilizamos el metodo open. (es similar a usar file (), los parametros son los mismos y hacen exactamente lo mismo)

b=open('C:\myfile1', 'w')

14-APRENDIENDO PYTHON DESDE CERO (archivos) El ultimo tipo de objeto son los archivos y con esto

Veo que cree un archivo vacio llamado myfile1, con permiso de escritura (w), y especifique el path,

si no especificara path, lo creara en donde se ejecuta el script.

Bueno alli cree un archivo vacio donde podre escribir, aunque realmente lo que tengo en python es ahora un link a ese archivo, que se mantendra hasta que no lo cierre.

Si escribo ambas lineas en wing en la parte superior, donde se escriben los scripts, para ver la ayudaque me da , vere que al tipear b, que es un objeto archivo y el punto me salen los metodos que puedo aplicarle al archivo.

14-APRENDIENDO PYTHON DESDE CERO (archivos) El ultimo tipo de objeto son los archivos y con esto

Elegimos el metodo write para escribir algo en el archivo, vuelvo a la ventana shell o interactiva, para poder ver los resultados al ir tipeando cada linea.

b=open('C:\myfile1', 'w')

b.write('hello text file\n')

y luego cerramos el link al archivo con lo cual ya no podremos aplicarle metodos a no ser que usemos open en el nuevamente.

b.close ()

Ahora que lo cerre el trabajo esta terminado, si lo arrastro a un bloc de notas vere lo que escribi

b=open('C:\myfile1', 'w') b.write('hello text file\n') y luego cerramos el link al archivo con lo cual ya

Ahora si quiero leer el contenido tendre que reabrirlo, en este caso lo hago con el parametro r o de lectura, El parametro 'r' funciona solo si el archivo ya existe en nuestra maquina en el path correcto, si el archivo no existe dara error al no hallarlo, o sea 'r' no crea un archivo vacio como en el caso de 'w', solo lee lo que ya existe.

a = open('C:\myfile1', 'r')

a.readline()

b=open('C:\myfile1', 'w') b.write('hello text file\n') y luego cerramos el link al archivo con lo cual ya

Con readline leere la primera linea del archivo

b=open('C:\myfile1', 'w') b.write('hello text file\n') y luego cerramos el link al archivo con lo cual ya

Si repito a.readline(), intentara leer la siguiente linea y como no hay mas dara vacio.

a.close ()

Ahora la cierro y le agrego a mano varias lineas mas al archivo, extension txt.

en este caso lo guarde con la

a = open('C:\myfile1.txt', 'r') lo reabro para lectura puedo leer linea a linea a.readline( ) cada

a = open('C:\myfile1.txt', 'r')

lo reabro para lectura

puedo leer linea a linea

a.readline( )

a = open('C:\myfile1.txt', 'r') lo reabro para lectura puedo leer linea a linea a.readline( ) cada

cada vez que hago un readline salta a leer la linea siguiente

a = open('C:\myfile1.txt', 'r') lo reabro para lectura puedo leer linea a linea a.readline( ) cada

puedo crear una lista con las lineas que leo del archivo.

a.readlines( )

a = open('C:\myfile1.txt', 'r') lo reabro para lectura puedo leer linea a linea a.readline( ) cada

Como habia leido ya dos lineas con readline, en este caso readlines continuara donde dejo el puntero de lectura el metodo anterior y creara una lista desde alli hasta el final.

Puedo leer el contenido entero.

S= a.read ()

a = open('C:\myfile1.txt', 'r') lo reabro para lectura puedo leer linea a linea a.readline( ) cada

Veo que tuve que volver a hacer open nuevamente, porque readlines deja el puntero de lectura apuntando al final del archivo, en el siguiente caso tambien lo tuve que hacer.

Puedo leer una cierta cantidad de caracteres

S= a.read (5)

Veo que tuve que volver a hacer open nuevamente, porque readlines deja el puntero de lectura

Si repito veo que lee los cinco siguientes, por lo cual debo tener cuidado al leer porque si el puntero de lectura queda apuntando al medio, pues no podre leer del principio sin resetearlo.

Veo que tuve que volver a hacer open nuevamente, porque readlines deja el puntero de lectura

Si quiero escribir en escritura.

el mismo archivo, tendre que cerrarlo con close y abrirlo nuevamente para

a.close () a = open('C:\myfile1.txt', 'w') a.write('pepito')

Veo que tuve que volver a hacer open nuevamente, porque readlines deja el puntero de lectura

Crearemos el equivalente al comando copy (COPY MENU.TXT MENU.BAK)

# Primero abrir dos archivos para read(r) y write(w)se llamaran menu.txt y menu.bak, el archivo menu.txt debe existir y es el que quiero copiar, el menu.bak lo creara el script.

inp = open("menu.txt","r") outp = open("menu.bak","w")

# leeremos cada linea, copiando cada nueva linea al otro archivo dentro de una

iteracion, line ira tomando los valores de cada linea salida.

y los escribiremos en la

for line in inp:

outp.write(line)

print "1 file copied

"

...

# Ahora cerremos los archivos y listo

inp.close()

outp.close()

ACLARACION IMPORTANTE DEL FUNCIONAMIENTO LOS PARAMETROS DE R W y A

PARAMETRO 'r': Para abrir un archivo que ya existe en nuestra maquina, lo podemos hacer con r, asi lo abriremos para lectura, pero si el archivo no existe no lo creara y nos dara error.

PARAMETRO 'w':Abrira un archivo que ya existe para escribir en el y lo que habia alli antes se perdera, si no existe el archivo se creara vacio.

PARAMETRO 'a' Si el archivo no existe y queremos crearlo nuevo, podemos como vimos usar 'w', pero perderemos su contenido, la otra opcion es usar 'a', tambien si no existe lo creara, y si existe le agregara datos a continuacion de donde termino sin perder la info existente.

Por eso esta variante del script

inp=open("C:\menu.txt","r")

outp=open("C:\menu.bak","a") for line in inp: outp.write(line) print '1 file copied ... '
outp=open("C:\menu.bak","a")
for line in inp:
outp.write(line)
print '1 file copied
...
'

#ahora cerremos los archivos y listo

inp.close()

outp.close()

cada vez que lo usemos ira agregando a continuacion en bak sin perder la info que tenia antes el mismo, siempre apendeando al final lo que haya en menu.txt.

Existen muchos metodos para archivos los cuales probablemente con la ayuda de WING podremos saber facilmente que hace cada uno, es muy probable que un anexo con algunos metodos mas se agregue a esta parte, ustedes pueden tratar de sacarlos y si no pueden revisar los anexos para ver si esta bien lo que hallaron o ayudarse.

Terminamos con los objetos, y su enumeracion, en la parte siguiente seguiremos con otro tema.

Hasta la parte 15 Ricardo Narvaja

Unos pocos métodos que nos faltaban para completar la parte de manejo básico de archivos. Algunos poco útiles otros quiza más…

a.isatty

Nos devuelve True si el archivo esta “conectado” a un dispositivo TTY. Evidentemente en mi caso da False

Unos pocos métodos que nos faltaban para completar la parte de manejo básico de archivos. Algunos

a.seek

Este comando esta relacionado con el read, que ya se vió en la parte principal del curso. Sirve para colocar el puntero de lectura en un byte determinado del documento (ojo este documento hay que abrirlo con permisos suficientes o nos dará error al leer… quedáis avisados.)

Unos pocos métodos que nos faltaban para completar la parte de manejo básico de archivos. Algunos

Como veis hemos colocado el puntero en el 4 byte, y a partir de alli como no hemos especificado un numero de bytes en read hemos leido hasta el final del documento.

Podemos pasarle un segundo parámetro al seek, que puede ser 0, 1 o 2. En el cual especificamos desde donde tiene que empezar a contar los bytes… Por ejemplo, si queremos leer un byte desde el final de nuestro documentousaremos el 2, y como es hacia la izquierda le pasamos una “distancia” negativa( en este ejemplo de

-3)

a.tell Sirve para decirnos el largo del archivo en bytes ...

a.tell

Sirve para decirnos el largo del archivo en bytes ...

a.tell Sirve para decirnos el largo del archivo en bytes ...
a.tell Sirve para decirnos el largo del archivo en bytes ...

a.truncate

Este sirve para especificar cuanto debe de pesar el archivo como máximo en bytes… Por ejemplo…

a.truncate Este sirve para especificar cuanto debe de pesar el archivo como máximo en bytes… Por

Si ahora vamos a C:/ veremos colgando allí nuestro archivo… del cual ha recortado un trozo para que pese exactamente 10 bytes.

a.truncate Este sirve para especificar cuanto debe de pesar el archivo como máximo en bytes… Por

Para terminar una cosita que se nos había pasado en la parte 14, y que a lo mejor debería ir allí, y es como leer un archivo en binario ( por supuesto podemos mover el puntero a lo largo del archivo y leer desde donde queramos. Se hace llamando a open con el parametro ‘rb’, para que se vea mas claro he cogido un .exe que tenía casualmente colgando de C:\

a.truncate Este sirve para especificar cuanto debe de pesar el archivo como máximo en bytes… Por

Y si abrimos el archivo que hemos creado con un editor hex

Hasta la próxima.

Hasta la próxima.

15-APRENDIENDO PYTHON DESDE CERO (comparaciones)

Cualquier objeto de python puede compararse, veremos a continuacion las diferentes posibilidades en las comparaciones.

Abramos el WING o el editor que utilicemos y vayamos a los ejemplos:

En python no debemos confudirnos, el signo igual simple, refiere a la asignacion como hemos visto en las partes anteriores, si yo hago

pepe= '90'

es una asignacion, a la variable pepe, le asigno la string '90', pero existe para las comparaciones el signo de doble igual == que sirve para testear si un objeto es igual a otro y nos devolvera verdadero si lo es o falso, si no es igual.

A= [67,99,'pirulo'] B= [67,99] C=['pirulo']

alli tenemos tres objetos listas, vemos que asignamos valores a cada una de ellas mediante el simple signo igual.

15-APRENDIENDO PYTHON DESDE CERO (comparaciones) Cualquier objeto de python puede compararse, veremos a continuacion las diferentes

Las copio en la ventana interactiva o shell del WING, ahora si comparo A con B a ver si son iguales mediante el doble signo igual

A==B

15-APRENDIENDO PYTHON DESDE CERO (comparaciones) Cualquier objeto de python puede compararse, veremos a continuacion las diferentes

Vemos que al no ser A igual a B, el resultado es False o falso.

Ahora si comparo A con B+C concatenadas, es obvio que el resultado sera True pues es una igualdad ya que a B le faltaba solo el item 'pirulo' y C es justo eso.

15-APRENDIENDO PYTHON DESDE CERO (comparaciones) Cualquier objeto de python puede compararse, veremos a continuacion las diferentes

Por lo tanto el operador == testea si ambos miembros de ña igualdad, tienen el mismo valor.

Existe otro comparador que se utiliza poco pero hay que conocerlo tambien que es el operador

is,
is,

dicho operador testea si ambos objetos son iguales y ademas estan ubicados en el mismo espacio de

memoria del programa, lo cual es poco util pero bueno, jeje.

Existe otro comparador que se utiliza poco pero hay que conocerlo tambien que es el operador

Vemos una comparacion de si d y e son iguales y logicamente son iguales, eso se ve a simple vista,

pero que pasa si usamos

is
is

ademas de comparar si son iguales verifica otros aspectos.

Existe otro comparador que se utiliza poco pero hay que conocerlo tambien que es el operador

En el caso de strings chicas ademas de ser iguales, se ubican en el mismo buffer de memoria y el comando is, nos devuelve que es true.

Existe otro comparador que se utiliza poco pero hay que conocerlo tambien que es el operador

Aquí vemos dos strings grandes h , i que son iguales, pero al ser muy grandes el comando is, no solo verifica que sean iguales como ==, si no que ademas verifica que esten en un mismo cache de memoria, y al ser grandes caen fuera y me puede devolver falso, como en este caso a pesar de ser iguales.

Realmente el chequeo que se usa en todos los programas para igualdad es el signo doble igual, el comando is queda para roles de programacion avanzada, pero bueno al menos conocemos un poco algun caso que nos muestra una diferencia entre ambos, por lo cual vemos que es conveniente usar == para verificar igualdades.

Tambien tenemos en las comparaciones los simbolos de mayor ( >) y menor (<) que nos sirven para determinar si un objeto es mayor o menor que otro.

Si son strings se compararan letra a letra hasta ver si una es mayor que otra.

En este caso

Existe otro comparador que se utiliza poco pero hay que conocerlo tambien que es el operador
Existe otro comparador que se utiliza poco pero hay que conocerlo tambien que es el operador

Compara los primeros caracteres y como ambos son 9 y son iguales, ahi pasa al segundo donde el 8 es menor que 9, por lo tanto ya con eso sale el resultado de que es menor, no siguiendo la

comparacion en los caracteres siguientes. Es similar a la comparacion que se realiza para ubicar las palabras en el diccionario, el mismo criterio de comparacion letra a letra es usado aquí.

comparacion en los caracteres siguientes. Es similar a la comparacion que se realiza para ubicar las

En el caso de objetos como listas se compara item a item, en este caso los dos primeros items son iguales, pero A tiene un tercero que B no tiene lo cual lo hace mas grande.

comparacion en los caracteres siguientes. Es similar a la comparacion que se realiza para ubicar las

En este ejemplo, los primeros items son iguales, en el segundo B es mayor que A por lo cual ya devuelve que es B mayor que A, sin comparar los siguientes items.

Python reconoce otras formas de verdadero y falso, según el tipo de objeto, por ejemplo si un objeto es numerico, si es cero es falso y si es distinto de cero es verdadero. Esto puede servir para iteraciones en donde queremos comparar un indice que va cambiando de valor y queremos terminar de iterar cuando el valor de dicho item sea cero, se puede hacer la comparacion directa contra cero, o se puede verificar si es verdad el resultado, el cual sera verdadero mientras el valor no sea cero.

Veamos ambos ejemplos el primero, comparando si el indice es cero:

x=9

>>> while x>0:

...

print x,

x=x-1

... ... 9 8 7 6 5 4 3 2 1>>>

comparacion en los caracteres siguientes. Es similar a la comparacion que se realiza para ubicar las

Bueno ahi tenemos una iteracion while, que aun no estudiamos pero while significa que va a iterar mientras sea verdadera la condicion que esta al lado, en este caso que x sea mayor que cero.

Como x comienza valiendo nueve y la condicion es verdadera o sea que x es mayor que cero, entrara en el while y loopeara hasta que vaya disminuyendo por el x=x-1 que esta dentro y cuando llegue a cero saldra por que x>0 sera falso.

Una variante de esta iteracion, es imprimir el valor de x cuando salio, para verificar el valor de x en ese momento.

Si armamos un script

x=9

while x>0:

print x,

x=x-1

print 'salimos con x valiendo',x

Si armamos un script x=9 while x>0: print x, x=x-1 print 'salimos con x valiendo',x Si

Si lo debuggeo con STEP INTO o f7, vere como va loopeando escribiendo en la pestaña DEBUG I/O lo que va imprimiendo y en el STACK DATA vere los valores de cada variable como van cambiando, especialmente x que empieza siendo nueve, y va disminuyendo hasta que se hace cero y sale.

Sale del loop cuando x vale cero y imprime el mensaje de salida.

Si armamos un script x=9 while x>0: print x, x=x-1 print 'salimos con x valiendo',x Si

La verdad el cartel de salimos con x valiendo cero, deberia estar en otra linea, lo arreglaremos.

Si armamos un script x=9 while x>0: print x, x=x-1 print 'salimos con x valiendo',x Si

Ahora si al ponerle el \n, salta a la otra linea donde escribe el mensaje de salida.

Es bueno ver que el print del mensaje de salida, debe estar nuevamente en el margen,

Es bueno ver que el print del mensaje de salida, debe estar nuevamente en el margen, sin indentacion, eso significa que se ejecutara cuando salga del while, si le colocara la indentacion que tiene x=x-1, se ejecutara dentro del while y se repetira cada vez que pase por alli en el loop.

Es bueno ver que el print del mensaje de salida, debe estar nuevamente en el margen,

Alli vemos el segundo ejemplo, testea que se repita el loop mientras x sea verdadero, o sea diferente de cero como habiamos visto, en la practica se comporta igual que el caso anterior ya que antes testeaba que fuera verdadera la expresion x>0.

Es bueno ver que el print del mensaje de salida, debe estar nuevamente en el margen,

Los valores numericos se comparan directamente y el mas grande es el mayor, en este caso se ve que la variable y que vale 2 es mas grande que la variable x que vale -1 que es negativo y menor, si pruebo si x es mayor que y el resultado es falso.

Es bueno ver que el print del mensaje de salida, debe estar nuevamente en el margen,

Si aumentamos x para que sea mas negativo en este caso -5, vemos que sigue siendo menor que y que vale 2.

Es bueno ver que el print del mensaje de salida, debe estar nuevamente en el margen,

Ya vimos que los objetos numericos son verdaderos si son diferentes de cero y falsos si son cero, los objetos que no son numericos son verdaderos si su contenido es diferente de vacio, si quiero saber si una lista es verdadera, debera tener algun contenido, la lista vacia [] es falsa.

Alli en la tabla vemos ejemplos de objetos verdaderos y falsos, la string 'spam' como cualquier

Alli en la tabla vemos ejemplos de objetos verdaderos y falsos, la string 'spam' como cualquier otra que tenga contenido es verdadera, mientras que la string “” que es vacia es falsa, asi mismo la lista vacia [] es falsa, el diccionario vacio {} es falso, el numero 1 es verdadero y el 0 es falso, y None que es un objeto especial similar al NULL de C, es tomado