<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;DkMHQH44fyp7ImA9WhRUEU4.&quot;"><id>tag:blogger.com,1999:blog-8402087514691545481</id><updated>2012-01-21T09:27:11.037+01:00</updated><category term="entrada" /><category term="juegos" /><category term="programcion" /><category term="bibliografia" /><category term="asignacion" /><category term="list" /><category term="ayuda" /><category term="intercambio" /><category term="criptography" /><category term="conversion" /><category term="desarrollo" /><category term="pilas" /><category term="lenguaje natural" /><category term="depuracion" /><category term="presentacion" /><category term="none" /><category term="nltk" /><category term="help" /><category term="cadenas" /><category term="string" /><category term="conjuntos" /><category term="list comprenhension" /><category term="rdf" /><category term="operaciones" /><category term="matriz" /><category term="sentencia" /><category term="tuplas" /><category term="try except" /><category term="for" /><category term="tipos" /><category term="chequeo" /><category term="python" /><category term="recurso web" /><category term="class" /><category term="interfaz" /><category term="windows" /><category term="regulares" /><category term="definicion" /><category term="IDLE" /><category term="libro" /><category term="herencia" /><category term="expresiones" /><category term="instalar" /><category term="file" /><category term="vector" /><category term="rdflib" /><category term="if" /><category term="salida" /><category term="while" /><category term="pagina web" /><category term="operadores" /><category term="entornos" /><category term="xml" /><category term="fichero" /><category term="sobrecarga" /><category term="variable" /><category term="lenguaje interpretado" /><category term="listas" /><category term="argumentos variables" /><category term="modulos" /><category term="linea de comandos" /><category term="videotutoriales" /><category term="tutorial" /><category term="random" /><category term="linux hispano" /><category term="ejecutar" /><category term="descargar" /><category term="aplicaciones" /><category term="argumentos" /><category term="documentacion" /><category term="tipo" /><category term="introduccion" /><category term="ejercicios" /><category term="django" /><category term="moviles" /><category term="clases" /><category term="excepcion" /><category term="colas" /><category term="grafica" /><category term="global" /><category term="I/O" /><category term="lxml" /><category term="modulo" /><category term="unix" /><category term="funciones" /><category term="estructura" /><category term="interactiva" /><category term="estandar" /><category term="condicional" /><category term="diccionarios" /><category term="pygame" /><category term="bucle" /><category term="criptografia" /><category term="depurar" /><title>Aprende Python como si estuvieras en primero</title><subtitle type="html" /><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://aprendepython.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://aprendepython.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/8402087514691545481/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Raúl PM</name><uri>http://www.blogger.com/profile/13357136732634502274</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_6HxOwVd7teU/SokcPI5k_JI/AAAAAAAAAAM/3Kq9NAgp2wU/S220/Da_vinci_dragon.jpg" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>54</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/AprendePythonComoSiEstuvierasEnPrimero" /><feedburner:info uri="aprendepythoncomosiestuvierasenprimero" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;Ck8HQ3k4eSp7ImA9WxFQE0g.&quot;"><id>tag:blogger.com,1999:blog-8402087514691545481.post-2381233549478754997</id><published>2010-05-08T22:31:00.000+02:00</published><updated>2010-05-08T22:33:52.731+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-05-08T22:33:52.731+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="lenguaje natural" /><category scheme="http://www.blogger.com/atom/ns#" term="lxml" /><category scheme="http://www.blogger.com/atom/ns#" term="criptography" /><category scheme="http://www.blogger.com/atom/ns#" term="rdflib" /><category scheme="http://www.blogger.com/atom/ns#" term="rdf" /><category scheme="http://www.blogger.com/atom/ns#" term="xml" /><category scheme="http://www.blogger.com/atom/ns#" term="criptografia" /><category scheme="http://www.blogger.com/atom/ns#" term="nltk" /><title>EXTRA: Librerías de procesamiento de lenguaje natural, documentos xml y similares, rdf y módulo de criptografía.</title><content type="html">&lt;p&gt;NLTK (&lt;a title="http://www.nltk.org/book" href="http://www.nltk.org/book"&gt;http://www.nltk.org/book&lt;/a&gt;):&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Librería para procesamiento de lenguaje natural, el tutorial que viene es un libro bastante bien documentado y con muchos ejemplos que sirven de ayuda. Se utiliza entre otras cosas para realizar proyectos de CommonKADS.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;RDFLIB (&lt;a title="http://code.google.com/p/rdflib/wiki/Learning" href="http://code.google.com/p/rdflib/wiki/Learning"&gt;http://code.google.com/p/rdflib/wiki/Learning&lt;/a&gt;):&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Librería para manejar documentos rdf, muy útiles para la creación de web semántica. Mirar los ejemplos para aclarar las dudas que podáis tener. Se utiliza entre otras cosas para realizar proyectos de CommonKADS.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;LXML (&lt;a title="http://codespeak.net/lxml/index.html" href="http://codespeak.net/lxml/index.html"&gt;http://codespeak.net/lxml/index.html&lt;/a&gt;):&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Librería para procesamiento de documentos xml, xslt… utilizando estructura de árbol. Leer el tutorial para más información, vienen ejemplos muy útiles. Se utiliza entre otras cosas para realizar proyectos de CommonKADS.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;PyCrypto (&lt;a title="http://www.dlitz.net/software/pycrypto/" href="http://www.dlitz.net/software/pycrypto/"&gt;http://www.dlitz.net/software/pycrypto/&lt;/a&gt;):&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Librería que contiene varios módulos criptográficos programados con Python. Para más información leer la documentación.&lt;/p&gt;&lt;/blockquote&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8402087514691545481-2381233549478754997?l=aprendepython.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/g7QwPqVO_hx08iXeaAVby5F4q20/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/g7QwPqVO_hx08iXeaAVby5F4q20/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/g7QwPqVO_hx08iXeaAVby5F4q20/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/g7QwPqVO_hx08iXeaAVby5F4q20/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AprendePythonComoSiEstuvierasEnPrimero/~4/kAHHdjwRnkg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://aprendepython.blogspot.com/feeds/2381233549478754997/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://aprendepython.blogspot.com/2010/05/extra-librerias-de-procesamiento.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8402087514691545481/posts/default/2381233549478754997?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8402087514691545481/posts/default/2381233549478754997?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AprendePythonComoSiEstuvierasEnPrimero/~3/kAHHdjwRnkg/extra-librerias-de-procesamiento.html" title="EXTRA: Librerías de procesamiento de lenguaje natural, documentos xml y similares, rdf y módulo de criptografía." /><author><name>Raúl PM</name><uri>http://www.blogger.com/profile/13357136732634502274</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_6HxOwVd7teU/SokcPI5k_JI/AAAAAAAAAAM/3Kq9NAgp2wU/S220/Da_vinci_dragon.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://aprendepython.blogspot.com/2010/05/extra-librerias-de-procesamiento.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0AARH47eip7ImA9WxBVGUs.&quot;"><id>tag:blogger.com,1999:blog-8402087514691545481.post-2596478077055152316</id><published>2010-02-23T22:48:00.000+01:00</published><updated>2010-02-23T22:49:05.002+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-02-23T22:49:05.002+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="pygame" /><category scheme="http://www.blogger.com/atom/ns#" term="tutorial" /><title>EXTRA: Tutoriales Pygame</title><content type="html">&lt;p&gt;Hola de nuevo, os pongo un enlace a otro foro que he visto que tiene un tutorial de Pygame bastante interesante. Es de la página Razón Artificial:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://razonartificial.com/tutoriales-pygame/" href="http://razonartificial.com/tutoriales-pygame/" target="_blank"&gt;http://razonartificial.com/tutoriales-pygame/&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8402087514691545481-2596478077055152316?l=aprendepython.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/WiSxfAzX2cCwo7pfYyUn_ckeWys/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/WiSxfAzX2cCwo7pfYyUn_ckeWys/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/WiSxfAzX2cCwo7pfYyUn_ckeWys/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/WiSxfAzX2cCwo7pfYyUn_ckeWys/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AprendePythonComoSiEstuvierasEnPrimero/~4/4lfMItYTyUI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://aprendepython.blogspot.com/feeds/2596478077055152316/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://aprendepython.blogspot.com/2010/02/extra-tutoriales-pygame.html#comment-form" title="2 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8402087514691545481/posts/default/2596478077055152316?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8402087514691545481/posts/default/2596478077055152316?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AprendePythonComoSiEstuvierasEnPrimero/~3/4lfMItYTyUI/extra-tutoriales-pygame.html" title="EXTRA: Tutoriales Pygame" /><author><name>Raúl PM</name><uri>http://www.blogger.com/profile/13357136732634502274</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_6HxOwVd7teU/SokcPI5k_JI/AAAAAAAAAAM/3Kq9NAgp2wU/S220/Da_vinci_dragon.jpg" /></author><thr:total>2</thr:total><feedburner:origLink>http://aprendepython.blogspot.com/2010/02/extra-tutoriales-pygame.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0ACSHg-fCp7ImA9WxBVGUs.&quot;"><id>tag:blogger.com,1999:blog-8402087514691545481.post-359956248890161649</id><published>2010-02-18T17:04:00.000+01:00</published><updated>2010-02-23T22:49:29.654+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-02-23T22:49:29.654+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="documentacion" /><category scheme="http://www.blogger.com/atom/ns#" term="python" /><title>EXTRA: Documentación en Python</title><content type="html">&lt;p&gt;Hoy buscando información sobre pydoc he encontrado esta entrada en mundogeek. Os la pongo la fuente y le echáis un vistazo:&lt;/p&gt;  &lt;p align="justify"&gt;&lt;a title="http://mundogeek.net/archivos/2008/07/07/documentacion-en-python/" href="http://mundogeek.net/archivos/2008/07/07/documentacion-en-python/" target="_blank"&gt;http://mundogeek.net/archivos/2008/07/07/documentacion-en-python/&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8402087514691545481-359956248890161649?l=aprendepython.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/gDeyevPZf-SUDfq0MD08pD_HtSk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/gDeyevPZf-SUDfq0MD08pD_HtSk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/gDeyevPZf-SUDfq0MD08pD_HtSk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/gDeyevPZf-SUDfq0MD08pD_HtSk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AprendePythonComoSiEstuvierasEnPrimero/~4/HfY7d8KVhaQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://aprendepython.blogspot.com/feeds/359956248890161649/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://aprendepython.blogspot.com/2010/02/extra-documentacion-en-python.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8402087514691545481/posts/default/359956248890161649?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8402087514691545481/posts/default/359956248890161649?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AprendePythonComoSiEstuvierasEnPrimero/~3/HfY7d8KVhaQ/extra-documentacion-en-python.html" title="EXTRA: Documentación en Python" /><author><name>Raúl PM</name><uri>http://www.blogger.com/profile/13357136732634502274</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_6HxOwVd7teU/SokcPI5k_JI/AAAAAAAAAAM/3Kq9NAgp2wU/S220/Da_vinci_dragon.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://aprendepython.blogspot.com/2010/02/extra-documentacion-en-python.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEYFQ304eCp7ImA9WxBXFU0.&quot;"><id>tag:blogger.com,1999:blog-8402087514691545481.post-8233484725802865296</id><published>2010-01-26T12:40:00.000+01:00</published><updated>2010-01-26T12:41:52.330+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-01-26T12:41:52.330+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="libro" /><category scheme="http://www.blogger.com/atom/ns#" term="programcion" /><category scheme="http://www.blogger.com/atom/ns#" term="python" /><title>EXTRA: 500+ libros de programación</title><content type="html">&lt;p&gt;Genial aporte encontrado en la página de gratis programas, yo me los he bajado al instante. Si alguna vez falta alguno no dudeis en pedirlo. También hay libros de Python.&lt;/p&gt;  &lt;p&gt;El enlace es: &lt;a title="http://www.gratisprogramas.org/descargar/50-libros-de-programacion/" href="http://www.gratisprogramas.org/descargar/50-libros-de-programacion/" target="_blank"&gt;http://www.gratisprogramas.org/descargar/50-libros-de-programacion/&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8402087514691545481-8233484725802865296?l=aprendepython.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/cjvI6W_PLPmglY6AcLp_29Y8Il8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/cjvI6W_PLPmglY6AcLp_29Y8Il8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/cjvI6W_PLPmglY6AcLp_29Y8Il8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/cjvI6W_PLPmglY6AcLp_29Y8Il8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AprendePythonComoSiEstuvierasEnPrimero/~4/epjs0tlNHfY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://aprendepython.blogspot.com/feeds/8233484725802865296/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://aprendepython.blogspot.com/2010/01/extra-500-libros-de-programacion.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8402087514691545481/posts/default/8233484725802865296?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8402087514691545481/posts/default/8233484725802865296?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AprendePythonComoSiEstuvierasEnPrimero/~3/epjs0tlNHfY/extra-500-libros-de-programacion.html" title="EXTRA: 500+ libros de programación" /><author><name>Raúl PM</name><uri>http://www.blogger.com/profile/13357136732634502274</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_6HxOwVd7teU/SokcPI5k_JI/AAAAAAAAAAM/3Kq9NAgp2wU/S220/Da_vinci_dragon.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://aprendepython.blogspot.com/2010/01/extra-500-libros-de-programacion.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkICSH4ycSp7ImA9WxBXFU0.&quot;"><id>tag:blogger.com,1999:blog-8402087514691545481.post-5774330830789350400</id><published>2010-01-26T12:16:00.000+01:00</published><updated>2010-01-26T12:16:09.099+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-01-26T12:16:09.099+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="libro" /><category scheme="http://www.blogger.com/atom/ns#" term="python" /><category scheme="http://www.blogger.com/atom/ns#" term="videotutoriales" /><title>EXTRA: Libro y videotutoriales</title><content type="html">Mirando cosas por internet he encontrado esta página que tiene unos enlaces para descargarse el libro &amp;quot;Aprende Python&amp;quot; y que supuestamente contiene también algunos videotutoriales.  &lt;br /&gt;  &lt;br /&gt;Si queréis echarle un vistazo para seguir ampliando conocimientos esta es la dirección:  &lt;br /&gt;  &lt;br /&gt;&lt;a href="http://www.aprenderpython.com/python/?p=823" target="_blank"&gt;http://www.aprenderpython.com/python/?p=823&lt;/a&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8402087514691545481-5774330830789350400?l=aprendepython.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/qppkEKZExPMCjOcHeK9iBZcZITQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/qppkEKZExPMCjOcHeK9iBZcZITQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/qppkEKZExPMCjOcHeK9iBZcZITQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/qppkEKZExPMCjOcHeK9iBZcZITQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AprendePythonComoSiEstuvierasEnPrimero/~4/VUi4g4SM0OE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://aprendepython.blogspot.com/feeds/5774330830789350400/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://aprendepython.blogspot.com/2010/01/extra-libro-y-videotutoriales.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8402087514691545481/posts/default/5774330830789350400?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8402087514691545481/posts/default/5774330830789350400?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AprendePythonComoSiEstuvierasEnPrimero/~3/VUi4g4SM0OE/extra-libro-y-videotutoriales.html" title="EXTRA: Libro y videotutoriales" /><author><name>Raúl PM</name><uri>http://www.blogger.com/profile/13357136732634502274</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_6HxOwVd7teU/SokcPI5k_JI/AAAAAAAAAAM/3Kq9NAgp2wU/S220/Da_vinci_dragon.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://aprendepython.blogspot.com/2010/01/extra-libro-y-videotutoriales.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUQAQnc6eCp7ImA9WxBQGUQ.&quot;"><id>tag:blogger.com,1999:blog-8402087514691545481.post-8598715146692700390</id><published>2010-01-20T15:15:00.001+01:00</published><updated>2010-01-20T15:22:23.910+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-01-20T15:22:23.910+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="modulos" /><category scheme="http://www.blogger.com/atom/ns#" term="python" /><title>EXTRA: 50 módulos Python para todas las necesidades</title><content type="html">&lt;p align="justify"&gt;Aquí os dejo unos cuantos módulos de Python que pueden ser bastante útiles pero a un nivel alto de programación.&lt;/p&gt;  &lt;p align="justify"&gt; &lt;/p&gt;  &lt;table border="0" cellpadding="2" cellspacing="0" width="400"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="133"&gt;Graphical interface&lt;/td&gt;        &lt;td valign="top" width="133"&gt;wxPython&lt;/td&gt;        &lt;td valign="top" width="133"&gt;&lt;a href="http://wxpython.org/"&gt;http://wxpython.org&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="133"&gt;Graphical interface&lt;/td&gt;        &lt;td valign="top" width="133"&gt;pyGtk&lt;/td&gt;        &lt;td valign="top" width="133"&gt;&lt;a href="http://www.pygtk.org/"&gt;http://www.pygtk.org&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="133"&gt;Graphical interface&lt;/td&gt;        &lt;td valign="top" width="133"&gt;pyQT&lt;/td&gt;        &lt;td valign="top" width="133"&gt;&lt;a href="http://www.riverbankcomputing.co.uk/pyqt/"&gt;http://www.riverbankcomputing.co.uk/pyqt/&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="133"&gt;Graphical interface&lt;/td&gt;        &lt;td valign="top" width="133"&gt;Pmw&lt;/td&gt;        &lt;td valign="top" width="133"&gt;&lt;a href="http://pmw.sourceforge.net/"&gt;http://pmw.sourceforge.net/&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="133"&gt;Graphical interface&lt;/td&gt;        &lt;td valign="top" width="133"&gt;Tkinter 3000&lt;/td&gt;        &lt;td valign="top" width="133"&gt;&lt;a href="http://effbot.org/zone/wck.htm"&gt;http://effbot.org/zone/wck.htm&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="133"&gt;Graphical interface&lt;/td&gt;        &lt;td valign="top" width="133"&gt;Tix&lt;/td&gt;        &lt;td valign="top" width="133"&gt;&lt;a href="http://tix.sourceforge.net/"&gt;http://tix.sourceforge.net/&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="133"&gt;Database&lt;/td&gt;        &lt;td valign="top" width="133"&gt;MySQLdb&lt;/td&gt;        &lt;td valign="top" width="133"&gt;&lt;a href="http://sourceforge.net/projects/mysql-python"&gt;http://sourceforge.net/projects/mysql-python&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="133"&gt;Database&lt;/td&gt;        &lt;td valign="top" width="133"&gt;PyGreSQL&lt;/td&gt;        &lt;td valign="top" width="133"&gt;&lt;a href="http://www.pygresql.org/"&gt;http://www.pygresql.org/&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="133"&gt;Database&lt;/td&gt;        &lt;td valign="top" width="133"&gt;Gadfly&lt;/td&gt;        &lt;td valign="top" width="133"&gt;&lt;a href="http://gadfly.sourceforge.net/"&gt;http://gadfly.sourceforge.net/&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="133"&gt;Database&lt;/td&gt;        &lt;td valign="top" width="133"&gt;SQLAlchemy&lt;/td&gt;        &lt;td valign="top" width="133"&gt;&lt;a href="http://www.sqlalchemy.org/"&gt;http://www.sqlalchemy.org/&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="133"&gt;Database&lt;/td&gt;        &lt;td valign="top" width="133"&gt;psycopg&lt;/td&gt;        &lt;td valign="top" width="133"&gt;&lt;a href="http://www.initd.org/pub/software/psycopg/"&gt;http://www.initd.org/pub/software/psycopg/&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="133"&gt;Database&lt;/td&gt;        &lt;td valign="top" width="133"&gt;kinterbasdb&lt;/td&gt;        &lt;td valign="top" width="133"&gt;&lt;a href="http://kinterbasdb.sourceforge.net/"&gt;http://kinterbasdb.sourceforge.net/&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="133"&gt;Database&lt;/td&gt;        &lt;td valign="top" width="133"&gt;cx_Oracle&lt;/td&gt;        &lt;td valign="top" width="133"&gt;&lt;a href="http://www.cxtools.net/default.aspx?nav=downloads"&gt;http://www.cxtools.net/default.aspx?nav=downloads&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="133"&gt;Database&lt;/td&gt;        &lt;td valign="top" width="133"&gt;pySQLite&lt;/td&gt;        &lt;td valign="top" width="133"&gt;&lt;a href="http://initd.org/tracker/pysqlite"&gt;http://initd.org/tracker/pysqlite&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="133"&gt;MSN Messenger&lt;/td&gt;        &lt;td valign="top" width="133"&gt;msnlib&lt;/td&gt;        &lt;td valign="top" width="133"&gt;&lt;a href="http://auriga.wearlab.de/%7Ealb/msnlib/"&gt;http://auriga.wearlab.de/~alb/msnlib/&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="133"&gt;MSN Messenger&lt;/td&gt;        &lt;td valign="top" width="133"&gt;pymsn&lt;/td&gt;        &lt;td valign="top" width="133"&gt;&lt;a href="http://telepathy.freedesktop.org/wiki/Pymsn"&gt;http://telepathy.freedesktop.org/wiki/Pymsn&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="133"&gt;MSN Messenger&lt;/td&gt;        &lt;td valign="top" width="133"&gt;msnp&lt;/td&gt;        &lt;td valign="top" width="133"&gt;&lt;a href="http://msnp.sourceforge.net/"&gt;http://msnp.sourceforge.net/&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="133"&gt;Network&lt;/td&gt;        &lt;td valign="top" width="133"&gt;Twisted&lt;/td&gt;        &lt;td valign="top" width="133"&gt;&lt;a href="http://twistedmatrix.com/"&gt;http://twistedmatrix.com/&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="133"&gt;Images&lt;/td&gt;        &lt;td valign="top" width="133"&gt;PIL&lt;/td&gt;        &lt;td valign="top" width="133"&gt;&lt;a href="http://www.pythonware.com/products/pil/"&gt;http://www.pythonware.com/products/pil/&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="133"&gt;Images&lt;/td&gt;        &lt;td valign="top" width="133"&gt;gdmodule&lt;/td&gt;        &lt;td valign="top" width="133"&gt;&lt;a href="http://newcenturycomputers.net/projects/gdmodule.html"&gt;http://newcenturycomputers.net/projects/gdmodule.html&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="133"&gt;Images&lt;/td&gt;        &lt;td valign="top" width="133"&gt;VideoCapture&lt;/td&gt;        &lt;td valign="top" width="133"&gt;&lt;a href="http://videocapture.sourceforge.net/"&gt;http://videocapture.sourceforge.net/&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="133"&gt;Sciences and Maths&lt;/td&gt;        &lt;td valign="top" width="133"&gt;scipy&lt;/td&gt;        &lt;td valign="top" width="133"&gt;&lt;a href="http://www.scipy.org/"&gt;http://www.scipy.org/&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="133"&gt;Sciences and Maths&lt;/td&gt;        &lt;td valign="top" width="133"&gt;NumPy&lt;/td&gt;        &lt;td valign="top" width="133"&gt;&lt;a href="http://numpy.scipy.org/"&gt;http://numpy.scipy.org//&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="133"&gt;Sciences and Maths&lt;/td&gt;        &lt;td valign="top" width="133"&gt;numarray&lt;/td&gt;        &lt;td valign="top" width="133"&gt;&lt;a href="http://www.stsci.edu/resources/software_hardware/numarray"&gt;http://www.stsci.edu/resources/software_hardware/numarray&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="133"&gt;Sciences and Maths&lt;/td&gt;        &lt;td valign="top" width="133"&gt;matplotlib&lt;/td&gt;        &lt;td valign="top" width="133"&gt;&lt;a href="http://matplotlib.sourceforge.net/"&gt;http://matplotlib.sourceforge.net/&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="133"&gt;Games&lt;/td&gt;        &lt;td valign="top" width="133"&gt;Pygame&lt;/td&gt;        &lt;td valign="top" width="133"&gt;&lt;a href="http://www.pygame.org/news.html"&gt;http://www.pygame.org/news.html&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="133"&gt;Games&lt;/td&gt;        &lt;td valign="top" width="133"&gt;Pyglet&lt;/td&gt;        &lt;td valign="top" width="133"&gt;&lt;a href="http://www.pyglet.org/"&gt;http://www.pyglet.org/&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="133"&gt;Games&lt;/td&gt;        &lt;td valign="top" width="133"&gt;PySoy&lt;/td&gt;        &lt;td valign="top" width="133"&gt;&lt;a href="http://www.pysoy.org/"&gt;http://www.pysoy.org/&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="133"&gt;Games&lt;/td&gt;        &lt;td valign="top" width="133"&gt;pyOpenGL&lt;/td&gt;        &lt;td valign="top" width="133"&gt;&lt;a href="http://pyopengl.sourceforge.net/"&gt;http://pyopengl.sourceforge.net/&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="133"&gt;Jabber&lt;/td&gt;        &lt;td valign="top" width="133"&gt;jabberpy&lt;/td&gt;        &lt;td valign="top" width="133"&gt;&lt;a href="http://jabberpy.sourceforge.net/"&gt;http://jabberpy.sourceforge.net/&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="133"&gt;Web&lt;/td&gt;        &lt;td valign="top" width="133"&gt;scrape&lt;/td&gt;        &lt;td valign="top" width="133"&gt;&lt;a href="http://zesty.ca/python/scrape.html"&gt;http://zesty.ca/python/scrape.html&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="133"&gt;Web&lt;/td&gt;        &lt;td valign="top" width="133"&gt;Beautiful Soup&lt;/td&gt;        &lt;td valign="top" width="133"&gt;&lt;a href="http://crummy.com/software/BeautifulSoup"&gt;http://crummy.com/software/BeautifulSoup&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="133"&gt;Web&lt;/td&gt;        &lt;td valign="top" width="133"&gt;pythonweb&lt;/td&gt;        &lt;td valign="top" width="133"&gt;&lt;a href="http://www.pythonweb.org/"&gt;http://www.pythonweb.org/&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="133"&gt;Web&lt;/td&gt;        &lt;td valign="top" width="133"&gt;mechanize&lt;/td&gt;        &lt;td valign="top" width="133"&gt;&lt;a href="http://wwwsearch.sourceforge.net/mechanize/"&gt;http://wwwsearch.sourceforge.net/mechanize/&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="133"&gt;Localisation&lt;/td&gt;        &lt;td valign="top" width="133"&gt;geoname.py&lt;/td&gt;        &lt;td valign="top" width="133"&gt;&lt;a href="http://www.zindep.com/blog-zindep/Geoname-python/"&gt;http://www.zindep.com/blog-zindep/Geoname-python/&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="133"&gt;Serial port&lt;/td&gt;        &lt;td valign="top" width="133"&gt;pySerial&lt;/td&gt;        &lt;td valign="top" width="133"&gt;&lt;a href="http://pyserial.sourceforge.net/"&gt;http://pyserial.sourceforge.net/&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="133"&gt;Serial port&lt;/td&gt;        &lt;td valign="top" width="133"&gt;USPP&lt;/td&gt;        &lt;td valign="top" width="133"&gt;&lt;a href="http://ibarona.googlepages.com/uspp"&gt;http://ibarona.googlepages.com/uspp&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="133"&gt;Parallel Port&lt;/td&gt;        &lt;td valign="top" width="133"&gt;pyParallel&lt;/td&gt;        &lt;td valign="top" width="133"&gt;&lt;a href="http://pyserial.sourceforge.net/pyparallel.html"&gt;http://pyserial.sourceforge.net/pyparallel.html&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="133"&gt;USB Port&lt;/td&gt;        &lt;td valign="top" width="133"&gt;pyUSB&lt;/td&gt;        &lt;td valign="top" width="133"&gt;&lt;a href="http://bleyer.org/pyusb/"&gt;http://bleyer.org/pyusb/&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="133"&gt;Windows&lt;/td&gt;        &lt;td valign="top" width="133"&gt;ctypes&lt;/td&gt;        &lt;td valign="top" width="133"&gt;&lt;a href="http://starship.python.net/crew/theller/ctypes/"&gt;http://starship.python.net/crew/theller/ctypes/&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="133"&gt;Windows&lt;/td&gt;        &lt;td valign="top" width="133"&gt;pywin32&lt;/td&gt;        &lt;td valign="top" width="133"&gt;&lt;a href="http://sourceforge.net/projects/pywin32/"&gt;http://sourceforge.net/projects/pywin32/&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="133"&gt;Windows&lt;/td&gt;        &lt;td valign="top" width="133"&gt;pywinauto&lt;/td&gt;        &lt;td valign="top" width="133"&gt;&lt;a href="http://www.openqa.org/pywinauto/"&gt;http://www.openqa.org/pywinauto/&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="133"&gt;Windows&lt;/td&gt;        &lt;td valign="top" width="133"&gt;pyrtf&lt;/td&gt;        &lt;td valign="top" width="133"&gt;&lt;a href="http://pyrtf.sourceforge.net/"&gt;http://pyrtf.sourceforge.net/&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="133"&gt;Windows&lt;/td&gt;        &lt;td valign="top" width="133"&gt;wmi&lt;/td&gt;        &lt;td valign="top" width="133"&gt;&lt;a href="http://timgolden.me.uk/python/wmi.html"&gt;http://timgolden.me.uk/python/wmi.html&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="133"&gt;PDA/GSM/Mobiles&lt;/td&gt;        &lt;td valign="top" width="133"&gt;pymo&lt;/td&gt;        &lt;td valign="top" width="133"&gt;&lt;a href="http://www.awaretek.com/pymo.html"&gt;http://www.awaretek.com/pymo.html&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="133"&gt;PDA/GSM/Mobiles&lt;/td&gt;        &lt;td valign="top" width="133"&gt;pyS60&lt;/td&gt;        &lt;td valign="top" width="133"&gt;&lt;a href="http://sourceforge.net/projects/pys60"&gt;http://sourceforge.net/projects/pys60&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="133"&gt;Sound&lt;/td&gt;        &lt;td valign="top" width="133"&gt;pySoundic&lt;/td&gt;        &lt;td valign="top" width="133"&gt;&lt;a href="http://pysonic.sourceforge.net/"&gt;http://pysonic.sourceforge.net/&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="133"&gt;Sound&lt;/td&gt;        &lt;td valign="top" width="133"&gt;pyMedia&lt;/td&gt;        &lt;td valign="top" width="133"&gt;&lt;a href="http://pymedia.org/"&gt;http://pymedia.org/&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="133"&gt;Sound&lt;/td&gt;        &lt;td valign="top" width="133"&gt;FMOD&lt;/td&gt;        &lt;td valign="top" width="133"&gt;&lt;a href="http://www.fmod.org/"&gt;http://www.fmod.org/&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="133"&gt;Sound&lt;/td&gt;        &lt;td valign="top" width="133"&gt;pyMIDI&lt;/td&gt;        &lt;td valign="top" width="133"&gt;&lt;a href="http://www.cs.unc.edu/Research/assist/developer.shtml"&gt;http://www.cs.unc.edu/Research/assist/developer.shtml&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="133"&gt;Gmail&lt;/td&gt;        &lt;td valign="top" width="133"&gt;libgmail&lt;/td&gt;        &lt;td valign="top" width="133"&gt;&lt;a href="http://libgmail.sourceforge.net/"&gt;http://libgmail.sourceforge.net/&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="133"&gt;Google&lt;/td&gt;        &lt;td valign="top" width="133"&gt;pyGoogle&lt;/td&gt;        &lt;td valign="top" width="133"&gt;&lt;a href="http://pygoogle.sourceforge.net/"&gt;http://pygoogle.sourceforge.net/&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="133"&gt;Expect&lt;/td&gt;        &lt;td valign="top" width="133"&gt;pyExpect&lt;/td&gt;        &lt;td valign="top" width="133"&gt;&lt;a href="http://pexpect.sourceforge.net/"&gt;http://pexpect.sourceforge.net/&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="133"&gt;WordNet&lt;/td&gt;        &lt;td valign="top" width="133"&gt;pyWordNet&lt;/td&gt;        &lt;td valign="top" width="133"&gt;&lt;a href="http://osteele.com/projects/pywordnet/"&gt;http://osteele.com/projects/pywordnet/&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="133"&gt;Command line&lt;/td&gt;        &lt;td valign="top" width="133"&gt;cmd&lt;/td&gt;        &lt;td valign="top" width="133"&gt;&lt;a href="http://blog.doughellmann.com/2008/05/pymotw-cmd.html"&gt;http://blog.doughellmann.com/2008/05/pymotw-cmd.html&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="133"&gt;Compiler backend&lt;/td&gt;        &lt;td valign="top" width="133"&gt;llvm-py&lt;/td&gt;        &lt;td valign="top" width="133"&gt;&lt;a href="http://mdevan.nfshost.com/llvm-py/"&gt;http://mdevan.nfshost.com/llvm-py/&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="133"&gt;3D&lt;/td&gt;        &lt;td valign="top" width="133"&gt;VPython&lt;/td&gt;        &lt;td valign="top" width="133"&gt;&lt;a href="http://vpython.org/"&gt;http://vpython.org&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p align="justify"&gt;   &lt;/p&gt;&lt;p align="justify"&gt;&lt;a href="http://vpython.org/"&gt;&lt;/a&gt;&lt;/p&gt;   &lt;b&gt;Fuente:&lt;/b&gt; &lt;a href="http://www.catswhocode.com/blog/python-50-modules-for-all-needs"&gt;http://www.catswhocode.com/blog/python-50-modules-for-all-needs&lt;/a&gt;, último acceso 16/01/2010.&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8402087514691545481-8598715146692700390?l=aprendepython.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/cvVxJl7LNqDvAq62dMILdqRp03s/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/cvVxJl7LNqDvAq62dMILdqRp03s/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/cvVxJl7LNqDvAq62dMILdqRp03s/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/cvVxJl7LNqDvAq62dMILdqRp03s/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AprendePythonComoSiEstuvierasEnPrimero/~4/5q-pJCycN34" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://aprendepython.blogspot.com/feeds/8598715146692700390/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://aprendepython.blogspot.com/2010/01/extra-50-modulos-python-para-todas-las.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8402087514691545481/posts/default/8598715146692700390?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8402087514691545481/posts/default/8598715146692700390?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AprendePythonComoSiEstuvierasEnPrimero/~3/5q-pJCycN34/extra-50-modulos-python-para-todas-las.html" title="EXTRA: 50 módulos Python para todas las necesidades" /><author><name>Raúl PM</name><uri>http://www.blogger.com/profile/13357136732634502274</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_6HxOwVd7teU/SokcPI5k_JI/AAAAAAAAAAM/3Kq9NAgp2wU/S220/Da_vinci_dragon.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://aprendepython.blogspot.com/2010/01/extra-50-modulos-python-para-todas-las.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUQGRnoyfip7ImA9WxBQGUQ.&quot;"><id>tag:blogger.com,1999:blog-8402087514691545481.post-3272773652882773897</id><published>2010-01-20T15:00:00.001+01:00</published><updated>2010-01-20T15:22:07.496+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-01-20T15:22:07.496+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="aplicaciones" /><category scheme="http://www.blogger.com/atom/ns#" term="moviles" /><category scheme="http://www.blogger.com/atom/ns#" term="python" /><title>EXTRA: Aplicaciones para móviles en Python</title><content type="html">&lt;p align="justify"&gt;Aquí algo diferente para el blog, son algunas aplicaciones para móviles que están hechas en Python.&lt;/p&gt;  &lt;p&gt;Esta página (&lt;a href="http://www.personal.able.es/orbital/Python/python.htm"&gt;http://www.personal.able.es/orbital/Python/python.htm&lt;/a&gt;, último acceso 16/01/2010) está hecha por un hombre que desarrolla aplicaciones con Python, os recomiendo que le echéis un vistazo, está bastante interesante.&lt;/p&gt;  &lt;p align="justify"&gt;Niime Fusion: aplicación que usa el móvil como si fuera el mando de la Wii y sustituye al ratón del ordenador. Aquí os dejo el enlace: &lt;a href="http://niime-fusion.softonic.com/symbian"&gt;http://niime-fusion.softonic.com/symbian&lt;/a&gt;, último acceso 16/01/2010.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8402087514691545481-3272773652882773897?l=aprendepython.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/YkBiaQQAhvxZZ9FGj8L51630P4I/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/YkBiaQQAhvxZZ9FGj8L51630P4I/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/YkBiaQQAhvxZZ9FGj8L51630P4I/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/YkBiaQQAhvxZZ9FGj8L51630P4I/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AprendePythonComoSiEstuvierasEnPrimero/~4/IImNPk8jLAQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://aprendepython.blogspot.com/feeds/3272773652882773897/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://aprendepython.blogspot.com/2010/01/extra-aplicaciones-para-moviles-en.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8402087514691545481/posts/default/3272773652882773897?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8402087514691545481/posts/default/3272773652882773897?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AprendePythonComoSiEstuvierasEnPrimero/~3/IImNPk8jLAQ/extra-aplicaciones-para-moviles-en.html" title="EXTRA: Aplicaciones para móviles en Python" /><author><name>Raúl PM</name><uri>http://www.blogger.com/profile/13357136732634502274</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_6HxOwVd7teU/SokcPI5k_JI/AAAAAAAAAAM/3Kq9NAgp2wU/S220/Da_vinci_dragon.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://aprendepython.blogspot.com/2010/01/extra-aplicaciones-para-moviles-en.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D08HRXc7fSp7ImA9WxFRE0Q.&quot;"><id>tag:blogger.com,1999:blog-8402087514691545481.post-4859926942826198095</id><published>2010-01-20T10:08:00.001+01:00</published><updated>2010-04-27T21:17:14.905+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-04-27T21:17:14.905+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="linux hispano" /><category scheme="http://www.blogger.com/atom/ns#" term="django" /><category scheme="http://www.blogger.com/atom/ns#" term="python" /><title>EXTRA: Django. Presentación, introducción y ejemplo de desarrollo</title><content type="html">&lt;p align="justify"&gt;Aquí os dejo una entrada que contiene una presentación con ejemplos de Django, es algo bastante básico como la entrada de Pygame, pero os puede ayudar también a meteros en este mundillo de desarrollo de aplicaciones web e investigar si os gusta.&lt;/p&gt;  &lt;p align="justify"&gt;El documento está hecho por un par de compañeros de 1º de Ingeniería Informática, &lt;strong&gt;José Antonio Sánchez Pallero y &lt;a href="http://www.linuxhispano.net/author/carazo/" target="_blank"&gt;Francisco Javier Carazo Gil&lt;/a&gt;&lt;/strong&gt;. &lt;/p&gt;  &lt;p align="justify"&gt;&lt;a href="http://www.djangoproject.com/"&gt;&lt;img title="django-logo" alt="" src="http://www.linuxhispano.net/wp-content/uploads/2010/01/django-logo.png" height="182" width="396" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;Hemos tratado de transmitir una idea general acerca de &lt;a href="http://es.wikipedia.org/wiki/Django"&gt;&lt;strong&gt;Django&lt;/strong&gt;&lt;/a&gt;, &lt;strong&gt;el framework libre basado en Python orientado a la creación rápida de aplicaciones web&lt;/strong&gt;. Al final del mismo y para completar la explicación, presentamos un pequeño ejemplo de desarrollo haciendo uso de esta herramienta.&lt;/p&gt;  &lt;p align="justify"&gt;Toda persona que haya tenido contacto con el desarrollo web, &lt;strong&gt;sabrá de los inconvenientes&lt;/strong&gt; que crean temas como: el control de las entradas del usuario, la interacción con la base de datos, la creación de direcciones amigables para los buscadores (tan necesario para &lt;a href="http://es.wikipedia.org/wiki/Search_engine_optimization"&gt;el SEO&lt;/a&gt;), la modificación de las estructuras de datos una vez creadas o la definición de distintos roles de permisos para los usuarios del sistema.&lt;/p&gt;  &lt;p align="justify"&gt;&lt;strong&gt;Todo este tipo de problemas los soluciona &lt;/strong&gt;&lt;a href="http://es.wikipedia.org/wiki/Django"&gt;&lt;strong&gt;Django&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt; de una manera muy intuitiva&lt;/strong&gt;, con la potencia añadida de un lenguaje tan amable y completo como &lt;a href="http://es.wikipedia.org/wiki/Python"&gt;Python&lt;/a&gt;.&lt;/p&gt;  &lt;p align="justify"&gt;A continuación os dejo la presentación y adjunto también capturas de pantalla del ejemplo desarrollado y &lt;a href="http://raules.wikispaces.com/file/view/ejemploDjango.tar.gz/137618571/ejemploDjango.tar.gz"&gt;el código fuente del ejemplo para descargar&lt;/a&gt;. Los objetivos y la funcionalidad del ejemplo están comentados en la presentación; la implementación en sí está explicada en los comentarios directamente en el código.&lt;/p&gt;  &lt;div align="justify"&gt;   &lt;div id="__ss_2986673" style="width: 417px; height: 392px; text-align: left;"&gt;&lt;a title="Django - Plataforma de sitios web" style="margin: 12px 0px 3px; display: block; font: 14px helvetica,arial,sans-serif; text-decoration: underline;" href="http://www.slideshare.net/jcarazo/django-plataforma-de-sitios-web"&gt;Django - Plataforma de sitios web&lt;/a&gt;&lt;object style="margin: 0px;" height="355" width="425"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=djangopa0910-100125054751-phpapp02&amp;amp;stripped_title=django-plataforma-de-sitios-web"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=djangopa0910-100125054751-phpapp02&amp;amp;stripped_title=django-plataforma-de-sitios-web" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="340" width="410"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt; &lt;/div&gt;  &lt;ul&gt;   &lt;li&gt;     &lt;div align="justify"&gt;&lt;a href="http://raules.wikispaces.com/file/view/ejemploDjango.tar.gz/137618571/ejemploDjango.tar.gz"&gt;&lt;strong&gt;Descargar: ejemploDjango.tar.gz (código fuente del ejemplo)&lt;/strong&gt;&lt;/a&gt; &lt;/div&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p align="justify"&gt;&lt;em&gt;Los datos personales que aparecen en los ejemplos son inventados. Algunos datos sobre grupos y centros de investigación sí son reales.&lt;/em&gt;&lt;/p&gt;  &lt;p align="justify"&gt;&lt;strong&gt;Vista índice&lt;/strong&gt;&lt;/p&gt;  &lt;p align="justify"&gt;&lt;strong&gt;&lt;a href="http://www.linuxhispano.net/wp-content/uploads/2010/01/vista_indice.png"&gt;&lt;img title="vista_indice" alt="" src="http://www.linuxhispano.net/wp-content/uploads/2010/01/vista_indice-e1264591596180.png" height="171" width="450" /&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p align="justify"&gt;&lt;strong&gt;Vista Instituto&lt;/strong&gt;&lt;/p&gt;  &lt;p align="justify"&gt;&lt;a href="http://www.linuxhispano.net/wp-content/uploads/2010/01/vista_instituto-e1264591776909.png"&gt;&lt;img title="vista_instituto" alt="" src="http://www.linuxhispano.net/wp-content/uploads/2010/01/vista_instituto-e1264591776909.png" height="168" width="449" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;&lt;strong&gt;Vista grupo&lt;/strong&gt;&lt;/p&gt;  &lt;p align="justify"&gt;&lt;em&gt;&lt;a href="http://www.linuxhispano.net/wp-content/uploads/2010/01/vista_grupo1.png"&gt;&lt;img title="vista_grupo" alt="" src="http://www.linuxhispano.net/wp-content/uploads/2010/01/vista_grupo1-e1264592489739.png" height="170" width="450" /&gt;&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p align="justify"&gt;Por último comentar que el compañero &lt;a href="http://www.linuxhispano.net/author/carazo/" target="_blank"&gt;Francisco Javier Carazo Gil&lt;/a&gt; es otro de los que postean en el famoso blog &lt;a href="http://www.linuxhispano.net/"&gt;Linux Hispano&lt;/a&gt;  que ya os comenté en la entrada de Pygame, donde suelen poner noticias e información de interés tecnológico.&lt;/p&gt;  &lt;p align="justify"&gt;PD: espero que él también nos haga un poco de publicidad en sus publicaciones. :P&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8402087514691545481-4859926942826198095?l=aprendepython.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/TbEL4HRshFVMNrbu62kkKYZclo4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/TbEL4HRshFVMNrbu62kkKYZclo4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/TbEL4HRshFVMNrbu62kkKYZclo4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/TbEL4HRshFVMNrbu62kkKYZclo4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AprendePythonComoSiEstuvierasEnPrimero/~4/XT8zo1kx2pM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://aprendepython.blogspot.com/feeds/4859926942826198095/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://aprendepython.blogspot.com/2010/01/extra-django-presentacion-introduccion.html#comment-form" title="5 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8402087514691545481/posts/default/4859926942826198095?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8402087514691545481/posts/default/4859926942826198095?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AprendePythonComoSiEstuvierasEnPrimero/~3/XT8zo1kx2pM/extra-django-presentacion-introduccion.html" title="EXTRA: Django. Presentación, introducción y ejemplo de desarrollo" /><author><name>Raúl PM</name><uri>http://www.blogger.com/profile/13357136732634502274</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_6HxOwVd7teU/SokcPI5k_JI/AAAAAAAAAAM/3Kq9NAgp2wU/S220/Da_vinci_dragon.jpg" /></author><thr:total>5</thr:total><feedburner:origLink>http://aprendepython.blogspot.com/2010/01/extra-django-presentacion-introduccion.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkAGRX4yfyp7ImA9WxBXFk8.&quot;"><id>tag:blogger.com,1999:blog-8402087514691545481.post-5909407723704489502</id><published>2010-01-20T09:00:00.001+01:00</published><updated>2010-01-27T20:32:04.097+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-01-27T20:32:04.097+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="pygame" /><category scheme="http://www.blogger.com/atom/ns#" term="linux hispano" /><category scheme="http://www.blogger.com/atom/ns#" term="python" /><category scheme="http://www.blogger.com/atom/ns#" term="juegos" /><category scheme="http://www.blogger.com/atom/ns#" term="introduccion" /><title>EXTRA: Introducción a Pygame</title><content type="html">&lt;p align="justify"&gt;Aquí os dejo una entrada que trata sobre una introducción a Pygame, es algo bastante básico pero os puede ayudar a meteros en el mundillo e investigar si os gusta.&lt;/p&gt;  &lt;p align="justify"&gt;El documento está hecho por un compañero de 1º de Ingeniería Informática, Alberto Hornero Luque.&lt;/p&gt;  &lt;p align="justify"&gt; &lt;/p&gt;  &lt;p align="justify"&gt;&lt;img class="aligncenter size-full wp-image-1387" title="pygame_logo" style="display: block; float: none; margin-left: auto; margin-right: auto;" alt="" src="http://www.linuxhispano.net/wp-content/uploads/2010/01/pygame_logo.gif" height="60" width="200" /&gt; &lt;/p&gt;  &lt;p align="justify"&gt;A través de esta entrada vamos a introducirnos en el mundo del desarrollo de aplicaciones gráficas usando una librería llamada &lt;strong&gt;&lt;em&gt;pygame &lt;/em&gt;&lt;/strong&gt;que nos proporciona las herramientas necesarias para crear de forma relativamente sencilla nuestros juegos en el lenguaje de programación &lt;strong&gt;Python&lt;/strong&gt;. &lt;/p&gt;  &lt;h1 align="justify"&gt;&lt;strong&gt;¿Qué es Pygame?&lt;/strong&gt;&lt;/h1&gt;  &lt;p align="justify"&gt;&lt;em&gt;Pygame &lt;/em&gt;es un conjunto de módulos que nos ayudan a crear videojuegos o aplicaciones gráficas (no necesariamente videojuegos) en dos dimensiones. &lt;em&gt;Pygame &lt;/em&gt;incluye gráficos y bibliotecas de sonido diseñados para ser utilizados directamente bajo &lt;strong&gt;Python&lt;/strong&gt;. Está construido bajo Simple DirectMedia Layer (&lt;strong&gt;SDL&lt;/strong&gt;), que a su vez son un conjunto de bibliotecas desarrolladas en &lt;strong&gt;lenguaje C&lt;/strong&gt;, proporcionando las funciones básicas para realizar operaciones de dibujado 2D, gestión de efectos de sonido y música, y carga y gestión de imágenes. De esta manera, a través de &lt;em&gt;Pygame &lt;/em&gt;podemos abstraernos de la lógica del juego (o aplicación) en si mismo, haciendo posible el uso de un lenguaje de alto nivel como Python para estructurar el juego.&lt;/p&gt;  &lt;p align="justify"&gt;&lt;em&gt;Pygame &lt;/em&gt;fue contruido como sustituto de &lt;a href="http://sourceforge.net/projects/pysdl/" target="_blank"&gt;pySDL&lt;/a&gt;, después del poco éxito del mismo, ya que la forma de interactuar no llegó a recoger tantas opciones y tan simples como las del entorno de &lt;em&gt;Pygame&lt;/em&gt;.&lt;/p&gt;  &lt;p align="justify"&gt;Escrito originalmente por Shinners Pete se distribuye bajo la &lt;em&gt;GNU Lesser General Public License&lt;/em&gt;. Desde 2004 se trata de un proyecto de código abierto de la comunidad de software libre. &lt;/p&gt;  &lt;h1 align="justify"&gt;Instalando Pygame y el entorno&lt;/h1&gt;  &lt;p align="justify"&gt;Antes de comenzar a ver una serie de ejemplos generales a modo de introducción en el mundo de &lt;em&gt;Pygame &lt;/em&gt;vamos a configurar nuestro sistema para poder importar los módulos de &lt;em&gt;Pygame &lt;/em&gt;desde Python, como cualquier otra librería.&lt;/p&gt;  &lt;p align="justify"&gt;La instalación es bastante simple. Suponiendo que nuestro sistema corre una distribución basada en &lt;strong&gt;Debian &lt;/strong&gt;y que ya corre la versión más reciente de Python, de tal forma bastará con usar un gestor de paquetes e instalar el paquete &lt;em&gt;&lt;strong&gt;python-pygame&lt;/strong&gt;&lt;/em&gt; y satisfacer todas sus dependencias. Así, y de la forma más intuitiva usaremos las dos vías principales, usando el adminstrador de paquetes en modo texto APT y su versión gráfica &lt;strong&gt;Synaptic&lt;/strong&gt;.&lt;/p&gt;  &lt;p align="justify"&gt;En el primero de los casos la instalación es bastante sencilla, abrimos un terminal y ejecutando como superusuario (&lt;em&gt;root&lt;/em&gt;) lanzamos la herramienta apt-get como se indica a continuación y cómo se observa en la &lt;strong&gt;figura 1&lt;/strong&gt;. &lt;/p&gt;  &lt;blockquote&gt;   &lt;p align="justify"&gt;&lt;em&gt;$ sudo apt-get install python-pygame&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p align="justify"&gt;Y nos preguntará si deseamos instalar todos los paquetes anexos y dependencias, a lo que responderemos afirmativamente.&lt;/p&gt;  &lt;p align="justify"&gt;&lt;img class="size-full wp-image-1370" title="pygame_terminal" style="display: inline; margin-left: 0px; margin-right: 0px;" alt="" src="http://www.linuxhispano.net/wp-content/uploads/2010/01/pygame_terminal.png" height="205" width="524" /&gt;Figura 1: Instalación mediante el gestor de paquetes APT&lt;/p&gt;  &lt;p style="text-align: center;" align="justify"&gt;&lt;/p&gt;  &lt;p align="justify"&gt;Usando el gestor de paquetes &lt;em&gt;Synaptic &lt;/em&gt;la operación es similar, nos dirigimos a &lt;em&gt;System → Administration → Synaptic Package Manager&lt;/em&gt;, localizamos el paquete &lt;strong&gt;&lt;em&gt;python-pygame&lt;/em&gt;&lt;/strong&gt; y lo marcamos para instalar, cómo se muestra en la &lt;strong&gt;figura 2&lt;/strong&gt;. Aplicamos los cambios aceptando todas las dependencias y listo, ya tenemos nuestro entorno preparado nuestro entornor para empezar a trabajar con &lt;em&gt;Pygame&lt;/em&gt;.&lt;/p&gt;  &lt;p align="justify"&gt;&lt;img class="size-full wp-image-1371 " title="pygame_synaptic" alt="" src="http://www.linuxhispano.net/wp-content/uploads/2010/01/pygame_synaptic.png" width="500" /&gt;Figura 2: Instalación mediante el gestor de paquetes Synaptic&lt;/p&gt;  &lt;p align="justify"&gt;Uno de mis entornos de programación preferidos es Geany, un IDE desarrollado en GTK y que se define así mismo como: A fast and lightweight IDE. Aconsejo su uso ya que nos resultará bastante sencillo probar los ejemplos planteados.&lt;/p&gt;  &lt;p align="justify"&gt;Para su instalación, y de forma análoga a &lt;em&gt;Pygame&lt;/em&gt;, localizaremos el paquete geany y satisfaceremos sus dependencias si se precisan, así con APT y cómo se muestra en la &lt;strong&gt;figura 3&lt;/strong&gt;: &lt;/p&gt;  &lt;blockquote&gt;   &lt;p align="justify"&gt;&lt;em&gt;$ sudo apt-get install geany&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p align="justify"&gt;&lt;img class="size-full wp-image-1381" title="pygame_geany" alt="" src="http://www.linuxhispano.net/wp-content/uploads/2010/01/pygame_geany.png" height="231" width="492" /&gt;Figura 3: Instalación del IDE Geany&lt;/p&gt;  &lt;h1 align="justify"&gt;Nuestro primer programa...&lt;/h1&gt;  &lt;p align="justify"&gt;Vamos a proceder con un ejemplo muy básico de uso. Abrimos nuestro &lt;strong&gt;IDE de Python (Geany)&lt;/strong&gt; y probamos con el siguiente código, en este se dibujará un fondo sobre una ventana y dos lineas diagonales que cruzarán los extremos de izquierdas a derechas y de arriba a abajo y al contrario. Así, el código comentado: &lt;/p&gt;  &lt;blockquote&gt;   &lt;p align="justify"&gt;&lt;em&gt;# -*- coding: utf-8 –*-&lt;/em&gt; &lt;/p&gt;    &lt;p align="justify"&gt;&lt;em&gt;# Importamos las librería de Pygame y las del sistema, necesarias para forzar el cierre&lt;/em&gt;&lt;/p&gt;    &lt;p align="justify"&gt;&lt;em&gt;import pygame, sys&lt;/em&gt;&lt;/p&gt;    &lt;p align="justify"&gt;&lt;em&gt;from pygame.locals &lt;/em&gt;&lt;em&gt;import *&lt;/em&gt;&lt;/p&gt;    &lt;p align="justify"&gt;&lt;em&gt;# Inicializamos Pygame&lt;/em&gt;&lt;/p&gt;    &lt;p align="justify"&gt;&lt;em&gt;pygame.init()&lt;/em&gt;&lt;/p&gt;    &lt;p align="justify"&gt;&lt;em&gt;# Definimos el color de fondo y el de la diagonal COLOR_FONDO = (50, 150, 200)&lt;/em&gt;&lt;/p&gt;    &lt;p align="justify"&gt;&lt;em&gt;COLOR_LINEA1 = (255, 0, 0)&lt;/em&gt;&lt;/p&gt;    &lt;p align="justify"&gt;&lt;em&gt;COLOR_LINEA2 = (0, 0, 255)&lt;/em&gt;&lt;/p&gt;    &lt;p align="justify"&gt;&lt;em&gt;# Definimos el tamaño de la aplicación y la tasa de refresco&lt;/em&gt;&lt;/p&gt;    &lt;p align="justify"&gt;&lt;em&gt;pantalla = pygame.display.set_mode((800, 600))&lt;/em&gt;&lt;/p&gt;    &lt;p align="justify"&gt;&lt;em&gt;refresco = pygame.time.Clock()&lt;/em&gt;&lt;/p&gt;    &lt;p align="justify"&gt;&lt;em&gt;while True: time_passed = refresco.tick(30)&lt;/em&gt;&lt;/p&gt;    &lt;p align="justify"&gt;&lt;em&gt;# Comprobamos el cierre de la aplicación y en caso afirmativo lanzamos la función salir&lt;/em&gt;&lt;/p&gt;    &lt;p align="justify"&gt;&lt;em&gt;for event in pygame.event.get():&lt;/em&gt;&lt;/p&gt;    &lt;p align="justify"&gt;&lt;em&gt;   if event.type == QUIT:&lt;/em&gt;&lt;/p&gt;    &lt;p align="justify"&gt;&lt;em&gt;      sys.exit()&lt;/em&gt;&lt;/p&gt;    &lt;p align="justify"&gt;&lt;em&gt;# Fijamos el color de fondo y las lineas de diferentes colores, y lo sacamos por display&lt;/em&gt;&lt;/p&gt;    &lt;p align="justify"&gt;&lt;em&gt;pantalla.fill(COLOR_FONDO)&lt;/em&gt;&lt;/p&gt;    &lt;p align="justify"&gt;&lt;em&gt;pygame.draw.aaline(pantalla, COLOR_LINEA1, (1, 1), (799, 599))&lt;/em&gt;&lt;/p&gt;    &lt;p align="justify"&gt;&lt;em&gt;pygame.draw.aaline(pantalla, COLOR_LINEA2, (799, 1), (1, 599))&lt;/em&gt;&lt;/p&gt;    &lt;p align="justify"&gt;&lt;em&gt;pygame.display.flip()&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p align="justify"&gt;&lt;strong&gt;&lt;em&gt;NOTA&lt;/em&gt;&lt;/strong&gt;&lt;em&gt;: Para lanzar directamente la aplicación desde el &lt;strong&gt;IDE Geany&lt;/strong&gt; podemos hacerlo pulsando &lt;/em&gt;F5 &lt;em&gt;o desde el icono designado para esta operación.&lt;/em&gt;&lt;/p&gt;  &lt;p align="justify"&gt;De esta forma, el resultado que obtenemos tras ejecutar nuestra primera aplicación es el mostrado en la &lt;strong&gt;figura 4&lt;/strong&gt;.&lt;/p&gt;  &lt;p align="justify"&gt;&lt;img class="size-medium wp-image-1380 " title="pygame_primer_programa" alt="" src="http://www.linuxhispano.net/wp-content/uploads/2010/01/pygame_primer_programa-300x209.png" width="500" /&gt;Figura 4: Ejecutando nuestro primer programa &lt;/p&gt;  &lt;p style="text-align: center;" align="justify"&gt;&lt;/p&gt;  &lt;h1 align="justify"&gt;Controlando los eventos&lt;/h1&gt;  &lt;p align="justify"&gt;Es posible que al empezar en la programación de aplicaciones gráficas mediante &lt;em&gt;Pygame &lt;/em&gt;nos surjan dudas acerca del manejo de eventos a través del programa desarrollado. Es por ello que vamos a dedicar este pequeño apartado a tratar de aclarar las diferentes maneras que tenemos para registrar los eventos que se suceden en nuestra aplicación.&lt;/p&gt;  &lt;p align="justify"&gt;Será importante diferenciar los métodos que pueden ayudarnos a registrarlos a guardarlos de una forma temporal antes de ser analizados. Así: &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;     &lt;div align="justify"&gt;&lt;strong&gt;pygame.event.get:&lt;/strong&gt; Obtenemos los eventos mediante una cola. Esta función es la usada en el ejemplo anterior, de forma que definimos un tiempo de refresco a partir del cual recorremos los eventos registrados y ejecutamos sus acciones asociadas. Esta es quizás la forma más común de registro de eventos no forzado, y de esta manera no nos obliga a realizar una pulsación o control del flujo del programa en un punto. &lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;&lt;strong&gt;pygame.event.poll:&lt;/strong&gt; Obtenemos un evento simple de la cola. Simplemente es capaz de guardar el último evento sucedido. Resulta práctica cuando únicamente queremos dejar constancia de un evento registrado en un intervalo de tiempo definido. &lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;&lt;strong&gt;pygame.event.wait:&lt;/strong&gt; Espera un evento de la cola. Este lo he usado en el ejemplo planteado a continuación, de forma que podamos ir viendo algunos de los eventos que podemos controlar así como estudiar las posibilidades que nos ofrece esta vía de registrar eventos. &lt;/div&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p align="justify"&gt;Podemos ver el resto de eventos accesibles por teclado en el siguiente enlace: &lt;a href="http://www.pygame.org/docs/ref/key.html" target="_blank"&gt;Documentación oficial de Python&lt;/a&gt;. El ejemplo que muestra su uso, a continuación: &lt;/p&gt;  &lt;blockquote&gt;   &lt;p align="justify"&gt;&lt;em&gt;# -*- coding: utf-8 –*-&lt;/em&gt;&lt;/p&gt;    &lt;p align="justify"&gt;&lt;em&gt;import pygame from pygame.locals import *&lt;/em&gt;&lt;/p&gt;    &lt;p align="justify"&gt;&lt;em&gt;pygame.init()&lt;/em&gt;&lt;/p&gt;    &lt;p align="justify"&gt;&lt;em&gt;pygame.display.set_mode((200, 200))&lt;/em&gt;&lt;/p&gt;    &lt;p align="justify"&gt;&lt;em&gt;pygame.display.flip()&lt;/em&gt;&lt;/p&gt;    &lt;p align="justify"&gt;&lt;em&gt;event = pygame.event.poll()&lt;/em&gt;&lt;/p&gt;    &lt;p align="justify"&gt;&lt;em&gt;while True:&lt;/em&gt;&lt;/p&gt;    &lt;blockquote&gt;     &lt;p align="justify"&gt;&lt;em&gt;cursor = pygame.mouse.get_pos()&lt;/em&gt;&lt;/p&gt;      &lt;p align="justify"&gt;&lt;em&gt;evento = pygame.event.wait()&lt;/em&gt;&lt;/p&gt;      &lt;p align="justify"&gt;&lt;em&gt;if evento.type == QUIT or evento.type == K_ESCAPE:&lt;/em&gt;&lt;/p&gt;      &lt;p align="justify"&gt;&lt;em&gt;    print "Has abandonado la aplicación"&lt;/em&gt;&lt;/p&gt;      &lt;p align="justify"&gt;&lt;em&gt;    raise SystemExit&lt;/em&gt;&lt;/p&gt;      &lt;p align="justify"&gt;&lt;em&gt;if pygame.mouse.get_pressed()[0]:&lt;/em&gt;&lt;/p&gt;      &lt;p align="justify"&gt;&lt;em&gt;    print "Has usado el botón izquierdo del ratón"&lt;/em&gt;&lt;/p&gt;      &lt;p align="justify"&gt;&lt;em&gt;if pygame.mouse.get_pressed()[1]:&lt;/em&gt;&lt;/p&gt;      &lt;p align="justify"&gt;&lt;em&gt;    print "Has usado el botón central del ratón"&lt;/em&gt;&lt;/p&gt;      &lt;p align="justify"&gt;&lt;em&gt;if pygame.mouse.get_pressed()[2]:&lt;/em&gt;&lt;/p&gt;      &lt;p align="justify"&gt;&lt;em&gt;    print "Has usado el botón derecho del ratón"&lt;/em&gt;&lt;/p&gt;      &lt;p align="justify"&gt;&lt;em&gt;if evento.type == KEYDOWN and evento.key == K_SPACE:&lt;/em&gt;&lt;/p&gt;      &lt;p align="justify"&gt;&lt;em&gt;    print "Has pulsado espacio"&lt;/em&gt;&lt;/p&gt;      &lt;p align="justify"&gt;&lt;em&gt;if evento.type == KEYDOWN and evento.key == K_BACKSPACE:&lt;/em&gt;&lt;/p&gt;      &lt;p align="justify"&gt;&lt;em&gt;    print "Has pulsado backspace"&lt;/em&gt;&lt;/p&gt;   &lt;/blockquote&gt; &lt;/blockquote&gt;  &lt;p align="justify"&gt;&lt;em&gt;&lt;span style="font-style: normal;"&gt;La &lt;strong&gt;figura 5&lt;/strong&gt; muestra su ejecución:&lt;/span&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p align="justify"&gt;&lt;em&gt;&lt;span style="font-style: normal;"&gt;&lt;/span&gt;&lt;/em&gt;&lt;img class="size-full wp-image-1383 " title="pygame_eventos" alt="" src="http://www.linuxhispano.net/wp-content/uploads/2010/01/pygame_eventos.png" width="550" /&gt;Figura 5: Controlando los eventos de la aplicación&lt;/p&gt;  &lt;h1 align="justify"&gt;&lt;em&gt;&lt;span style="font-style: normal;"&gt;Más figuras e imágenes&lt;/span&gt;&lt;/em&gt;&lt;/h1&gt;  &lt;p align="justify"&gt;&lt;em&gt;&lt;span style="font-style: normal;"&gt;Al estar basado en &lt;/span&gt;&lt;span style="font-style: normal;"&gt;&lt;strong&gt;SDL&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-style: normal;"&gt;, &lt;/span&gt;&lt;span style="font-style: normal;"&gt;Pygame &lt;/span&gt;&lt;span style="font-style: normal;"&gt;tiene la capacidad de poder mostrar imágenes así como formas básica de una forma casi trivial, las primitivas que se encargan de realizar estas operaciones las comentamos en el siguiente ejemplo y vemos su resultado:&lt;/span&gt;&lt;/em&gt; &lt;/p&gt;  &lt;blockquote&gt;   &lt;p align="justify"&gt;&lt;em&gt;# -*- coding: utf-8 –*-&lt;/em&gt;&lt;/p&gt;    &lt;p align="justify"&gt;&lt;em&gt;# Importamos las librería de Pygame y las del sistema, necesarias para forzar el cierre&lt;/em&gt;&lt;/p&gt;    &lt;p align="justify"&gt;&lt;em&gt;import pygame from pygame.locals import *&lt;/em&gt;&lt;/p&gt;    &lt;p align="justify"&gt;&lt;em&gt;# Inicializamos&lt;/em&gt;&lt;/p&gt;    &lt;p align="justify"&gt;&lt;em&gt;Pygame pygame.init()&lt;/em&gt;&lt;/p&gt;    &lt;p align="justify"&gt;&lt;em&gt;# Definimos el color de fondo y el de las figuras&lt;/em&gt;&lt;/p&gt;    &lt;p align="justify"&gt;&lt;em&gt;COLOR_FONDO = (50, 100, 50)&lt;/em&gt;&lt;/p&gt;    &lt;p align="justify"&gt;&lt;em&gt;COLOR_CUADRADO = (255, 0, 0)&lt;/em&gt;&lt;/p&gt;    &lt;p align="justify"&gt;&lt;em&gt;COLOR_CIRCULO = (0, 0, 255)&lt;/em&gt;&lt;/p&gt;    &lt;p align="justify"&gt;&lt;em&gt;# Cargamos la imagen y hacemos transparente el fondo (antes verde)&lt;/em&gt;&lt;/p&gt;    &lt;p align="justify"&gt;&lt;em&gt;imagen_nave = pygame.image.load('nave.bmp')&lt;/em&gt;&lt;/p&gt;    &lt;p align="justify"&gt;&lt;em&gt;imagen_nave.set_colorkey((0, 255, 0))&lt;/em&gt;&lt;/p&gt;    &lt;p align="justify"&gt;&lt;em&gt;# Definimos el tamaño de la aplicación y la tasa de refresco&lt;/em&gt;&lt;/p&gt;    &lt;p align="justify"&gt;&lt;em&gt;pantalla = pygame.display.set_mode((800, 600))&lt;/em&gt;&lt;/p&gt;    &lt;p align="justify"&gt;&lt;em&gt;while True:&lt;/em&gt;&lt;/p&gt;    &lt;blockquote&gt;     &lt;p align="justify"&gt;&lt;em&gt;time_passed = pygame.time.Clock().tick(30)&lt;/em&gt;&lt;/p&gt;      &lt;p align="justify"&gt;&lt;em&gt;# Comprobamos el cierre de la aplicación y en caso afirmativo lanzamos la función salir&lt;/em&gt;&lt;/p&gt;      &lt;p align="justify"&gt;&lt;em&gt;for event in pygame.event.get():&lt;/em&gt;&lt;/p&gt;      &lt;p align="justify"&gt;&lt;em&gt;    if event.type == QUIT:&lt;/em&gt;&lt;/p&gt;      &lt;p align="justify"&gt;&lt;em&gt;         raise SystemExit&lt;/em&gt;&lt;/p&gt;      &lt;p align="justify"&gt;&lt;em&gt;# Fijamos el color de fondo y dibujamos las figuras y la imagen&lt;/em&gt;&lt;/p&gt;      &lt;p align="justify"&gt;&lt;em&gt;pantalla.fill(COLOR_FONDO)&lt;/em&gt;&lt;/p&gt;      &lt;p align="justify"&gt;&lt;em&gt;pygame.draw.rect(pantalla, COLOR_CUADRADO, (50, 50, 100, 100))&lt;/em&gt;&lt;/p&gt;      &lt;p align="justify"&gt;&lt;em&gt;pygame.draw.circle(pantalla, COLOR_CIRCULO, (400, 300), 75 )&lt;/em&gt;&lt;/p&gt;      &lt;p align="justify"&gt;&lt;em&gt;pantalla.blit(imagen_nave, (500, 400))&lt;/em&gt;&lt;/p&gt;      &lt;p align="justify"&gt;&lt;em&gt;# Actualizamos la pantalla&lt;/em&gt;&lt;/p&gt;      &lt;p align="justify"&gt;&lt;em&gt;pygame.display.flip()&lt;/em&gt;&lt;/p&gt;   &lt;/blockquote&gt; &lt;/blockquote&gt;  &lt;p align="justify"&gt;&lt;em&gt;&lt;strong&gt;NOTA&lt;/strong&gt;: Podemos ver cómo al no disponer de transparencia la imagen de la nave se la fijamos mediante el método set_colorkey().&lt;/em&gt;&lt;/p&gt;  &lt;p align="justify"&gt;Y el resultado lo podemos ver en la &lt;strong&gt;figura 6&lt;/strong&gt;.&lt;/p&gt;  &lt;p align="justify"&gt;&lt;img class="size-medium wp-image-1384 " title="pygame_figuras" alt="" src="http://www.linuxhispano.net/wp-content/uploads/2010/01/pygame_figuras-300x191.png" width="450" /&gt;Figura 6: Ejemplo con figuras e imágenes&lt;/p&gt;  &lt;h1 align="justify"&gt;Y el sonido&lt;/h1&gt;  &lt;p align="justify"&gt;Para terminar con esta introducción a Pygame vamos a realizar un test de sonido, para lo cual usaremos la el módulo mixer. El ejemplo: &lt;/p&gt;  &lt;blockquote&gt;   &lt;p align="justify"&gt;&lt;em&gt;# -*- coding: utf-8 –*-&lt;/em&gt;&lt;/p&gt;    &lt;p align="justify"&gt;&lt;em&gt;import pygame, os from pygame.locals import *&lt;/em&gt;&lt;/p&gt;    &lt;p align="justify"&gt;&lt;em&gt;# Iniciamos el módulo &lt;/em&gt;&lt;em&gt;mixer&lt;/em&gt;&lt;/p&gt;    &lt;p align="justify"&gt;&lt;em&gt;pygame.mixer.init()&lt;/em&gt;&lt;/p&gt;    &lt;p align="justify"&gt;&lt;em&gt;# Cargamos la pista de audio haciendo uso del sistema, mediante el cual podemos indicar rutas relativas sin dependencia del sistema operativo&lt;/em&gt;&lt;/p&gt;    &lt;p align="justify"&gt;&lt;em&gt;pygame.mixer.music.load(os.path.join("1vs0_JuniorGroove.ogg"))&lt;/em&gt;&lt;/p&gt;    &lt;p align="justify"&gt;&lt;em&gt;# Y reproducimos la pista cargada de forma continua, valor -1&lt;/em&gt;&lt;/p&gt;    &lt;p align="justify"&gt;&lt;em&gt;pygame.mixer.music.play(-1)&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p align="justify"&gt;Podéis consultar el resto de opciones desde la &lt;a href="http://www.pygame.org/docs/ref/mixer.html" target="_blank"&gt;documentación de Python&lt;/a&gt;.&lt;/p&gt;  &lt;p align="justify"&gt;&lt;strong&gt;&lt;em&gt;NOTA&lt;/em&gt;&lt;/strong&gt;&lt;em&gt;: La pista de audio utilizada tiene licencia Creative Commons, &lt;a href="http://01audiovideo.free.fr/ogg/1vs0_JuniorGroove.ogg" target="_blank"&gt;1vs0 – Junior Groove&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;  &lt;h1 align="justify"&gt;&lt;em&gt;&lt;span style="font-style: normal;"&gt;Bibliografía&lt;/span&gt;&lt;/em&gt;&lt;/h1&gt;  &lt;ul&gt;   &lt;li&gt;     &lt;div align="justify"&gt;&lt;a href="http://www.koders.com/python/fidAFB2ABFFF98CE27FCF61D63A217756C7BD7B0A2F.aspx?s=pygame#L10" target="_blank"&gt;Koders.com&lt;/a&gt;&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;&lt;a href="http://en.wikipedia.org/wiki/Pygame" target="_blank"&gt;Wikipedia.org&lt;/a&gt;&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;&lt;a href="http://sourceforge.net/projects/pysdl/" target="_blank"&gt;SourceForge [pySDL]&lt;/a&gt;&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;&lt;a href="http://code.activestate.com/recipes/521884/" target="_blank"&gt;ActiveState.com&lt;/a&gt;&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;&lt;a href="http://www.01audio-video.com/download_ogg.htm" target="_blank"&gt;01audio-video.com [OGG Files]&lt;/a&gt;&lt;/div&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;Por último comentar que este compañero es uno de los que postean en el famoso blog &lt;a href="http://www.linuxhispano.net/" target="_blank"&gt;Linux Hispano&lt;/a&gt; donde suelen poner noticias e información de interés tecnológico.&lt;/p&gt;  &lt;p&gt;PD: espero que él nos haga también un poco de publicidad. :P&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8402087514691545481-5909407723704489502?l=aprendepython.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/1WGQRcJXMO9wHeaEZY_QFX8VGEc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/1WGQRcJXMO9wHeaEZY_QFX8VGEc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/1WGQRcJXMO9wHeaEZY_QFX8VGEc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/1WGQRcJXMO9wHeaEZY_QFX8VGEc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AprendePythonComoSiEstuvierasEnPrimero/~4/pIkryPK7SW0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://aprendepython.blogspot.com/feeds/5909407723704489502/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://aprendepython.blogspot.com/2010/01/extra-introduccion-pygame.html#comment-form" title="4 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8402087514691545481/posts/default/5909407723704489502?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8402087514691545481/posts/default/5909407723704489502?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AprendePythonComoSiEstuvierasEnPrimero/~3/pIkryPK7SW0/extra-introduccion-pygame.html" title="EXTRA: Introducción a Pygame" /><author><name>Raúl PM</name><uri>http://www.blogger.com/profile/13357136732634502274</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_6HxOwVd7teU/SokcPI5k_JI/AAAAAAAAAAM/3Kq9NAgp2wU/S220/Da_vinci_dragon.jpg" /></author><thr:total>4</thr:total><feedburner:origLink>http://aprendepython.blogspot.com/2010/01/extra-introduccion-pygame.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUUHSHw5eCp7ImA9WxBQGUQ.&quot;"><id>tag:blogger.com,1999:blog-8402087514691545481.post-7339090227369660810</id><published>2010-01-20T07:59:00.002+01:00</published><updated>2010-01-20T15:20:39.220+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-01-20T15:20:39.220+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="desarrollo" /><category scheme="http://www.blogger.com/atom/ns#" term="python" /><category scheme="http://www.blogger.com/atom/ns#" term="entornos" /><title>EXTRA: Entornos de desarrollo para Python</title><content type="html">&lt;p align="justify"&gt;Aquí os dejo otro documento en el que se muestran algunos de los entornos de desarrollo en los que podéis programar en Python, quizás hubiese sido más útil al principio pero bueno, para el que quiera seguir programando que los pruebe por si hay alguno que le guste más. &lt;/p&gt;  &lt;p align="justify"&gt;El documento está hecho por un compañero de 1º de Ingeniería Informática, José María Higuera Cerezo. &lt;/p&gt;  &lt;p align="justify"&gt;Este es el enlace al documento: &lt;a href="http://docs.google.com/fileview?id=0B-0znb6O943IZDIwZDkxMTQtNzY3Mi00Y2ExLTllYjAtYzBkZDUzNjE4ZTgy&amp;amp;hl=en"&gt;http://docs.google.com/fileview?id=0B-0znb6O943IZDIwZDkxMTQtNzY3Mi00Y2ExLTllYjAtYzBkZDUzNjE4ZTgy&amp;amp;hl=en&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8402087514691545481-7339090227369660810?l=aprendepython.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/p4Jr49olvrOYPGLoJlkxjYzidSY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/p4Jr49olvrOYPGLoJlkxjYzidSY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/p4Jr49olvrOYPGLoJlkxjYzidSY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/p4Jr49olvrOYPGLoJlkxjYzidSY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AprendePythonComoSiEstuvierasEnPrimero/~4/bEGY_sowd4Q" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://aprendepython.blogspot.com/feeds/7339090227369660810/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://aprendepython.blogspot.com/2010/01/entornos-de-desarrollo-para-python.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8402087514691545481/posts/default/7339090227369660810?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8402087514691545481/posts/default/7339090227369660810?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AprendePythonComoSiEstuvierasEnPrimero/~3/bEGY_sowd4Q/entornos-de-desarrollo-para-python.html" title="EXTRA: Entornos de desarrollo para Python" /><author><name>Raúl PM</name><uri>http://www.blogger.com/profile/13357136732634502274</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_6HxOwVd7teU/SokcPI5k_JI/AAAAAAAAAAM/3Kq9NAgp2wU/S220/Da_vinci_dragon.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://aprendepython.blogspot.com/2010/01/entornos-de-desarrollo-para-python.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUUBQn8-eCp7ImA9WxBQGUQ.&quot;"><id>tag:blogger.com,1999:blog-8402087514691545481.post-1776246478179037346</id><published>2010-01-20T07:57:00.001+01:00</published><updated>2010-01-20T15:20:53.150+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-01-20T15:20:53.150+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="grafica" /><category scheme="http://www.blogger.com/atom/ns#" term="python" /><category scheme="http://www.blogger.com/atom/ns#" term="interfaz" /><title>EXTRA: Interfaces gráficas con Python</title><content type="html">&lt;p align="justify"&gt;Aquí os dejo un documento en el que se muestran algunos ejemplos de cómo hacer interfaces gráficas con diferentes programas y entornos (TkInter, PyGTK, PyQT, WxPython).&lt;/p&gt;  &lt;p align="justify"&gt;El documento está hecho por un compañero de 1º de Ingeniería Informática, David López Fernández.&lt;/p&gt;  &lt;p align="justify"&gt;Este es el enlace al documento: &lt;a href="http://docs.google.com/fileview?id=0B-0znb6O943IZjA2YzczMmEtMjYzZS00YmFlLWEwOTctYzZjZTRhOTM0YWI4&amp;amp;hl=en"&gt;http://docs.google.com/fileview?id=0B-0znb6O943IZjA2YzczMmEtMjYzZS00YmFlLWEwOTctYzZjZTRhOTM0YWI4&amp;amp;hl=en&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8402087514691545481-1776246478179037346?l=aprendepython.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/X_roq8auen-CtlrBxenq0mXRSEo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/X_roq8auen-CtlrBxenq0mXRSEo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/X_roq8auen-CtlrBxenq0mXRSEo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/X_roq8auen-CtlrBxenq0mXRSEo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AprendePythonComoSiEstuvierasEnPrimero/~4/prN1hmNFAho" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://aprendepython.blogspot.com/feeds/1776246478179037346/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://aprendepython.blogspot.com/2010/01/interfaces-graficas-con-python.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8402087514691545481/posts/default/1776246478179037346?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8402087514691545481/posts/default/1776246478179037346?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AprendePythonComoSiEstuvierasEnPrimero/~3/prN1hmNFAho/interfaces-graficas-con-python.html" title="EXTRA: Interfaces gráficas con Python" /><author><name>Raúl PM</name><uri>http://www.blogger.com/profile/13357136732634502274</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_6HxOwVd7teU/SokcPI5k_JI/AAAAAAAAAAM/3Kq9NAgp2wU/S220/Da_vinci_dragon.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://aprendepython.blogspot.com/2010/01/interfaces-graficas-con-python.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUQCQ306cCp7ImA9WxBQGUQ.&quot;"><id>tag:blogger.com,1999:blog-8402087514691545481.post-2632089802974203045</id><published>2010-01-19T15:00:00.001+01:00</published><updated>2010-01-20T15:22:42.318+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-01-20T15:22:42.318+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="IDLE" /><category scheme="http://www.blogger.com/atom/ns#" term="python" /><category scheme="http://www.blogger.com/atom/ns#" term="depuracion" /><category scheme="http://www.blogger.com/atom/ns#" term="depurar" /><title>Depuración en Python con IDLE</title><content type="html">&lt;p align="justify"&gt;A la hora de programar, cualquier programa que haga un gran número de operaciones delicadas necesitará de una buena herramienta de depuración para solventar los posibles errores que vayan apareciendo. El lenguaje de programación Python incluye un módulo propio de depuración: &lt;strong&gt;pdb&lt;/strong&gt; (Python DeBugger), pero como en todos los lenguajes, si utilizamos una herramienta gráfica para el proceso de depuración del programa, seguramente ahorraremos mucho tiempo. A continuación explicaré los fundamentos básicos para depurar nuestros programas Python con el editor &lt;strong&gt;IDLE&lt;/strong&gt;, el cual podremos adquirir fácilmente para cualquier distribución.&lt;/p&gt;  &lt;h4 align="justify"&gt;Activación del depurador&lt;/h4&gt;  &lt;p align="justify"&gt;Para activar el modo de depuración en IDLE tan solo haremos click en el menú &lt;strong&gt;Debug&lt;/strong&gt; -&amp;gt; &lt;strong&gt;Debugger&lt;/strong&gt; de la &lt;strong&gt;python shell&lt;/strong&gt; de IDLE. Cuando lo hagamos, aparecerá en esta ventana un mensaje indicando que el modo de depuración está activo: [DEBUG ON], además de una nueva ventana con todas las opciones e información que nos ofrece el depurador.&lt;/p&gt;  &lt;p align="justify"&gt;&lt;a href="http://plagatux.es/wp-content/uploads/2008/04/python-debug.png"&gt;&lt;img title="clip_image002" style="border: 0px none ; display: block; float: none; margin-left: auto; margin-right: auto;" alt="clip_image002" src="http://lh6.ggpht.com/_6HxOwVd7teU/S1TmNxm2SuI/AAAAAAAAABk/3fOzpWmTlII/clip_image002%5B3%5D.gif?imgmax=800" border="0" height="244" width="244" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h4 align="justify"&gt;Uso general del depurador&lt;/h4&gt;  &lt;p align="justify"&gt;Una vez que esté el modo de depuración activado podremos añadir “break points” en el código haciendo click con el botón derecho en la línea donde deseemos que se pare la ejecución del código y seleccionando la opción adecuada. Una vez que ejecutamos el programa, se irá ejecutando código hasta que se encuentre uno de estos “break points”. En este punto se nos mostrará la siguiente información en el control de depuración&lt;/p&gt;  &lt;p align="justify"&gt;&lt;a href="http://plagatux.es/wp-content/uploads/2008/04/debugcontrol.png"&gt;&lt;img title="clip_image004" style="border: 0px none ; display: block; float: none; margin-left: auto; margin-right: auto;" alt="clip_image004" src="http://lh5.ggpht.com/_6HxOwVd7teU/S1TmOc5D73I/AAAAAAAAABo/GvJgxqet37k/clip_image004%5B3%5D.gif?imgmax=800" border="0" height="226" width="244" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;Para los que estén acostumbrados a depurar programas les será muy intuitivo manejarse con este panel de control. Para los que sea su primera vez, aquí os dejo lo que hace cada botón:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;     &lt;div align="justify"&gt;El botón &lt;strong&gt;GO&lt;/strong&gt; hace que la ejecución del programa continúe hasta el fin del mismo o hasta que se alcance otro punto de ruptura.&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;El botón &lt;strong&gt;Step&lt;/strong&gt; hace que se ejecute la próxima sentencia a ser ejecutada o que se dé un paso en una función anidada.&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;El botón &lt;strong&gt;Over&lt;/strong&gt; hace que la sentencia actual sea completamente ejecutada sin parar en ninguna función anidada.&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;El botón &lt;strong&gt;Out&lt;/strong&gt; hace que se compute desde el punto actual hasta el fin de la función actual y que esta se termine.&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;El botón &lt;strong&gt;Quit&lt;/strong&gt; termina la actual ejecución. Esto deja el sistema en modo de depuración todavía. Para cerrar el modo de depuración basta con cerrar el panel de depuración.&lt;/div&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p align="justify"&gt;Si necesitáis una información más completa sobre la depuración en IDLE podéis encontrarla en &lt;a href="http://docs.python.org/library/idle.html"&gt;http://docs.python.org/library/idle.html&lt;/a&gt;.&lt;/p&gt;  &lt;p align="justify"&gt;&lt;b&gt;Fuente:&lt;/b&gt; &lt;a href="http://plagatux.es/2008/04/depuracion-en-python-con-idle/"&gt;http://plagatux.es/2008/04/depuracion-en-python-con-idle/&lt;/a&gt;, último acceso 16/01/2010.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8402087514691545481-2632089802974203045?l=aprendepython.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ugzUkBocixsjkQKkYzX5IstFuqs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ugzUkBocixsjkQKkYzX5IstFuqs/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ugzUkBocixsjkQKkYzX5IstFuqs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ugzUkBocixsjkQKkYzX5IstFuqs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AprendePythonComoSiEstuvierasEnPrimero/~4/T92yjq7NEhw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://aprendepython.blogspot.com/feeds/2632089802974203045/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://aprendepython.blogspot.com/2010/01/depuracion-en-python-con-idle.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8402087514691545481/posts/default/2632089802974203045?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8402087514691545481/posts/default/2632089802974203045?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AprendePythonComoSiEstuvierasEnPrimero/~3/T92yjq7NEhw/depuracion-en-python-con-idle.html" title="Depuración en Python con IDLE" /><author><name>Raúl PM</name><uri>http://www.blogger.com/profile/13357136732634502274</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_6HxOwVd7teU/SokcPI5k_JI/AAAAAAAAAAM/3Kq9NAgp2wU/S220/Da_vinci_dragon.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh6.ggpht.com/_6HxOwVd7teU/S1TmNxm2SuI/AAAAAAAAABk/3fOzpWmTlII/s72-c/clip_image002%5B3%5D.gif?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://aprendepython.blogspot.com/2010/01/depuracion-en-python-con-idle.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkINRn49eSp7ImA9WxBQGUo.&quot;"><id>tag:blogger.com,1999:blog-8402087514691545481.post-8526575245275570526</id><published>2010-01-13T07:56:00.000+01:00</published><updated>2010-01-20T07:56:37.061+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-01-20T07:56:37.061+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="pagina web" /><category scheme="http://www.blogger.com/atom/ns#" term="ayuda" /><category scheme="http://www.blogger.com/atom/ns#" term="recurso web" /><category scheme="http://www.blogger.com/atom/ns#" term="bibliografia" /><title>Bibliografía y recursos web</title><content type="html">&lt;p align="left"&gt;Podéis encontrar mucha más información buscando en internet, pero os dejo algunos enlaces de interés:&lt;/p&gt;  &lt;p align="left"&gt;Más en: &lt;a href="http://www.python.org"&gt;http://www.python.org&lt;/a&gt;&lt;/p&gt;  &lt;p align="left"&gt;Magnífico manual de referencia: &lt;a href="http://docs.python.org/ref/ref.html"&gt;http://docs.python.org/ref/ref.html&lt;/a&gt;&lt;/p&gt;  &lt;p align="left"&gt;Python Library Reference: &lt;a href="http://docs.python.org/lib/lib.html"&gt;http://docs.python.org/lib/lib.html&lt;/a&gt;&lt;/p&gt;  &lt;p align="left"&gt;Expresiones regulares: &lt;a href="http://www.amk.ca/python/howto/regex/"&gt;http://www.amk.ca/python/howto/regex/&lt;/a&gt;&lt;/p&gt;  &lt;p align="left"&gt;&lt;a href="http://www.python.org/doc/essays/styleguide.html"&gt;http://www.python.org/doc/essays/styleguide.html&lt;/a&gt;&lt;/p&gt;  &lt;p align="left"&gt;Otra documentación: &lt;a href="http://www.python.org/doc"&gt;http://www.python.org/doc&lt;/a&gt;&lt;/p&gt;  &lt;p align="left"&gt;How to Think Like a Computer Scientist. Learning with Python:&lt;/p&gt;  &lt;p align="left"&gt;· &lt;a href="http://www.ibiblio.org/obp/thinkCSpy/"&gt;http://www.ibiblio.org/obp/thinkCSpy/&lt;/a&gt;&lt;/p&gt;  &lt;p align="left"&gt;· &lt;a href="http://www.ibiblio.org/obp/thinkCS/python.php"&gt;http://www.ibiblio.org/obp/thinkCS/python.php&lt;/a&gt;&lt;/p&gt;  &lt;p align="left"&gt;Dive into Python. &lt;a href="http://diveintopython.org"&gt;http://diveintopython.org&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8402087514691545481-8526575245275570526?l=aprendepython.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/CYa3LIjao8pshw3PfMhe2bwV78w/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/CYa3LIjao8pshw3PfMhe2bwV78w/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/CYa3LIjao8pshw3PfMhe2bwV78w/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/CYa3LIjao8pshw3PfMhe2bwV78w/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AprendePythonComoSiEstuvierasEnPrimero/~4/yryglnOagdY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://aprendepython.blogspot.com/feeds/8526575245275570526/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://aprendepython.blogspot.com/2010/01/bibliografia-y-recursos-web.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8402087514691545481/posts/default/8526575245275570526?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8402087514691545481/posts/default/8526575245275570526?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AprendePythonComoSiEstuvierasEnPrimero/~3/yryglnOagdY/bibliografia-y-recursos-web.html" title="Bibliografía y recursos web" /><author><name>Raúl PM</name><uri>http://www.blogger.com/profile/13357136732634502274</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_6HxOwVd7teU/SokcPI5k_JI/AAAAAAAAAAM/3Kq9NAgp2wU/S220/Da_vinci_dragon.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://aprendepython.blogspot.com/2010/01/bibliografia-y-recursos-web.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DU4DSX4yfyp7ImA9WxBQGUQ.&quot;"><id>tag:blogger.com,1999:blog-8402087514691545481.post-8815112718025218258</id><published>2010-01-12T15:30:00.000+01:00</published><updated>2010-01-20T15:32:58.097+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-01-20T15:32:58.097+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ejercicios" /><title>Ejercicios útiles</title><content type="html">&lt;p align="justify"&gt;Bueno, una vez vistos todos los temas, os dejo unos cuantos ejercicios que puede que sean de utilidad para intentar hacerlos e ir cogiendo habilidad programando con Python.&lt;/p&gt;  &lt;p align="justify"&gt;Relación 1&lt;/p&gt;  &lt;p align="justify"&gt;&lt;a title="http://docs.google.com/fileview?id=0B-0znb6O943IMDVhYTZkZjQtZmRiYy00Nzc1LWI0ZDgtMjA5NTJkN2VjZGQ4&amp;amp;hl=en" href="http://docs.google.com/fileview?id=0B-0znb6O943IMDVhYTZkZjQtZmRiYy00Nzc1LWI0ZDgtMjA5NTJkN2VjZGQ4&amp;amp;hl=en"&gt;http://docs.google.com/fileview?id=0B-0znb6O943IMDVhYTZkZjQtZmRiYy00Nzc1LWI0ZDgtMjA5NTJkN2VjZGQ4&amp;amp;hl=en&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;Relación 2&lt;/p&gt;  &lt;p align="justify"&gt;&lt;a title="http://docs.google.com/fileview?id=0B-0znb6O943INzI4ZjlkNzEtNTIyNC00OTBmLTk5MjEtMDgwYWE0ODMzZjM2&amp;amp;hl=en" href="http://docs.google.com/fileview?id=0B-0znb6O943INzI4ZjlkNzEtNTIyNC00OTBmLTk5MjEtMDgwYWE0ODMzZjM2&amp;amp;hl=en"&gt;http://docs.google.com/fileview?id=0B-0znb6O943INzI4ZjlkNzEtNTIyNC00OTBmLTk5MjEtMDgwYWE0ODMzZjM2&amp;amp;hl=en&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;Relación 3&lt;/p&gt;  &lt;p align="justify"&gt;&lt;a title="http://docs.google.com/fileview?id=0B-0znb6O943IYjAzYWZhYjEtZWFjNS00NmExLTkzNmItY2MxZmE3ZTJkMjk5&amp;amp;hl=en" href="http://docs.google.com/fileview?id=0B-0znb6O943IYjAzYWZhYjEtZWFjNS00NmExLTkzNmItY2MxZmE3ZTJkMjk5&amp;amp;hl=en"&gt;http://docs.google.com/fileview?id=0B-0znb6O943IYjAzYWZhYjEtZWFjNS00NmExLTkzNmItY2MxZmE3ZTJkMjk5&amp;amp;hl=en&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8402087514691545481-8815112718025218258?l=aprendepython.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/fo9q_X4B8L_u2Q8scoVhIXHl_pg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/fo9q_X4B8L_u2Q8scoVhIXHl_pg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/fo9q_X4B8L_u2Q8scoVhIXHl_pg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/fo9q_X4B8L_u2Q8scoVhIXHl_pg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AprendePythonComoSiEstuvierasEnPrimero/~4/50tI45nnn0I" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://aprendepython.blogspot.com/feeds/8815112718025218258/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://aprendepython.blogspot.com/2010/01/ejercicios-utiles.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8402087514691545481/posts/default/8815112718025218258?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8402087514691545481/posts/default/8815112718025218258?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AprendePythonComoSiEstuvierasEnPrimero/~3/50tI45nnn0I/ejercicios-utiles.html" title="Ejercicios útiles" /><author><name>Raúl PM</name><uri>http://www.blogger.com/profile/13357136732634502274</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_6HxOwVd7teU/SokcPI5k_JI/AAAAAAAAAAM/3Kq9NAgp2wU/S220/Da_vinci_dragon.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://aprendepython.blogspot.com/2010/01/ejercicios-utiles.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUYGQng_eyp7ImA9WxBQGUQ.&quot;"><id>tag:blogger.com,1999:blog-8402087514691545481.post-8366754067703237571</id><published>2010-01-10T15:11:00.000+01:00</published><updated>2010-01-20T15:18:43.643+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-01-20T15:18:43.643+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="regulares" /><category scheme="http://www.blogger.com/atom/ns#" term="expresiones" /><title>Expresiones regulares</title><content type="html">&lt;p align="justify"&gt;La expresiones regulares son muy potentes y de las mejores maneras para manipular cadenas. Para hacer uso de ellas existe un módulo que contiene métodos para el manejo de ellas. El módulo es el llamado &lt;strong&gt;&lt;em&gt;re&lt;/em&gt;&lt;/strong&gt;.&lt;/p&gt;  &lt;p align="justify"&gt;Los caracteres y combinaciones especiales en el módulo &lt;strong&gt;&lt;em&gt;re&lt;/em&gt;&lt;/strong&gt;:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p align="justify"&gt;– . ^ $ * + ?     &lt;br /&gt;– *? +?      &lt;br /&gt;– {n} {n,m}      &lt;br /&gt;– [...] [^...]      &lt;br /&gt;– |      &lt;br /&gt;– (...)&lt;/p&gt; &lt;/blockquote&gt;  &lt;p align="justify"&gt;Ahora vamos a ver un ejemplo en el que aparecen algunas de las cosas que se pueden hacer con expresiones regulares:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p align="justify"&gt;import re&lt;/p&gt;    &lt;p align="justify"&gt;     &lt;br /&gt;cad= “dabale arroz a la zorra el abad”      &lt;br /&gt;expc= re.compile(“(l.*?a)”)&amp;#160; # se pone formato de la exp. reg.      &lt;br /&gt;matchobj1= expc.search(cad)&amp;#160; # se busca en la cadena      &lt;br /&gt;if matchobj1:      &lt;br /&gt;&amp;#160;&amp;#160; print matchobj1.groups()&amp;#160; # se muestra cada palabra      &lt;br /&gt;matchobj2= expc.match(cad)      &lt;br /&gt;if matchobj2:      &lt;br /&gt;&amp;#160;&amp;#160; print matchobj2.groups()      &lt;br /&gt;print re.compile('rr').sub('--',cad)&lt;/p&gt; &lt;/blockquote&gt;  &lt;p align="justify"&gt;Más en:   &lt;br /&gt;&lt;a href="http://www.amk.ca/python/howto/regex/"&gt;http://www.amk.ca/python/howto/regex/&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;Y en la ayuda de Python siempre podéis consultar todo lo que queráis.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8402087514691545481-8366754067703237571?l=aprendepython.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/dMXe5ctvE6K3Ct273hmLPd--AJM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/dMXe5ctvE6K3Ct273hmLPd--AJM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/dMXe5ctvE6K3Ct273hmLPd--AJM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/dMXe5ctvE6K3Ct273hmLPd--AJM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AprendePythonComoSiEstuvierasEnPrimero/~4/KhsFFf1kiBY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://aprendepython.blogspot.com/feeds/8366754067703237571/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://aprendepython.blogspot.com/2010/01/expresiones-regulares.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8402087514691545481/posts/default/8366754067703237571?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8402087514691545481/posts/default/8366754067703237571?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AprendePythonComoSiEstuvierasEnPrimero/~3/KhsFFf1kiBY/expresiones-regulares.html" title="Expresiones regulares" /><author><name>Raúl PM</name><uri>http://www.blogger.com/profile/13357136732634502274</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_6HxOwVd7teU/SokcPI5k_JI/AAAAAAAAAAM/3Kq9NAgp2wU/S220/Da_vinci_dragon.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://aprendepython.blogspot.com/2010/01/expresiones-regulares.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEINQ3s4cCp7ImA9WxBQGUQ.&quot;"><id>tag:blogger.com,1999:blog-8402087514691545481.post-4611346294407400943</id><published>2010-01-09T15:09:00.000+01:00</published><updated>2010-01-20T15:09:52.538+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-01-20T15:09:52.538+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="list comprenhension" /><title>List comprenhension</title><content type="html">&lt;p align="justify"&gt;Esto es algo de las cosas más abstractas de Python, vamos a ver un ejemplo e intentaré explicar como va para que os hagáis una idea.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p align="justify"&gt;lista = [i for i in range(1,11)]     &lt;br /&gt;def multiplicar(x,y):      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; return x*y      &lt;br /&gt;&lt;/p&gt;    &lt;p align="justify"&gt;l=[(x,y) for x in (1,4,6,24,19)&lt;/p&gt;    &lt;p align="justify"&gt;for y in (15,7,1,2) if multiplicar(x,y) &amp;gt; 25]&lt;/p&gt; &lt;/blockquote&gt;  &lt;p align="justify"&gt;Como veis es algo un poquito más abstracto, ya que lo que se hace aquí es llamar a un función dentro de una lista y los valores de dicha lista son los valores calculados. Esto mismo se podría hacer con un par de bucles externos, pero de esta forma también existe la posibilidad.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8402087514691545481-4611346294407400943?l=aprendepython.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Wch_-bcX4z00caDzTivJoKCORr0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Wch_-bcX4z00caDzTivJoKCORr0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Wch_-bcX4z00caDzTivJoKCORr0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Wch_-bcX4z00caDzTivJoKCORr0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AprendePythonComoSiEstuvierasEnPrimero/~4/5Qt1zaombTA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://aprendepython.blogspot.com/feeds/4611346294407400943/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://aprendepython.blogspot.com/2010/01/list-comprenhension.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8402087514691545481/posts/default/4611346294407400943?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8402087514691545481/posts/default/4611346294407400943?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AprendePythonComoSiEstuvierasEnPrimero/~3/5Qt1zaombTA/list-comprenhension.html" title="List comprenhension" /><author><name>Raúl PM</name><uri>http://www.blogger.com/profile/13357136732634502274</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_6HxOwVd7teU/SokcPI5k_JI/AAAAAAAAAAM/3Kq9NAgp2wU/S220/Da_vinci_dragon.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://aprendepython.blogspot.com/2010/01/list-comprenhension.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEEFSXY6cSp7ImA9WxBQGUQ.&quot;"><id>tag:blogger.com,1999:blog-8402087514691545481.post-7013869631569695371</id><published>2010-01-07T14:45:00.000+01:00</published><updated>2010-01-20T15:10:18.819+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-01-20T15:10:18.819+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="file" /><category scheme="http://www.blogger.com/atom/ns#" term="fichero" /><title>Ficheros</title><content type="html">&lt;p align="justify"&gt;Este tema tiene bastante consistencia y es algo muy interesante porque ya entramos en el manejo de ficheros con Python.&lt;/p&gt;  &lt;p align="justify"&gt;Para abrir un fichero se hará con el método open():&lt;/p&gt;  &lt;blockquote&gt;   &lt;p align="justify"&gt;f = open(“nombre”, “modo”)&lt;/p&gt; &lt;/blockquote&gt;  &lt;p align="justify"&gt;El modo podrá ser:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p align="justify"&gt;– r&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; lectura.      &lt;br /&gt;– w&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; escritura (destruye si ya existe).       &lt;br /&gt;– a&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; añadir (crea uno si no existe).       &lt;br /&gt;– r+&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; lectura y escritura (debe existir).       &lt;br /&gt;– w+&amp;#160;&amp;#160;&amp;#160;&amp;#160; lectura y escritura (destruye si existe).       &lt;br /&gt;– a+&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; lectura y añadir (crea uno si no existe).&lt;/p&gt; &lt;/blockquote&gt;  &lt;p align="justify"&gt;Si se añade:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p align="justify"&gt;- t fichero de texto.&lt;/p&gt;    &lt;p align="justify"&gt;- b fichero binario.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p align="justify"&gt;Ejemplo y atributos útiles:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p align="justify"&gt;&amp;gt;&amp;gt;&amp;gt;f=open(“prueba.txt”, “wt”)&amp;#160; # apertura del fichero      &lt;br /&gt;&amp;gt;&amp;gt;&amp;gt;f.mode&amp;#160; # modo de apertura       &lt;br /&gt;'wt'       &lt;br /&gt;&amp;gt;&amp;gt;&amp;gt;f.closed&amp;#160; # comprobación de cierre       &lt;br /&gt;0       &lt;br /&gt;&amp;gt;&amp;gt;&amp;gt;f.name&amp;#160; # nombre de fichero       &lt;br /&gt;'prueba.txt'       &lt;br /&gt;&amp;gt;&amp;gt;&amp;gt;f.write(“hola en el fichero”)&amp;#160; # escritura en fichero       &lt;br /&gt;&amp;gt;&amp;gt;&amp;gt;f.close()&amp;#160; # cierre de fichero&lt;/p&gt; &lt;/blockquote&gt;  &lt;p align="justify"&gt;Otra cosa muy útil para el manejo de ficheros es el posicionamiento en el lugar que se quiera del fichero para lectura o escritura. Con un ejemplo puede quedar claro.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p align="justify"&gt;&amp;gt;&amp;gt;&amp;gt;f=open(“prueba.txt”, “w+”)&amp;#160; # apertura de fichero      &lt;br /&gt;&amp;gt;&amp;gt;&amp;gt;f.write(“CARLOS”)&amp;#160; # escritura en el fichero       &lt;br /&gt;&amp;gt;&amp;gt;&amp;gt;f.tell()&amp;#160; # dice la posición en la que se encuentra actualmente       &lt;br /&gt;6&amp;#160; # la próxima escritura será en la posición 6       &lt;br /&gt;&amp;gt;&amp;gt;&amp;gt;f.seek(2)&amp;#160; # se mueve al offset 2       &lt;br /&gt;&amp;gt;&amp;gt;&amp;gt;f.write(“rl”)       &lt;br /&gt;&amp;gt;&amp;gt;&amp;gt;f.seek(0)&amp;#160; # va al comienzo       &lt;br /&gt;&amp;gt;&amp;gt;&amp;gt;f.read()&amp;#160; #lee todo, desde actual hasta el final       &lt;br /&gt;CArlOS       &lt;br /&gt;&amp;gt;&amp;gt;&amp;gt;f.tell()       &lt;br /&gt;6&lt;/p&gt; &lt;/blockquote&gt;  &lt;p align="justify"&gt;La función fseek tiene esta sintaxis:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p align="justify"&gt;fseek(position,whence)&lt;/p&gt;    &lt;p align="justify"&gt;     &lt;br /&gt;position = offset       &lt;br /&gt;whence = 0, desde el principio (por defecto)       &lt;br /&gt;whence = 1, desde actual       &lt;br /&gt;whwnce = 2, desde el final&lt;/p&gt; &lt;/blockquote&gt;  &lt;p align="justify"&gt;Os pongo otro ejemplo donde se ve el tipo de cosas que se pueden hacer, por ejemplo, escribir y leer líneas:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p align="justify"&gt;&amp;gt;&amp;gt;&amp;gt;lineas=[“primera linea”,”segunda”,”final”]      &lt;br /&gt;&amp;gt;&amp;gt;&amp;gt;f.writelines(lineas)&amp;#160; # escritura de una linea       &lt;br /&gt;&amp;gt;&amp;gt;&amp;gt;f.seek(0)       &lt;br /&gt;&amp;gt;&amp;gt;&amp;gt;f.read()       &lt;br /&gt;primera linea       &lt;br /&gt;segunda       &lt;br /&gt;final       &lt;br /&gt;&amp;gt;&amp;gt;&amp;gt;for i in range(3):       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; f.write(“fila %d \n” % i)       &lt;br /&gt;&amp;gt;&amp;gt;&amp;gt;f.seek(0)       &lt;br /&gt;&amp;gt;&amp;gt;&amp;gt;f.read(3)       &lt;br /&gt;'fil'       &lt;br /&gt;&amp;gt;&amp;gt;&amp;gt;print f.read()       &lt;br /&gt;&amp;gt;&amp;gt;&amp;gt;f.seek(0)       &lt;br /&gt;&amp;gt;&amp;gt;&amp;gt;f.readline()&amp;#160; # lectura de una linea       &lt;br /&gt;'primera fila'       &lt;br /&gt;&amp;gt;&amp;gt;&amp;gt;f.seek(0)       &lt;br /&gt;&amp;gt;&amp;gt;&amp;gt;f.readlines()       &lt;br /&gt;[“primera linea”,”segunda”,”final”]&lt;/p&gt; &lt;/blockquote&gt;  &lt;p align="justify"&gt;Ejemplo de una lectura rápida del fichero:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p align="justify"&gt;f=open(“fich.txt”,”r”)      &lt;br /&gt;for i in f:       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; print i&lt;/p&gt; &lt;/blockquote&gt;  &lt;p align="justify"&gt;Bueno esto es algo de todo lo que se puede hacer, como ya sabéis si tenéis alguna duda consultar la ayuda, cualquier comentario también se intentará que sea contestado.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8402087514691545481-7013869631569695371?l=aprendepython.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/zScWbvisUqNL4gwITE4P9jnNIhM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/zScWbvisUqNL4gwITE4P9jnNIhM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/zScWbvisUqNL4gwITE4P9jnNIhM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/zScWbvisUqNL4gwITE4P9jnNIhM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AprendePythonComoSiEstuvierasEnPrimero/~4/44cNZEQU7gk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://aprendepython.blogspot.com/feeds/7013869631569695371/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://aprendepython.blogspot.com/2010/01/ficheros.html#comment-form" title="2 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8402087514691545481/posts/default/7013869631569695371?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8402087514691545481/posts/default/7013869631569695371?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AprendePythonComoSiEstuvierasEnPrimero/~3/44cNZEQU7gk/ficheros.html" title="Ficheros" /><author><name>Raúl PM</name><uri>http://www.blogger.com/profile/13357136732634502274</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_6HxOwVd7teU/SokcPI5k_JI/AAAAAAAAAAM/3Kq9NAgp2wU/S220/Da_vinci_dragon.jpg" /></author><thr:total>2</thr:total><feedburner:origLink>http://aprendepython.blogspot.com/2010/01/ficheros.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkMFR3o9eip7ImA9WxBQGUo.&quot;"><id>tag:blogger.com,1999:blog-8402087514691545481.post-3704645756185703813</id><published>2010-01-06T07:53:00.000+01:00</published><updated>2010-01-20T07:53:36.462+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-01-20T07:53:36.462+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="modulo" /><category scheme="http://www.blogger.com/atom/ns#" term="random" /><title>El módulo random</title><content type="html">&lt;p align="justify"&gt;Existe un módulo en Python para aleatorios, este implementa algunos métodos bastante útiles, aquí os dejo algunos, si queréis más información mirad la ayuda que siempre es de utilidad.&lt;/p&gt;  &lt;p align="justify"&gt;import random&lt;/p&gt;  &lt;p align="justify"&gt;random.random() # devuelve un float en el intervalo [0,1)&lt;/p&gt;  &lt;p align="justify"&gt;random.uniform(a,b) # devuelve un float en el intervalo [a,b)&lt;/p&gt;  &lt;p align="justify"&gt;random.choice(lista) # escoge un elemento al azar&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8402087514691545481-3704645756185703813?l=aprendepython.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/MFb3mTmsWMve5XQIKVDiAWOEzOs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/MFb3mTmsWMve5XQIKVDiAWOEzOs/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/MFb3mTmsWMve5XQIKVDiAWOEzOs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/MFb3mTmsWMve5XQIKVDiAWOEzOs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AprendePythonComoSiEstuvierasEnPrimero/~4/BpEPi-OlR84" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://aprendepython.blogspot.com/feeds/3704645756185703813/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://aprendepython.blogspot.com/2010/01/el-modulo-random.html#comment-form" title="3 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8402087514691545481/posts/default/3704645756185703813?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8402087514691545481/posts/default/3704645756185703813?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AprendePythonComoSiEstuvierasEnPrimero/~3/BpEPi-OlR84/el-modulo-random.html" title="El módulo random" /><author><name>Raúl PM</name><uri>http://www.blogger.com/profile/13357136732634502274</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_6HxOwVd7teU/SokcPI5k_JI/AAAAAAAAAAM/3Kq9NAgp2wU/S220/Da_vinci_dragon.jpg" /></author><thr:total>3</thr:total><feedburner:origLink>http://aprendepython.blogspot.com/2010/01/el-modulo-random.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkQARnc4fCp7ImA9WxBQGUo.&quot;"><id>tag:blogger.com,1999:blog-8402087514691545481.post-1918898434829696881</id><published>2010-01-05T07:48:00.000+01:00</published><updated>2010-01-20T07:52:27.934+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-01-20T07:52:27.934+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="operadores" /><category scheme="http://www.blogger.com/atom/ns#" term="sobrecarga" /><title>Sobrecarga de operadores</title><content type="html">&lt;p align="justify"&gt;Para ver cómo podemos sobrecargar los operadores vamos a poner un ejemplo en el que se entenderá mejor todo:&lt;/p&gt;  &lt;p align="justify"&gt;class Contador:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p align="justify"&gt;&amp;quot;&amp;quot;&amp;quot;La clase contador es un ejemplo&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p align="justify"&gt;de sobrecarga de operadores&amp;quot;&amp;quot;&amp;quot;&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p align="justify"&gt;def __init__(self,val):&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;blockquote&gt;     &lt;p align="justify"&gt;self.n = val&lt;/p&gt;   &lt;/blockquote&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p align="justify"&gt;def __add__(self, obj):&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;blockquote&gt;     &lt;p align="justify"&gt;print self.n + obj&lt;/p&gt;   &lt;/blockquote&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p align="justify"&gt;def __radd__(self, obj):&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;blockquote&gt;     &lt;p align="justify"&gt;print self.n + obj&lt;/p&gt;   &lt;/blockquote&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p align="justify"&gt;def __str__(self):&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;blockquote&gt;     &lt;p align="justify"&gt;return &amp;quot;contador = %d&amp;quot; % self.n&lt;/p&gt;   &lt;/blockquote&gt; &lt;/blockquote&gt;  &lt;p align="justify"&gt;En esta clase hemos definido el operador de asignación para suma con objetos (__add__) y con valores simples (__radd__) (pero recordad que los valores simples aquí también se tratan como objetos, por eso pone obj en ambos).&lt;/p&gt;  &lt;p align="justify"&gt;Cuando suméis un objeto de la clase contador con otro objeto de la clase contador saldrá bien, siempre que se encuentre a la izquierda el objeto principal al que le queréis sumar algo. Y cuando le queráis sumar a un objeto contador un numero (que al fin y al cabo es otro objeto) también saldrá ya que tenéis implementado el método __radd__.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8402087514691545481-1918898434829696881?l=aprendepython.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/MiV-ydj2qZolS2g2E8jFCrTWQGg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/MiV-ydj2qZolS2g2E8jFCrTWQGg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/MiV-ydj2qZolS2g2E8jFCrTWQGg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/MiV-ydj2qZolS2g2E8jFCrTWQGg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AprendePythonComoSiEstuvierasEnPrimero/~4/pC3RrSfm8AQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://aprendepython.blogspot.com/feeds/1918898434829696881/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://aprendepython.blogspot.com/2010/01/sobrecarga-de-operadores.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8402087514691545481/posts/default/1918898434829696881?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8402087514691545481/posts/default/1918898434829696881?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AprendePythonComoSiEstuvierasEnPrimero/~3/pC3RrSfm8AQ/sobrecarga-de-operadores.html" title="Sobrecarga de operadores" /><author><name>Raúl PM</name><uri>http://www.blogger.com/profile/13357136732634502274</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_6HxOwVd7teU/SokcPI5k_JI/AAAAAAAAAAM/3Kq9NAgp2wU/S220/Da_vinci_dragon.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://aprendepython.blogspot.com/2010/01/sobrecarga-de-operadores.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkcGQ3YyfCp7ImA9WxBQGUo.&quot;"><id>tag:blogger.com,1999:blog-8402087514691545481.post-9008799382122337763</id><published>2010-01-04T07:46:00.000+01:00</published><updated>2010-01-20T07:47:02.894+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-01-20T07:47:02.894+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="herencia" /><title>Herencia</title><content type="html">&lt;p align="justify"&gt;Seguimos con las clases y las posibilidades que estas ofrecen. Una de estas posibilidades es la herencia entre clases. Hay herencia múltiple. Pero no hay sobrecarga de funciones, dos funciones en el mismo ámbito no pueden llamarse igual aunque tengan distintos parámetros, en cambio, si en distintas clases y módulos.&lt;/p&gt;  &lt;p align="justify"&gt;Un ejemplo para ver todo esto:&lt;/p&gt;  &lt;p align="justify"&gt;class Vehiculo:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p align="justify"&gt;velocidadMaxima = 120&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p align="justify"&gt;def acelera(self, a):&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;blockquote&gt;     &lt;p align="justify"&gt;print “más rápido”, a&lt;/p&gt;   &lt;/blockquote&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p align="justify"&gt;def frena(self):&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;blockquote&gt;     &lt;p align="justify"&gt;print “para!!”&lt;/p&gt;   &lt;/blockquote&gt; &lt;/blockquote&gt;  &lt;p align="justify"&gt;class Camion(Vehiculo): # la herencia se muestra poniendo entre paréntesis el nombre de la clase&lt;/p&gt;  &lt;blockquote&gt;   &lt;p align="justify"&gt;velocidadMaxima = 100&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p align="justify"&gt;def carga(self, c):&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;blockquote&gt;     &lt;p align="justify"&gt;print “mi carga es “, c&lt;/p&gt;   &lt;/blockquote&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p align="justify"&gt;def frena(self):&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;blockquote&gt;     &lt;p align="justify"&gt;Vehiculo.frena(self)&lt;/p&gt;   &lt;/blockquote&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;blockquote&gt;     &lt;p align="justify"&gt;print “frenazo de camión!!”&lt;/p&gt;   &lt;/blockquote&gt; &lt;/blockquote&gt;  &lt;p align="justify"&gt;&amp;#160;&lt;/p&gt;  &lt;p align="justify"&gt;&amp;gt;&amp;gt;&amp;gt;c=Camion()&lt;/p&gt;  &lt;p align="justify"&gt;&amp;gt;&amp;gt;&amp;gt;c.acelera(60)&lt;/p&gt;  &lt;p align="justify"&gt;más rápido 60&lt;/p&gt;  &lt;p align="justify"&gt;&amp;gt;&amp;gt;&amp;gt;c.frena()&lt;/p&gt;  &lt;p align="justify"&gt;para!!&lt;/p&gt;  &lt;p align="justify"&gt;frenazo de camión!!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8402087514691545481-9008799382122337763?l=aprendepython.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/y1pG9fB48gNEkTGantNRGu-XCzc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/y1pG9fB48gNEkTGantNRGu-XCzc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/y1pG9fB48gNEkTGantNRGu-XCzc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/y1pG9fB48gNEkTGantNRGu-XCzc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AprendePythonComoSiEstuvierasEnPrimero/~4/w0pYijxZM7s" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://aprendepython.blogspot.com/feeds/9008799382122337763/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://aprendepython.blogspot.com/2010/01/herencia.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8402087514691545481/posts/default/9008799382122337763?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8402087514691545481/posts/default/9008799382122337763?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AprendePythonComoSiEstuvierasEnPrimero/~3/w0pYijxZM7s/herencia.html" title="Herencia" /><author><name>Raúl PM</name><uri>http://www.blogger.com/profile/13357136732634502274</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_6HxOwVd7teU/SokcPI5k_JI/AAAAAAAAAAM/3Kq9NAgp2wU/S220/Da_vinci_dragon.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://aprendepython.blogspot.com/2010/01/herencia.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A08BQ3k5eip7ImA9WxBQGUs.&quot;"><id>tag:blogger.com,1999:blog-8402087514691545481.post-235896461438789288</id><published>2010-01-04T07:40:00.000+01:00</published><updated>2010-01-20T07:44:12.722+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-01-20T07:44:12.722+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="class" /><category scheme="http://www.blogger.com/atom/ns#" term="clases" /><title>Clases</title><content type="html">&lt;p align="justify"&gt;A partir de aquí ya empieza la cosa a ponerse interesante, empezamos a ver algo un poco más avanzado. Para poder entenderlas vamos a ver un ejemplo y a partir de él explicaremos algo que pueda estar dudoso.&lt;/p&gt;  &lt;p align="justify"&gt;class Prueba:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p align="justify"&gt;&amp;quot;&amp;quot;&amp;quot;Esto es una clase de prueba&amp;quot;&amp;quot;&amp;quot; # atributo de clase &lt;b&gt;&lt;i&gt;Prueba.__doc__&lt;/i&gt;&lt;/b&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p align="justify"&gt;nObjetos = 0 # variable de clase&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p align="justify"&gt;def __init__(self,nombre): # constructor de la clase&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;blockquote&gt;     &lt;p align="justify"&gt;&amp;quot;&amp;quot;&amp;quot;constructor de la clase&amp;quot;&amp;quot;&amp;quot; # self es el nombre de la instancia dentro de la clase (&lt;b&gt;&lt;i&gt;this&lt;/i&gt;&lt;/b&gt;)&lt;/p&gt;   &lt;/blockquote&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;blockquote&gt;     &lt;p align="justify"&gt;self.n = nombre # variable de instancia&lt;/p&gt;   &lt;/blockquote&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;blockquote&gt;     &lt;p align="justify"&gt;Prueba.nObjetos += 1 # uso de variable de clase&lt;/p&gt;   &lt;/blockquote&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;blockquote&gt;     &lt;p align="justify"&gt;print &amp;quot;creada instancia %d de la clase Prueba&amp;quot; % Prueba.nObjetos&lt;/p&gt;   &lt;/blockquote&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p align="justify"&gt;def muestraNombre(self): # &lt;b&gt;&lt;i&gt;self&lt;/i&gt;&lt;/b&gt; es obligatorio en todos los métodos&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;blockquote&gt;     &lt;p align="justify"&gt;&amp;quot;&amp;quot;&amp;quot;muestra el nombre del objeto y el de la clase&amp;quot;&amp;quot;&amp;quot;&lt;/p&gt;   &lt;/blockquote&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;blockquote&gt;     &lt;p align="justify"&gt;print &amp;quot;nombre objeto = &amp;quot;, self.n&lt;/p&gt;   &lt;/blockquote&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;blockquote&gt;     &lt;p align="justify"&gt;print &amp;quot;nombre clase = &amp;quot;, self.__class__ # __class__ contiene el nombre de la clase&lt;/p&gt;   &lt;/blockquote&gt; &lt;/blockquote&gt;  &lt;p align="justify"&gt;Una vez vista como se declara la clase, veamos cómo se manejan las instancias de dicha clase.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p align="justify"&gt;&amp;gt;&amp;gt;&amp;gt;o=Prueba(“juan”) # uso del constructor de la clase&lt;/p&gt;    &lt;p align="justify"&gt;creada instancia 1 de la clase Prueba&lt;/p&gt;    &lt;p align="justify"&gt;&amp;gt;&amp;gt;&amp;gt;p=Prueba(“ana”)&lt;/p&gt;    &lt;p align="justify"&gt;creada instancia 2 de la clase Prueba&lt;/p&gt;    &lt;p align="justify"&gt;o.muestraNombre() # llamada al método de la clase&lt;/p&gt; &lt;/blockquote&gt;  &lt;p align="justify"&gt;Ahora os pongo un ejemplo para que veáis como se pueden poner también variables privadas:&lt;/p&gt;  &lt;p align="justify"&gt;class Prueba:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p align="justify"&gt;datoPublico = 4 # variable de clase pública&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p align="justify"&gt;def f1(self):&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;blockquote&gt;     &lt;p align="justify"&gt;self.n = 1 # variable de instancia pública&lt;/p&gt;   &lt;/blockquote&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;blockquote&gt;     &lt;p align="justify"&gt;self.__datoPrivado = 7 # variable de instancia privada&lt;/p&gt;   &lt;/blockquote&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;blockquote&gt;     &lt;p align="justify"&gt;return Prueba.datoPublico, self.__datoPrivado&lt;/p&gt;   &lt;/blockquote&gt; &lt;/blockquote&gt;  &lt;p align="justify"&gt;Una vez declarada la clase vamos a ver como se trataría esta:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p align="justify"&gt;&amp;gt;&amp;gt;&amp;gt;o=Prueba()&lt;/p&gt;    &lt;p align="justify"&gt;&amp;gt;&amp;gt;&amp;gt;o.f1()&lt;/p&gt;    &lt;p align="justify"&gt;(4,7)&lt;/p&gt;    &lt;p align="justify"&gt;&amp;gt;&amp;gt;&amp;gt;o.n # acceso OK&lt;/p&gt;    &lt;p align="justify"&gt;&amp;gt;&amp;gt;&amp;gt;o.__datoPrivado # acceso ERROR&lt;/p&gt; &lt;/blockquote&gt;  &lt;p align="justify"&gt;Otra de las posibilidades que ofrece Python es la creación dinámica de variables de clase. Os pongo un ejemplo:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p align="justify"&gt;&amp;gt;&amp;gt;&amp;gt;Prueba.nvar=55 # creando una nueva variable de clase&lt;/p&gt;    &lt;p align="justify"&gt;&amp;gt;&amp;gt;&amp;gt;o.nvar&lt;/p&gt;    &lt;p align="justify"&gt;55&lt;/p&gt;    &lt;p align="justify"&gt;&amp;gt;&amp;gt;&amp;gt;p.nvar&lt;/p&gt;    &lt;p align="justify"&gt;55&lt;/p&gt; &lt;/blockquote&gt;  &lt;p align="justify"&gt;Esto sería la creación de una variable de clase, pero también se pueden crear variables nuevas en una instancia, con lo que cuando se elimine dicha instancia la variable desaparecerá con ella. Un ejemplo:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p align="justify"&gt;&amp;gt;&amp;gt;&amp;gt;o.nnvar=5 # creando una nueva variable de instancia&lt;/p&gt;    &lt;p align="justify"&gt;&amp;gt;&amp;gt;&amp;gt;o.nnvar # existe&lt;/p&gt;    &lt;p align="justify"&gt;55&lt;/p&gt;    &lt;p align="justify"&gt;&amp;gt;&amp;gt;&amp;gt;p.nnvar # no existe, daría ERROR...&lt;/p&gt; &lt;/blockquote&gt;  &lt;p align="justify"&gt;Tipos de variables en una clase:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p align="justify"&gt;· De clase (nombreClase.nombreVariableDeClase). Para todas las instancias de la clase.&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p align="justify"&gt;· De instancia (self.nombreVariableInstancia). Para todos los métodos de la instancia.&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p align="justify"&gt;· Locales a los métodos (nombreVariableLocal). Únicamente en el método que la declare.&lt;/p&gt;&lt;/blockquote&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8402087514691545481-235896461438789288?l=aprendepython.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/THO44sQgpr0Yu_4VrbM3P-mvjq4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/THO44sQgpr0Yu_4VrbM3P-mvjq4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/THO44sQgpr0Yu_4VrbM3P-mvjq4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/THO44sQgpr0Yu_4VrbM3P-mvjq4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AprendePythonComoSiEstuvierasEnPrimero/~4/tw8uoF89eL4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://aprendepython.blogspot.com/feeds/235896461438789288/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://aprendepython.blogspot.com/2010/01/clases.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8402087514691545481/posts/default/235896461438789288?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8402087514691545481/posts/default/235896461438789288?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AprendePythonComoSiEstuvierasEnPrimero/~3/tw8uoF89eL4/clases.html" title="Clases" /><author><name>Raúl PM</name><uri>http://www.blogger.com/profile/13357136732634502274</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_6HxOwVd7teU/SokcPI5k_JI/AAAAAAAAAAM/3Kq9NAgp2wU/S220/Da_vinci_dragon.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://aprendepython.blogspot.com/2010/01/clases.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0IARXs6fyp7ImA9WxBQGUs.&quot;"><id>tag:blogger.com,1999:blog-8402087514691545481.post-5884168784839636150</id><published>2010-01-04T07:38:00.000+01:00</published><updated>2010-01-20T07:39:04.517+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-01-20T07:39:04.517+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="try except" /><category scheme="http://www.blogger.com/atom/ns#" term="excepcion" /><title>Excepciones</title><content type="html">&lt;p align="justify"&gt;Una excepción es un objeto Python que representa un error en tiempo de ejecución. En Python existen los esquemas try...except, raise.&lt;/p&gt;  &lt;p align="justify"&gt;Existen varios tipos de excepciones, por ejemplo, los del intérprete: ZeroDivisionError, NameError, TypeError; los definidos por el usuario, etc.&lt;/p&gt;  &lt;p align="justify"&gt;Para controlar las excepciones tenemos esta sintaxis:&lt;/p&gt;  &lt;p align="justify"&gt;&lt;b&gt;&lt;i&gt;try:&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p align="justify"&gt;bloque&lt;/p&gt; &lt;/blockquote&gt;  &lt;p align="justify"&gt;&lt;b&gt;&lt;i&gt;[except [e...]]:&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p align="justify"&gt;bloque&lt;/p&gt; &lt;/blockquote&gt;  &lt;p align="justify"&gt;&lt;b&gt;&lt;i&gt;[else:&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p align="justify"&gt;bloque&lt;b&gt;&lt;i&gt;]&lt;/i&gt;&lt;/b&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p align="justify"&gt;&lt;b&gt;&lt;i&gt;[finally:&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p align="justify"&gt;bloque&lt;b&gt;&lt;i&gt;]&lt;/i&gt;&lt;/b&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p align="justify"&gt;Python muestra en cada error:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p align="justify"&gt;– La función o funciones que la elevan (most recent calls last)&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p align="justify"&gt;– El contexto (fichero y línea del código)&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p align="justify"&gt;– La excepción elevada y algún detalle/comentario&lt;/p&gt; &lt;/blockquote&gt;  &lt;p align="justify"&gt;Algunos ejemplos para que lo podáis observar:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p align="justify"&gt;&amp;gt;&amp;gt;&amp;gt; 10 * (1/0)&lt;/p&gt;    &lt;p align="justify"&gt; Traceback (most recent call last):&lt;/p&gt;    &lt;p align="justify"&gt;&amp;#160;&amp;#160; File &amp;quot;&amp;lt;stdin&amp;gt;&amp;quot;, line 1, in ?&lt;/p&gt;    &lt;p align="justify"&gt; ZeroDivisionError: integer division or modulo by zero&lt;/p&gt;    &lt;p align="justify"&gt;&amp;gt;&amp;gt;&amp;gt; 4 + spam*3&lt;/p&gt;    &lt;p align="justify"&gt; Traceback (most recent call last):&lt;/p&gt;    &lt;p align="justify"&gt;&amp;#160;&amp;#160; File &amp;quot;&amp;lt;stdin&amp;gt;&amp;quot;, line 1, in ?&lt;/p&gt;    &lt;p align="justify"&gt; NameError: name 'spam' is not defined&lt;/p&gt;    &lt;p align="justify"&gt; &amp;gt;&amp;gt;&amp;gt; '2' + 2&lt;/p&gt;    &lt;p align="justify"&gt; Traceback (most recent call last):&lt;/p&gt;    &lt;p align="justify"&gt;&amp;#160;&amp;#160; File &amp;quot;&amp;lt;stdin&amp;gt;&amp;quot;, line 1, in ?&lt;/p&gt;    &lt;p align="justify"&gt; TypeError: cannot concatenate 'str' and 'int' objects&lt;/p&gt;&lt;/blockquote&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8402087514691545481-5884168784839636150?l=aprendepython.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/RECbbX9cqN70r8X-N1lHKStjXME/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/RECbbX9cqN70r8X-N1lHKStjXME/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/RECbbX9cqN70r8X-N1lHKStjXME/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/RECbbX9cqN70r8X-N1lHKStjXME/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AprendePythonComoSiEstuvierasEnPrimero/~4/l97T5YsNxvs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://aprendepython.blogspot.com/feeds/5884168784839636150/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://aprendepython.blogspot.com/2010/01/excepciones.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8402087514691545481/posts/default/5884168784839636150?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8402087514691545481/posts/default/5884168784839636150?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AprendePythonComoSiEstuvierasEnPrimero/~3/l97T5YsNxvs/excepciones.html" title="Excepciones" /><author><name>Raúl PM</name><uri>http://www.blogger.com/profile/13357136732634502274</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_6HxOwVd7teU/SokcPI5k_JI/AAAAAAAAAAM/3Kq9NAgp2wU/S220/Da_vinci_dragon.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://aprendepython.blogspot.com/2010/01/excepciones.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkACRXo8cCp7ImA9WxBQGEg.&quot;"><id>tag:blogger.com,1999:blog-8402087514691545481.post-8156322598388361915</id><published>2009-12-16T23:44:00.000+01:00</published><updated>2010-01-18T23:46:04.478+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-01-18T23:46:04.478+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="diccionarios" /><title>Diccionarios</title><content type="html">&lt;p align="justify"&gt;Otro de los tipos de estructuras de Python son los diccionarios. Para tener una idea de que es un diccionario lo mejor es pensar que es como un conjunto no ordenado de pares &lt;em&gt;clave: valor&lt;/em&gt;, con el requerimiento de que las claves sean únicas (dentro de un diccionario en particular).&lt;/p&gt;  &lt;p align="justify"&gt;Un par de llaves crean un diccionario vacío: {}. Colocar una lista de pares clave:valor separados por comas entre las llaves añade pares clave:valor iniciales al diccionario; esta también es la forma en que los diccionarios se presentan en la salida.&lt;/p&gt;  &lt;p align="justify"&gt;Las operaciones principales sobre un diccionario son guardar un valor con una clave y extraer ese valor dada la clave. También es posible borrar un par clave:valor con del. Si usas una clave que ya está en uso para guardar un valor, el valor que estaba asociado con esa clave se pierde. Es un error extraer un valor usando una clave no existente.&lt;/p&gt;  &lt;p align="justify"&gt;El método keys() de un diccionario devuelve una lista de todas las claves en uso de ese diccionario, en un orden arbitrario (si la queréis ordenada, simplemente usar el método sort() sobre la lista de claves). Para verificar si una clave está en el diccionario, utilizar la palabra clave in.&lt;/p&gt;  &lt;p align="justify"&gt;Pongo unos cuantos ejemplos para aclarar:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p align="justify"&gt;&amp;gt;&amp;gt;&amp;gt;persona= {'nombre':'Pedro', 'edad':25, 'casado':True} &lt;/p&gt;    &lt;p align="justify"&gt;&amp;gt;&amp;gt;&amp;gt;persona&lt;/p&gt;    &lt;p align="justify"&gt;{'edad': 25, 'nombre': 'Pedro', 'casado': True}&lt;/p&gt;    &lt;p align="justify"&gt;&amp;gt;&amp;gt;&amp;gt;persona['nombre']&lt;/p&gt;    &lt;p align="justify"&gt;Pedro&lt;/p&gt;    &lt;p align="justify"&gt;&amp;gt;&amp;gt;&amp;gt;persona['notas']= [None, None, None]&lt;/p&gt;    &lt;p align="justify"&gt;&amp;gt;&amp;gt;&amp;gt;persona&lt;/p&gt;    &lt;p align="justify"&gt;{'edad': 25, 'nombre': 'Pedro', 'casado': True, 'notas': [None, None, None]}&lt;/p&gt;    &lt;p align="justify"&gt;&amp;gt;&amp;gt;&amp;gt;persona['notas'][0]= 5.8&lt;/p&gt;    &lt;p align="justify"&gt;&amp;gt;&amp;gt;&amp;gt;persona&lt;/p&gt;    &lt;p align="justify"&gt;{'edad': 25, 'nombre': 'Pedro', 'casado': True, 'notas': [5.8, None, None]}&lt;/p&gt; &lt;/blockquote&gt;  &lt;p align="justify"&gt;Algunas operaciones de los diccionarios:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p align="justify"&gt;&amp;gt;&amp;gt;&amp;gt; dict([('sape', 4139), ('guido', 4127), ('jack', 4098)]) # crea un diccionario con dict()&lt;/p&gt;    &lt;p align="justify"&gt;{'sape': 4139, 'jack': 4098, 'guido': 4127}&lt;/p&gt;    &lt;p align="justify"&gt;&amp;gt;&amp;gt;&amp;gt;len(persona) # dimensiones del diccionario&lt;/p&gt;    &lt;p align="justify"&gt;&amp;gt;&amp;gt;&amp;gt;del persona['edad'] # eliminar un elemento del diccionario&lt;/p&gt;    &lt;p align="justify"&gt;&amp;gt;&amp;gt;&amp;gt;persona.has_key('peso')&lt;/p&gt;    &lt;p align="justify"&gt;&amp;gt;&amp;gt;&amp;gt;persona.items() # lista de tuplas (key,value)&lt;/p&gt;    &lt;p align="justify"&gt;&amp;gt;&amp;gt;&amp;gt;persona.keys() # lista de keys&lt;/p&gt;    &lt;p align="justify"&gt;&amp;gt;&amp;gt;&amp;gt;persona.values() # lista de values&lt;/p&gt;&lt;/blockquote&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8402087514691545481-8156322598388361915?l=aprendepython.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Pu0Vw06AmJxXDH5KO5XB2WwSioI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Pu0Vw06AmJxXDH5KO5XB2WwSioI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Pu0Vw06AmJxXDH5KO5XB2WwSioI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Pu0Vw06AmJxXDH5KO5XB2WwSioI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AprendePythonComoSiEstuvierasEnPrimero/~4/7MXnUyuobfI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://aprendepython.blogspot.com/feeds/8156322598388361915/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://aprendepython.blogspot.com/2009/12/diccionarios.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8402087514691545481/posts/default/8156322598388361915?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8402087514691545481/posts/default/8156322598388361915?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AprendePythonComoSiEstuvierasEnPrimero/~3/7MXnUyuobfI/diccionarios.html" title="Diccionarios" /><author><name>Raúl PM</name><uri>http://www.blogger.com/profile/13357136732634502274</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_6HxOwVd7teU/SokcPI5k_JI/AAAAAAAAAAM/3Kq9NAgp2wU/S220/Da_vinci_dragon.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://aprendepython.blogspot.com/2009/12/diccionarios.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkECRXw7eCp7ImA9WxBQGEg.&quot;"><id>tag:blogger.com,1999:blog-8402087514691545481.post-5753240236006006457</id><published>2009-12-16T23:43:00.000+01:00</published><updated>2010-01-18T23:44:24.200+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-01-18T23:44:24.200+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="conjuntos" /><title>Conjuntos</title><content type="html">&lt;p align="justify"&gt;Otro de los tipos de estructuras que soporta Python son los conjuntos. Un conjunto es una colección no ordenada y sin elementos repetidos. Los conjuntos también soportan operaciones matemáticas como la unión, intersección, diferencia, y diferencia simétrica.&lt;/p&gt;  &lt;p align="justify"&gt;Vamos a ver unos cuantos ejemplos para que queden un poco más claros:&lt;/p&gt;  &lt;p align="justify"&gt;&amp;gt;&amp;gt;&amp;gt; basket = ['apple', 'orange', 'apple', 'pear', 'orange', 'banana']&lt;/p&gt;  &lt;p align="justify"&gt;&amp;gt;&amp;gt;&amp;gt; fruit = set(basket) # crea un conjunto sin duplicados&lt;/p&gt;  &lt;p align="justify"&gt;&amp;gt;&amp;gt;&amp;gt; fruit&lt;/p&gt;  &lt;p align="justify"&gt;set(['orange', 'pear', 'apple', 'banana'])&lt;/p&gt;  &lt;p align="justify"&gt;&amp;gt;&amp;gt;&amp;gt; 'orange' in fruit # comprobación rápida de pertenencia al conjunto&lt;/p&gt;  &lt;p align="justify"&gt;True&lt;/p&gt;  &lt;p align="justify"&gt;&amp;gt;&amp;gt;&amp;gt; 'crabgrass' in fruit&lt;/p&gt;  &lt;p align="justify"&gt;False&lt;/p&gt;  &lt;p align="justify"&gt;&amp;gt;&amp;gt;&amp;gt; a = set('abracadabra')&lt;/p&gt;  &lt;p align="justify"&gt;&amp;gt;&amp;gt;&amp;gt; b = set('alacazam')&lt;/p&gt;  &lt;p align="justify"&gt;&amp;gt;&amp;gt;&amp;gt; a # letras que hay en el conjunto (recordad, sin repeticiones)&lt;/p&gt;  &lt;p align="justify"&gt;set(['a', 'r', 'b', 'c', 'd'])&lt;/p&gt;  &lt;p align="justify"&gt;&amp;gt;&amp;gt;&amp;gt; a - b # letras en a pero no en b&lt;/p&gt;  &lt;p align="justify"&gt;set(['r', 'd', 'b'])&lt;/p&gt;  &lt;p align="justify"&gt;&amp;gt;&amp;gt;&amp;gt; a | b # letras en cualquiera de los conjuntos, a o b&lt;/p&gt;  &lt;p align="justify"&gt;set(['a', 'c', 'r', 'd', 'b', 'm', 'z', 'l'])&lt;/p&gt;  &lt;p align="justify"&gt;&amp;gt;&amp;gt;&amp;gt; a &amp;amp; b # letras coincidentes en ambos conjuntos, en a y b&lt;/p&gt;  &lt;p align="justify"&gt;set(['a', 'c'])&lt;/p&gt;  &lt;p align="justify"&gt;&amp;gt;&amp;gt;&amp;gt; a ^ b # letras en a o b, pero no en ambos&lt;/p&gt;  &lt;p align="justify"&gt;set(['r', 'd', 'b', 'm', 'z', 'l'])&lt;/p&gt;  &lt;p align="justify"&gt;Os recomiendo que probéis los ejemplos y comprobéis que salen bien.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8402087514691545481-5753240236006006457?l=aprendepython.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/NiRA7UEYN4E9pVHKEzMn3q34-hs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/NiRA7UEYN4E9pVHKEzMn3q34-hs/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/NiRA7UEYN4E9pVHKEzMn3q34-hs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/NiRA7UEYN4E9pVHKEzMn3q34-hs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AprendePythonComoSiEstuvierasEnPrimero/~4/ggLMYiQQHK8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://aprendepython.blogspot.com/feeds/5753240236006006457/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://aprendepython.blogspot.com/2009/12/conjuntos.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8402087514691545481/posts/default/5753240236006006457?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8402087514691545481/posts/default/5753240236006006457?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AprendePythonComoSiEstuvierasEnPrimero/~3/ggLMYiQQHK8/conjuntos.html" title="Conjuntos" /><author><name>Raúl PM</name><uri>http://www.blogger.com/profile/13357136732634502274</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_6HxOwVd7teU/SokcPI5k_JI/AAAAAAAAAAM/3Kq9NAgp2wU/S220/Da_vinci_dragon.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://aprendepython.blogspot.com/2009/12/conjuntos.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkICR3c4eyp7ImA9WxBQGEg.&quot;"><id>tag:blogger.com,1999:blog-8402087514691545481.post-8273624209091950344</id><published>2009-12-16T23:42:00.000+01:00</published><updated>2010-01-18T23:42:46.933+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-01-18T23:42:46.933+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="linea de comandos" /><category scheme="http://www.blogger.com/atom/ns#" term="argumentos" /><title>Argumentos en línea de comandos</title><content type="html">&lt;p align="justify"&gt;Existe un módulo en Python para recibir argumentos desde la línea de parámetros, este módulo se llama &lt;b&gt;&lt;i&gt;sys&lt;/i&gt;&lt;/b&gt;. Veamos un ejemplo con la utilización de este módulo:&lt;/p&gt;  &lt;p align="justify"&gt;import sys&lt;/p&gt;  &lt;p align="justify"&gt;print sys.argv&lt;/p&gt;  &lt;p align="justify"&gt;sys.argv[0] -&amp;gt; contiene un string con el nombre del programa&lt;/p&gt;  &lt;p align="justify"&gt;sys.argv[1] -&amp;gt; contiene un string con el primer parámetro en línea de comandos&lt;/p&gt;  &lt;p align="justify"&gt;sys.argv[1] -&amp;gt; contiene un string con el segundo parámetro en línea de comandos&lt;/p&gt;  &lt;p align="justify"&gt;...&lt;/p&gt;  &lt;p align="justify"&gt;sys.argv[n] -&amp;gt; contiene un string con n-ésimo parámetro&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8402087514691545481-8273624209091950344?l=aprendepython.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/HSlqVo6_LNdXpX_6wiXpBQQqWwY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/HSlqVo6_LNdXpX_6wiXpBQQqWwY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/HSlqVo6_LNdXpX_6wiXpBQQqWwY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/HSlqVo6_LNdXpX_6wiXpBQQqWwY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AprendePythonComoSiEstuvierasEnPrimero/~4/E4lUmw8t4aY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://aprendepython.blogspot.com/feeds/8273624209091950344/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://aprendepython.blogspot.com/2009/12/argumentos-en-linea-de-comandos.html#comment-form" title="2 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8402087514691545481/posts/default/8273624209091950344?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8402087514691545481/posts/default/8273624209091950344?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AprendePythonComoSiEstuvierasEnPrimero/~3/E4lUmw8t4aY/argumentos-en-linea-de-comandos.html" title="Argumentos en línea de comandos" /><author><name>Raúl PM</name><uri>http://www.blogger.com/profile/13357136732634502274</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_6HxOwVd7teU/SokcPI5k_JI/AAAAAAAAAAM/3Kq9NAgp2wU/S220/Da_vinci_dragon.jpg" /></author><thr:total>2</thr:total><feedburner:origLink>http://aprendepython.blogspot.com/2009/12/argumentos-en-linea-de-comandos.html</feedburner:origLink></entry></feed>

