lecciones 1 al 6 practica.docx

46
Lección 1: Iniciando en la programación con Python Unknown junio 16, 2013 Una pequeña introducción sobre qué es Python Python es un lenguaje de programación de alto nivel el cual tiene una sintaxis muy limpia y que favorece a un código legible, creando buenos hábitos de programación (sobre todo a un iniciante en el tema). Python permite varios estilos de programación: programación orientada a objetos, programación imperativa y programación funcional. También hay que tener en cuenta que Python es un lenguaje interpretado, no compilado. Otra ventaja de programar en Python es la portabilidad. Es un lenguaje multiplataforma, es decir se puede programar en sistemas Windows, Linux y Mac y transportar el codigo y ejecutarlo sin problemas mayores en cualquiera de ellos. Además, Python posee una licencia de código abierto, lo cual es excelente ya que de esta manera hay una comunidad de programadores que aportan conocimientos que ayudan a mejorar este lenguaje de programación. Un claro ejemplo de ello es la cantidad de módulos y paquetes adicionales (de terceros) que se pueden añadir a la instalación básica de Python, tales como wxPython, PyGame, NumPy, SciPy, Matplotlib, PyQt entre otros muchos, los mismos que hacen a este lenguaje mucho mas potente. Instalación de Python La instalación es muy sencilla y como mencioné antes la descarga es gratuita. Les dejo el enlace desde la web oficial para descargar python . Pueden usar la versiones Python 2 o Python 3. Personalmente uso la version Python 2.5.4 para

Transcript of lecciones 1 al 6 practica.docx

Lección 1: Iniciando en la programación con Python

Unknown junio 16, 2013

Una pequeña introducción sobre qué es Python

Python es un lenguaje de programación de alto nivel el cual tiene una sintaxis muy limpia y que favorece a un código legible, creando buenos hábitos de   programación (sobre todo a un iniciante en el tema).

Python permite varios estilos de programación: programación orientada a objetos, programación imperativa y programación funcional. También hay que tener en cuenta que Python es un lenguaje interpretado, no compilado.

Otra ventaja de programar en Python es la portabilidad. Es un lenguaje multiplataforma, es decir se puede programar en sistemas Windows, Linux y Mac y transportar el codigo y ejecutarlo sin problemas mayores en cualquiera de ellos.

Además, Python posee una licencia de código abierto, lo cual es excelente ya que de esta manera hay una comunidad de programadores que aportan conocimientos que ayudan a mejorar este lenguaje de programación. Un claro ejemplo de ello es la cantidad de módulos y paquetes adicionales (de terceros) que se pueden añadir a la instalación básica de Python, tales como wxPython, PyGame, NumPy, SciPy, Matplotlib, PyQt entre otros muchos, los mismos que hacen a este lenguaje mucho mas potente.

Instalación de Python

La instalación es muy sencilla y como mencioné antes la descarga es gratuita. Les dejo el enlace desde la web oficial para descargar python. Pueden usar la versiones Python 2 o Python 3. Personalmente uso la version Python 2.5.4 para sistemas de 32bit (en windows) y version 2.6 en Ubuntu 10.10 que son las versiones con las que trabajaremos en los siguientes posts... ¿algún motivo en especial por usar las versiones Python 2 en general? Si, la compatibilidad. Como bien explican en la web www.python.org, hay más complementos (módulos) de terceros compatibles para Python en sus versiones 2 que en la 3.

Si se deciden por la versión Python 2.5.4. para Windows, aquí les dejo el enlace para descargar Python 2.5.4 válido para sistemas de 32 o 64 bits. Si tienen Ubuntu o alguna otra distro de Linux, Python ya viene instalado por defecto.

Bueno amigos... esta fue una breve presentación sobre Python... en el siguiente post seguiremos con los conceptos esenciales para conocer mejor este lenguaje de programación. Si estas interesado, ve a la siguiente presentación acerca del IDLE, el entorno de desarrollo de Python.

Lección 2: IDLE, el entorno de desarrollo de Python

Unknown julio 06, 2011 Python, como mencioné en un post anterior, es el nombre del lenguaje de programación de alto nivel.

IDLE (Integrated DeveLopment Environment for Python - Entorno de Desarrollo Integrado) es el entorno de desarrollo que nos va a permitir editar y ejecutar los programas (también llamados Scripts de Python). Se pueden crear y ejecutar programas en Python sin utilizar IDLE, pero IDLE nos hace mucho más fáciles esas tareas (en realidad, IDLE es un vocablo en inglés que significa holgazán).

Asumo que ya tienen instalado Python en sus Pc's, sino es así, primero tienes que descargar e instalar Python: 

Observación:  Antes de empezar, tengan en cuenta que usaremos imágenes para guiarnos mejor pero a veces no se ven bien los detalles, por ello, dar click en las imágenes para ver el tamaño original y poder apreciar mejor las especificaciones. Aclarado esto, empecemos !!!

Abramos el IDLE  para conocerlo mejor: en Inicio / Todos los programas / Python 2.5 (carpeta) / IDLE (Python GUI), 

se abrirá la ventana principal de IDLE, como puedes ver en la imagen siguiente.

  

En esta ventana podremos ver la versión de Python y la versión de IDLE que usaremos. En la ventana de IDLE podemos escribir órdenes de Python después del prompt >>> (el mismo que espera por alguna indicación o instrucción). Al presionar Enter (Intro), IDLE ejecutará la orden requerida inmediatamente. Si la orden produce algún resultado, éste se mostrará en color azul y sin el prompt a su izquierda. Hagamos un simple ejemplo como una resta o multiplicación:

>>> 15-96>>> 6*424

Al terminar de ejecutar la orden, IDLE vuelve a mostrar el prompt, el cual nuevamente está en espera de una orden.

Editor de Python: Algo colorido

Al escribir órdenes en IDLE podrás notar que algunas palabras cambian de color ¿Pero para qué sirve esto de los colores? pues bueno... los colores nos ayudarán a identificar las instrucciones que se vayan dando.

Como por ejemplo, las palabras reservadas de Python (palabras que son parte del lenguaje de programación) se muestran en color naranja y morado. Las cadenas de texto (strings) se muestran en verde. Los resultados de las órdenes se escriben en azul y los mensajes de error se muestran en rojo. Mira los colores que se generan en este ejemplo:

>>> input('Hola !! ingresa un numero: ')Hola !! ingresa un numero: 66>>> print "gracias"gracias>>> input("Ingrese un numero: ")Ingrese un numero: uno

Traceback (most recent call last):File "", line 1, in input("Ingrese un numero: ")File "", line 1, in NameError: name 'uno' is not defined>>>

Observa que las cadenas de texto deben estar rodeadas con comillas (") o apóstrofes ('). Mira también la tercera orden del ejemplo anterior, Python escribe un mensaje de error en inglés que indica dónde se ha producido el error y por qué. 

Hasta aquí sólo se ven instrucciones pero ¿Cómo guardo mis programas en archivos?

Bueno te explico... como ya habrás notado, el inconveniente de la ventana principal de IDLE es que para repetir una orden hay que volver a escribirla. Esto es útil y suficiente si queremos practicar órdenes sencillas, ¿pero si se trata de un programa más complejo?¿que hacemos? pues... en ese caso es más conveniente guardar el programa en un archivo para poder recuperarlo o reeditar el código en cualquier momento que queramos. Además, si le añadimos el hecho de que a veces (por no decir muchas) los programas no salen bien a la primera, pues guardar el archivo nos va  permitir corregir los errores sin tener que volver a escribir todo de nuevo.

Todo esto se puede hacer con el mismo IDLE, abriendo una nueva ventana mediante el menú File / New Window. 

Al elegir esta opción se abrirá una nueva ventana como la de la imagen.

Verás que en esta ventana ya no aparece el prompt porque es simplemente un editor de texto (como el "block de notas" pero que también colorea las palabras). Escribamos por ejemplo el siguiente programa:

input('Hola !! ingresa un numero: ')print "gracias"Habrás notado que en esta ventana, cuando pulsas Enter (Intro), no se ejecuta la orden

como en los ejemplos previos, sino que simplemente se pasa a la siguiente línea. Entonces... ¿cómo ejecutar el programa? Para poder ejecutarlo, primero es necesario guardar el programa en el disco duro del ordenador o un pendrive (usb). Para ello, ve al menú File opción Save As... (también puedes utilizar la combinación de teclas Ctrl+S).

La primera vez que guardes un programa se abrirá la ventana de diálogo estándar de Windows. 

Desplázate hasta la carpeta donde guardes tus programas (por ejemplo una carpeta llamada "Proyectos Python") y escribe en la caja de texto "Nombre de archivo" el nombre que le quieras dar al programa, yo lo llamaré "prueba.py" (sin comillas).

Importante: Al escribir el nombre, no olvides escribir también la extensión ".py" (sin comillas). Si no escribes la extensión, IDLE no colorea las palabras (hay otra razón mas

importante de escribir .py, pero lo explicaré mas adelante). Una vez guardado el programa, el nombre del archivo aparecerá en la barra de título de la ventana.

Guardado el programa, puedes ejecutarlo mediante la opción del menú Run / Run module (también puedes utilizar la tecla F5). La salida del programa se mostrará en la ventana principal de IDLE.

Ten en cuenta lo siguiente: 

Cada vez que modifiques el código del programa (aunque sea por una coma o un punto) antes de ejecutarlo con F5, primero debes guardar los cambios. Para esto, ya es mas sencillo ya que sólo necesitarás presionar Ctrl + S (o también desde el menú File / Save - y no Save As...) y se guardarán las modificaciones sobre el mismo archivo que fue creado previamente. 

Por último, a veces sin darnos cuenta presionamos alguna tecla y queremos ejecutar el programa con F5 y vemos que no funciona inmediatamente (suponiendo que no hay error en el código escrito). En ese caso, antes de que el programa se ejecute, Python primero te pedirá guardar los cambios o modificaciones hechas. Pero hay una forma de ver por nosotros mismos si se han producido cambios (incluso si no nos damos cuenta de que se produjeron por algún error presionando alguna tecla). Bueno... cada vez que se produsca un cambio, en la barra de título verás un * en ambos extremos del nombre del archivo, lo cual indicará que el programa fue modificado en su escritura, por lo tanto antes de ejecutar el programa, primero debemos guardar las modificaciones (o arreglar el error). 

Listo !!! con esto ya estas preparado sobre las nociones mas básicas para saber el significado de ciertas cosas que iremos viendo en el IDLE y no cometer algún error el manejar los archivos que iremos creando con Python...

Bueno.. en la siguiente entrada empezaremos con nuestro primer script en Python.

Lección 3: Primer script en el lenguaje Python

Unknown julio 06, 2011

Hola de nuevo... en los dos primeros posts vimos una introducción "teórica" sobre algunos conceptos propios de Python, como las versiones que estan disponibles a la fecha e instalación. También hemos visto a fondo lo que notaremos en su IDLE de manera que ahora estamos mas familiarizados con la forma en que se muestra el código fuente de un programa en Python.  Por último, vimos como guardar y ejecutar nuestros scripts (es decir nuestros programas hechos en Python).

La pregunta es... ¿qué scripts guardaremos si aún no hemos creado programa alguno? Bueno... ese es el motivo de este post: "Crear nuestro primer Script".

La mayoria de tutoriales, libros y demás artículos para iniciantes en cualquier lenguaje de programación ya sea Python, Java, Delphi, C, C++, Pascal, etc... normalmente tienen como

primer programa de creación al tan famoso "Hola Mundo". Bueno... les digo que este post será la excepción.

Nuestro primer script en Python será un programa que pedirá como entrada algún dato numérico, confirmará si el dato ingresado cumple con el requerimiento solicitado y finalmente mostrará un texto (string) con esa confirmación en pantalla.  Manos a la obra... Abre el IDLE, luego abre una ventana nueva en el menú File / New Window, pega este código en esa ventana y guardalo:# -*- coding:utf-8 -*-# Primer programa en Python - prueba.py

dato=input("Saludos amigo!! ingresa un número mayor que cero: ")

while dato<=0: print "El número no es el indicado, debe der mayor que cero" dato=input("Ingrese el número nuevamente: ")

print "Correcto!! El número ingresado es ",dato," ,gracias !!"

from time import sleepsleep(5)

Dato importante 1: Primero me gustaría empezar recalcando que Python es Case sensitive ¿qué es esto? pues... es decir que Python hace diferencia entre mayúsculas y minúsculas (en realidad Case sensitive significa sensible a las mayúsculas/minúsculas) por lo tanto las palabras Hola y hola son variables diferentes para Python.

Explicación del código:

La línea 1 es la codificación de caracteres, utf-8, para poder poner tildes, eñes y demás. Sin esta línea y si tu código tiene carácteres especiales, el programa no funcionaría desde el modo consola (no te preocupes veremos esto luego). Sin embargo al ejecutarlo desde el IDLE (presionando F5), python se da cuenta del uso de estos carácteres y te sugiere poner la línea 1 mostrándote una pequeña ventana de alerta donde debes presionar la opción "Edit my file", de esta manera python añadirá en la primera línea de tu código lo siguiente # -*- coding: cp1252 -*- la cual tiene el mismo efecto que lo escrito con utf-8. Esta línea 1 siempre debemos ponerla en la primera línea de código de todos los programas que crearemos.

La línea 2 es sólo un comentario. Ten en cuenta que en python para hacer un comentario este debe ser encabezado por el símbolo # , el comentario será lo que se escriba en esa línea sin dar un salto a la siguiente. Al dar un salto de línea se sale del comentario. Si una línea no fue suficiente y queremos seguir comentando sobre lo mismo, en ese caso continuamos en la siguiente línea pero previamente escribimos como primer caracter el símbolo #.

La linea 4 permite la entrada de datos, en este caso se pide un número. La sentencia input (entrada) nos permite ingresar un dato de tipo numérico desde el teclado al programa. El efecto en pantalla es que cuando esta sentencia se ejecuta hace una pausa esperando por el valor requerido que es ingresado por el usuario. Ten en cuenta que nosotros estamos  almacenando en una variable llamada dato el valor que es ingresado por input. La estructura de input es la siguiente:

input(cadena)

donde cadena es un texto entre comillas ( " " ) o apóstrofes ( ' ' ).

Dato importante 2: Fijate que en Python no es necesario declarar el tipo de variable de dato, es decir no es necesario poner si es de tipo integer (entero) ó float (real). Con sólo darle un valor a la variable, Python se encarga de establecer su tipo. Por ejemplo, si ingresamos dato = 2 python lo declara de tipo integer ( es decir entero), pero si ingresamos dato = 2.1 o incluso dato = 2.0 python lo declara de tipo float (osea real).La línea 6 es un bucle o ciclo, es una sentencia que se realiza repetidas veces a un trozo aislado de código, hasta que la condición asignada a dicho bucle deje de cumplirse. Las líneas 7 y 8 son las tareas o sentencias para el bucle. Analicemos este grupo: while dato<=0: print "El número no es el indicado, debe der mayor que cero" dato=input("Ingrese el número nuevamente: ")

while < condición >:       tarea 1       tarea 2       tarea 3       . . .

¿cómo funciona el bucle? pues... al iniciar el bucle primero se analiza la condición, si esta fuera verdadera entonces las sentencias del while se ejecutan y luego se regresa la dirección del programa otra vez a analizar la condición, si esta nuevamente es verdadera entonces otra vez de ejecutan las sentencias del bucle y otra vez se vuelve a analizar la condición, y asi sucesivamente ¿cuándo se detiene el bucle?, cuando al analizar la condición esta resulte falsa entonces no se ejecutan las sentencias y se sale del bucle (o se termina el bucle).

en el caso de la línea 6, en español estas líneas serían como decir lo siguiente:mientras que dato sea menor o igual a cero: imprime "El número no es el indicado, debe der mayor que cero" dato=ingrese("Ingrese el número nuevamente: ")

podemos ver que mientras que el valor asignado a dato sea menor o igual a cero (que la condición sea verdadera), el bucle se repetirá una y otra vez. Por ejemplo si ingresamos dato = -2 que es menor que cero, la condición del bucle es verdadera por lo tanto las sentencias del bucle se ejecutarán  mostrando: (1) que el número que ingresamos no es el que fue requerido (un número mayor a 0), (2) pidiendo el ingreso de un nuevo valor para dato, y (3) con el nuevo valor asignado a dato, devolviendo la dirección del programa para analizar la condición otra vez. Pero que pasaría si ingresamos dato = 5, en ese caso al analizar la condición tendríamos que 5 es menor o igual a cero lo cual es falso, entonces no se ejecutan las sentencias del bucle y saltamos fuera de él. .... Ufff al fin fuera del bucle !!

¿si el bucle nos molesta tanto porque lo escribimos en nuestro script? pues... el bucle while es como alguien que verifica que el usuario final (el que usará nuestro programa) ingrese los datos que nosotros requerimos y no los que ellos deseen. Es una herramienta muy útil, si queremos limitar la entrada de datos a ciertos patrones.

La línea 10 es print, que es como decir mostrar en pantalla donde lo que se mostrará en pantalla será las variables o cadenas de texto mencionadas despues de él. print es capáz de imprimir en pantalla : variables, strings o combinaciones de ellas separadas por comas.

La línea 12 es algo que nos permitirá ver los resultados si ejecutamos nuestro escript en modo consola. Expliquemos primero esto. Anteriormente habíamos visto que para ejecutar un script de Python teníamos que hacerlo desde el IDLE mediante el menu Run / Run Module o presionando F5. sin embargo hay otra manera talvéz más familiar de ejecutar nuestros scripts. Simplemente nos vamos a la carpeta donde se encuentra el script que hemos creado y luego hacemos doble click sobre él ... y listo... veremos nuestro programa ejecutándose en modo consola (en windows es CMD la ventana de fondo negro).

Pero surgiría un pequeño problema, y es aquí donde explico el uso de la línea 12. En la ejecución desde el IDLE con F5 no necesitaríamos esta línea porque veríamos toda la ejecución del programa sin problemas desde la primera hasta la última línea de código. Pero en modo consola, las líneas de código del programa se ejecutan tan rápido que el programa se cierra al instante y talvéz no podamos visualizar las últimas líneas de código ejecutarse. ¿entonces nuestro programa esta mal hecho? NO... el programa tiene un código fuente correcto solamente que se ejecuta muy rápido y al no haber mas líneas de código que ejecutar se cierra la ventana inmediatamente. ¿Cómo lo arreglamos? con la línea 12. Esta línea importa desde una biblioteca (library en inglés) un módulo. Especificamente importamos el módulo sleep (dormir) desde la biblioteca time (tiempo) ¿que hace exactamente este módulo sleep? pues dormir o pausar el programa en ese instante por un tiempo en segundos. En nuestro problema le pusimos sólo 5 segundos. Con esta sentencia ubicada al final de todas las demás líneas, estamos diciéndole al programa que al terminar de ejecutar las líneas se espere 5 segundos hasta cerrar la ventana del programa, permitiéndonos ver la ejecución completa del script.   Listo !!! ... se acabó

pero podrías estar preguntándote ¿Qué pasó con las líneas 3, 5 y 11? bueno... lee lo siguiente:

Dato importante 3: Como habrás notado las líneas 3, 5 y 11 son líneas en blanco. ¿tendrán algún efecto estas líneas en momento de ejecución del script? pues NO. Las líneas en blanco sólo nos ayudan a mantener nuestro código mas ordenado pero al momento de ejecutar el script (nuestro programa), Python hace caso omiso de ellas y las ignora. Esa es la razón por la cual al ejecutar el script viste que todas las líneas de texto (strings) estaban una después de la otra sin espacios verticales entre ellas. Por eso no importa cuantas líneas en blanco dejes, en momento de ejecución Python las ignora completamente.Listo amigos... espero haya quedado claro todo lo mencionado anteriormente. He tratado de ser lo más detallista posible en la explicacion de las líneas de código con respecto a lo que cada una de ellas hacen durante su ejecución, por ahí también les di unos datos importantes a tener en cuenta... talvéz me extendí un poco en los conceptos ... pero por ahi se dice que "es mejor que sobre a que falte".

1. Muy buen tutorial, muchas felicidades, solo hay algo que no entendi, ¿Cómo determina Python cuantas tareas(lineas de codigo) debe realizar el bucle? ya que mencionas que las lineas en blanco no son tomadas en cuenta y no veo por ningun lado algun signo como en C el {}.

Gracias y Saludos!!!

Jasz Andre 4.1diciembre 19, 2012 2:25 p.m.

Hola,

Python sabrá cuantas tareas o líneas de código debe realizar en el bucle a través de la indentación, veamos por ejemplo estos dos bloques aparentemente iguales:

Bloque 1:

while dato<=0:     print "El número no es el indicado, debe der mayor que cero"     dato=input("Ingrese el número nuevamente: ")

Bloque 2:

while dato<=0:print "El número no es el indicado, debe der mayor que cero"dato=input("Ingrese el número nuevamente: ")

Estos dos bloques de código NO son iguales para Python, ya que Python reconoce la indentación en el primero y la usa para saber el inicio y final del bucle, entonces para python la última línea que tenga la indentación será reconocida como la última línea del bucle.

En el segundo bloque que NO tiene indentación obtendrías un error como el siguiente:

Line 3: print "El numero no es el indicado, debe der mayor que cero"IndentationError: expected an indented block

Es claro lo que se solicita para el bucle.Espero haber aclarado la duda. Saludos.

Lección 4: Herramientas de Control de Flujo en Python

Unknown julio 09, 2011

Saludos otra vez, en esta ocasión veremos algunos tipos de Control de Flujo que usaremos en nuestros scripts... Empecemos !!

Control de Flujo Simple: Construcciones if

Quizá la mejor conocida de las construcciones es if ("si" en Español). Veamos un ejemplo: este script pedirá al usuario un número, luego evaluará si el número es positivo, negativo o cero mostrando el resultado en un mensaje. Bueno... abre el IDLE de Python, luego abre una ventana nueva en el menú File / New Window, pega este código en esa ventana (editor), guardalo y ejecútalo en modo consola (doble click sobre el archivo guardado). ¿entiendes el funcionamiento interno del script?, si es así ... excelente !!! , caso contrario... no te preocupes que lo explicaré en un momento# -*- coding: utf-8 -*-# control de flujo simple prueba_2.py

x = input('Ingrese un número: ')if x > 0: print 'El número es positivo'elif x < 0: print 'El número es negativo'else: print 'El número es cero'

from time import sleep

sleep(5)

primero expliquemos el funcionamiento de la construcción if

if <condición_1 es verdadera> :       acción 1.1       acción 1.2       . . .elif <condición_2 es verdadera> :       acción 2.1       acción 2.2       . . .else :       acción a       acción b       . . .

Puede haber cero o más partes elif y la parte else (si no) es opcional. La palabra clave elif es una abreviatura de else if (a lo mejor viste esto en otros lenguajes de programación). Una secuencia if . . . elif . . . elif . . . es la sustituta de las sentencias switch o case de otros lenguajes. ¿Cómo se ejecuta la construcción if? ... veamos

1. Primero se evalúa la condición_1 del if.2. Si la evaluación resulta verdadera, se ejecutan las acciones del if : acción 1.1, acción

1.2, acción 1.3, etc... luego de ejecutarse estas acciones, se termina toda la estructura y las demás condiciones ni siquiera se evalúan, es decir se sale completamente del if.

3. Pero, si la evaluación de la condición_1 fuera falsa entonces se evalúa la condición_2 del elif. Si el resultado de esta evaluación es verdadero, entonces se ejecutan sus acciones: acción 2.1, acción 2.2, acción 2.3, etc... y luego se termina la estructura completamente.

4. En caso de que las evaluaciones de las condiciones anteriores sean todas falsas, entonces se ejecutan las acciones del else y luego se termina la estructura (ten en cuenta que aquí no hay condiciones).

Para resumir, ¿cómo funciona? pues... se evalua la primera condición y luego dice: "si esta es cierta entonces ejecuto sus acciones y salgo de la estructura, pero si es falsa entonces paso a evaluar la siguiente condición", ya en la segunda condición dice: "si esta es cierta ejecuto sus acciones y luego termino la estructura, pero si es falsa, paso al siguiente"... y asi sucesivamente... Si todas son falsas dice: "ejecuto si o si las acciones de respaldo del else y salgo de la estructura". 

De esto podemos notar que se ejecuta las acciones de sólo una de las condiciones, aquella que resulte verdadera.

Ahora que sabemos el funcionamiento de la estructura if, expliquemos nuestro script del ejemplo: 

Cuidado !!  la indentación es importante: ¿notaste que las palabras if, elif y else están a la misma altura en sus respectivas líneas, mientras que print esta indentado osea desplazado un poco  hacia la derecha? bueno... pues esa ordenación es importante. if, elif y else son, por decirlo menos técnico, del mismo rango de prioridad por tanto cualquiera de ellos no puede estar indentado dentro del otro (a menos que se trate de una subconstrucción if). Te invito a indentar la línea del elif o la del else de nuestro ejemplo y verás que el programa no se ejecutará por ese error. Por otro lado, print es una tarea a ejecutarse ya sea del if, elif o else por lo tanto ella si debe estar indentada.... recuerda la indentación es importante no sólo en nuestro ejemplo sino en todo script hecho en python.La línea 1 es la codificación para poder escribir carácteres como tildes, eñes y demás.La línea 2 es un simple comentarioLa línea 4  es la instrucción input que le permite al usuario ingresar data numérica a través del tecladoLas líneas 5 y 6 son la escructura if donde se evalua su condición. Si ingresamos por ejemplo x = 3 esta condición sería cierta (pues 3 es mayor que cero) y por lo tanto la instrucción   print de la línea 6 al ejecutarse mostraría en pantalla el mensaje "El número es positivo."Las líneas 7 y 8 . Si la condición en la línea 5 es falsa y si el número ingresado fuera menor que cero, por ejemplo x = -5, entonces se verifica la condición de la línea 7 y se mostraría en pantalla el mensaje "El número es negativo."Las líneas 9 y 10. Si las condiciones anteriores son falsas, es decir si ingresamos el número x = 0 (ni negativo ni positivo) pues se ejecuta la línea 10 y la instrucción print nos mostraría "El número es cero."Las líneas 12 y 13. Cuando ejecutamos el programa en modo consola, estas dos líneas trabajan en conjunto para pausar el programa por unos segundos antes de cerrar la ventana de ejecución; de lo contrario, el programa cerrará su ventana muy rápido.

Control de Flujo Repetitivo: Construcciones For

La construcción For (para) es un poco diferente a lo acostumbrado en C o Pascal. En lugar de recorrer siempre una progresión aritmética (como en Pascal) o dejar al programador total libertad de elección de inicialización, comprobación y salto de paso (como en C), el For de Python recorre los elementos de una secuencia (una lista o cadena), en el orden en que aparecen en la secuencia. Si no conoces C o Pascal y por lo tanto no entendiste muy bien lo que acabo de mencionar, no te preocupes que con los ejemplos que mostraré aprenderás a usar construcciones For en Python sin ningún problema, pero creo que fue necesario mencionar eso para aquellos que si conocen esos lenguajes y vean una diferencia inmediata. Veamos un primer ejemplo para tener las cosas más claras:

Observación: En esta ocasión trabajaremos en la ventana principal del IDLE (donde se ve

el prompt), por lo tanto escribe una a una las instrucciones siguientes presionando Enter después de cada instrucción.>>> x = [2, 4, 9, 7, 15]>>> x[2, 4, 9, 7, 15]>>> type(x)type 'list'>>> for i in x: print i

249715

en este ejemplo primero hemos creado una lista de números x = [2, 5, 9, 7, 15], ten cuenta que las listas se crean entre corchetes. Como observas en el ejemplo, al escribir x y luego presionar Enter vemos esa lista de números almacenados en x. ¿quieres confirmar que x es una lista porque no me crees? esta bién... escribe type(x) como en el ejemplo y Python te confirmará que x es un  lista: type 'list'. Ahora veamos lo que nos interesa "La construcción For" en este caso aplicado a una lista numérica.

Te explico... todo empieza con la variable i. Primero nota que esta variable i no fue declarada previamente, pues es la primera vez que aparece ¿por qué? como te mencióne en un post anterior, en Python se puede usar las variables que queramos sin decir el tipo de ellas (no es necesario declarar las variables como string, integer, float, etc... para nada. Es lo bueno de Python !!!).

 Aclarado esto (a lo mejor ni lo notaste pero ahora ya sabes) ¿Cómo crees que funcione la construcción For?¿alguna idea? bueno... debes saber que For es un ciclo repetitivo donde las acciones dentro del For se repetirán tantas veces como la longitud de la variable x, en este caso 5 veces (pues x tiene 5 elementos).¿Como se inicia? La variable i toma como valor al primer elemento de la lista x ( es decir i = 2 ) y ejecuta todas las acciones dentro de la construcción (en nuestro caso sólo imprime el valor de i en pantalla), luego regresa y esta ves i toma como valor al segundo elemento de x ( es decir i = 4 ) y otra vez se ejecuta las mismas acciones que para el caso anterior (imprime en pantalla en nuestro ejemplo) y asi sucesivamente hasta que i toma el último valor de la lista x ( es decir i = 15 ) donde se ejecutan las acciones por última vez, luego de que i toma cada uno de los valores de la lista x, se termina el ciclo repetitivo For.  ¿Fácil verdad?

Hemos visto un ejemplo con una lista numérica, pero esto tambien es posible con una lista de strings o cadenas de texto. Veamos el segundo ejemplo:>>> y = ["hola","saludos","adios"]>>> y['hola', 'saludos', 'adios']>>> type(x)type 'list'

>>> for j in y: print j

holasaludosadios

La misma idea del ejemplo anterior, sólo que ahora la variable de recorrido es j la misma que uno a uno se autoasigna los elementos de la lista y que es una lista de strings. Sencillo verdad ??

Control de Flujo Repetitivo: Construcciones While

Esta construcción ya la vimos en el post anterior Primer script en el lenguaje Python. En ese post, estudiamos el funcionamiento de este bucle con detalle. Recordemos algo, con el siguiente ejemplo:

Abre una ventana nueva en menú File / New Window y escribe el siguiente código y guardalo. A continuación paso a explicar las líneas:# -*- coding: utf-8 -*-# construcción while

x = 4while x > 0: print x x = x-1 if x == 0: print 'el bucle se acabó'

from time import sleepsleep(5)

ejecuta el script ya sea en modo consola o usando el IDLE con F5. Verás que se ejecuta muy rápido, no toma ni un segundo en mostrar este resultado:>>> ================================ RESTART ================================>>> 4321el bucle se acabó>>>

Expliquemos el funcionamiento. Bueno, creamos una variable x = 4... luego viene el bucle While ¿Cómo funciona? pues asi:

1. Evalua la condición x > 02. Si al evaluar la condición esta resulta verdadera entonces se ejecutan las acciones

del bucle que en nuestro problema son: (a) imprimir en pantalla el número, (b)

restarle al número una unidad y luego (3) verificar si x en ese instante es cero o no. Luego que todas las acciones se han ejecutado, se regresa al punto 1. y nuevamente se evalua la misma condición (recuerda que x ya cambió de valor) y asi sucesivamente.

3. Termina la estructura cuando el resultado de la condición es falso.

En nuestro ejemplo, en cada instante del bucle se trata de verificar si x > 0. Al confirmarse ello, el valor de x diminuye en una unidad según la línea x = x-1 y se autoasigna a si mimo el nuevo valor disminuido, es decir los valores que toma la variable x son {4, 3, 2, 1, 0} una vez por cada ciclo ¿pero el 0 no se muestra? Cierto... pero el último valor de x es cero  momento en el cual se ejecuta la condicion del if mostrando el mensaje "el bucle se acabó" (pues 0 > 0 es falso) y allí termina el bucle. 

Nuestro ejemplo es un bucle que termina o finito, pero ¿hay bucles infinitos? Si... mira el siguiente ejemplo y ejecútalo:# -*- coding: utf-8 -*-# construcción while: bucle infinito

x = 1while x > 0: print x x = x+1

from time import sleepsleep(5)

ejecútalo con F5 o en modo consola... y sorpresa !!!! el script corre y corre y no se detiene mostrándonos números en una columna uno debajo del otro... dejalo por horas si quieres pero nunca se cerrará la ventana por si sola. Ok.. no te asustes...cierra la ventana como lo habitual y listo se acabó el programa. ¿por qué sucedió esto? Es fácil darse cuenta donde esta el problema: la condicion y la línea x = x+1. Con esta última línea x tomará los valores {1,2,3,4,5,6,7,8,9,10,11,...} y si ves la condición, x siempre es mayor que cero... por eso el bucle es infinito.

Te preguntarás ¿Para qué me puede servir un bucle infinito si parece un error del programador? Bueno... en nuestro ejemplo es obviamente un error, pero eso no significa que todo bucle infinito lo sea... Más adelante, cuando empecemos a programar juegos con Python y Pygame verás la utilidad de los bucles infinitos y es más, ellos son la parte principal del juego. Si... leiste bien. Aprenderemos a hacer nuestros propios juegos en Python usando Pygame... así que espera que eso ya viene pronto. Por el momento hay que ir entendiendo conceptos básicos pero sólidos sobre lo que usaremos en programas mas complejos.

Lección 5: Operaciones aritméticas en Python

Unknown julio 27, 2011

Variables Numéricas Enteras y Reales

Python tiene dos tipos de variables numéricas: Enteras, aquellas sin decimales y de tipo int (integer); y las Reales, con decimales y de tipo float. Por ejemplo:

>>> m = 5>>> n = 2.13>>> p = 5.0en nuestro ejemplo m es de tipo entero o int, n y p son de tipo real o float. Me gustaría recalcar lo que sucede con la variable p = 5.0, el valor de p es 5 pero de tipo real o float y no de tipo entero o int. Las variables m = 5 y p = 5.0 numéricamente son iguales pero no son del mismo tipo pues m es entero mientras que p es real. Python entiende que nuestra intención en p es escribir un número real aunque almacenemos un número entero.

¿Lo explicado anteriormente tendrá algún efecto al hacer operaciones aritméticas? Si. Cuando usamos variables definidas enteras, Python también muestra los resultados de los cálculos como enteros. Por otro lado, si las variables son definidas reales entonces los resultados también serán reales. Un ejemplo para aclarar esto:

>>> dato1 = 40>>> dato2 = 3>>> dato1 / dato213

>>> dato1 = 40.0>>> dato2 = 3.0>>> dato1 / dato213.333333333333334

>>> dato1 = 40.0>>> dato2 = 3>>> dato1 / dato213.333333333333334

En el primer resultado puedes ver que no hay decimales y sólo se muestra el cociente entero de la división, esto es porque las variables dato1 y dato2 son ambas de tipo entero; en la segunda operación el resultado es un número real (con decimales) pues ambos dato1 y dato2 son reales (con decimales). En realidad si queremos obtener un resultado real basta con que una de las variables sea definida real como en el tercer caso del ejemplo.

Operaciones Básicas

Bueno... es muy bien conocida las cuatro operaciones aritméticas básicas como la suma (+), resta (-), multiplicación (*) y división (/). Aquí un ejemplo:

>>>15 + 318

>>>15 - 312>>>15 * 345>>>15 / 35Otras Operaciones Aritméticas

1. Cálculo del Cociente de una división: Para calcular el cociente de una división entre dos números usamos el operador //. Ten en cuenta que el resultado real o entero (con o sin decimales) dependerá del tipo numérico de las variables usadas en el cálculo como ya se explicó enteriormente. Ejemplos:

>>> 12 // 34>>> 15 // 43>>> 15.0 // 43.0>>> 15 // 4.03.02. Cálculo del Residuo o Resto de una división: El cálculo del resto de una división entre dos números es directo con el operador %. Ejemplo:

>>> 15 % 433. Operaciones con Potencias y Raíces: El operador usado para expresar potencias es **. Este operador nos permitirá calcular tanto potencias como raíces (por matemáticas básicas, una raíz se puede expresar como potencia). Ten en cuenta que a**b = ab. Ejemplos:

>>> 2**3    8>>> 2**-1  0.5>>> 4**0.52.0el primer ejemplo  2**3 es una potencia al cubo; el segundo 2**-1 es la inversa de 2, es decir 1/2 ( recuerda que a-b = 1/ab ); el tercer ejemplo 4**0.5 es la raiz cuadrada de cuatro pues 40.5 = 41/2 = √4 = 2

4. Operaciones Adicionales: Es muy probable que al programar tengamos que modificar el valor de una variable apartir de su propio valor, es decir una variable cuyo valor cambia constantemente una y otra vez. Esto lo veremos sobre todo en estructuras repetitivas como While o For. En python se usan las siguientes notaciones:

a += b es igual a: a = a + ba -= b es igual a: a = a - ba *= b es igual a: a = a * ba /= b es igual a: a = a / b

a **= b es igual a: a = a ** b

a //= b es igual a: a = a // ba %= b es igual a: a = a % b

Bueno... eso sería todo en este post. Ahora ya sabemos de operaciones aritméticas basicas que iremos usando en Python. Nos vemos en la siguiente entrada.

Si te gustan los artículos de Conocimiento Adictivo te sugerimos suscribirte para que estés al tanto de las publicaciones del blog. Recibe nuestros artículos en tu lector RSS o en tu email.

Comparte este artículo

Entradas que podrían interesarte:

Joomla Curso integral [Español] - El gestor de contenidos más popular en Internet con el cual podrás montar un portal desde cero

Video2brain: Novedades After Effects CC (Español-2013) Video2Brain: Novedades Photoshop CC (2013)[Español] Messenger Reviver 2.1.0 Solución Messenger No conecta y me pide descargar una

actualización Skype !!!! Curso Completo AutoCad - 2D y 3D (2012-2013)[Español]

»» 3 comentarios para Unknown :

1.

Estefanía

1

octubre 18, 2012 5:09 p.m.

Hola, Te felicito que buen post y que excelente blog. me cae de perlas jejeje muchas gracias

Responder este hilo

1.

Anónimo

2

mayo 14, 2013 5:37 p.m.

He buscado, leído y no puedo lograr lo que quiero. Resulta que quiero crear un programa que me calcule la siguiente formula: %cenizas=((m1-m2)/m3)*100 y que el resultado, %cenizas siempre me lo entrege con 1 decimal despues de la coma. Que una vez que tenga el resultado de % de cenizas, posteriormente pueda seguir ingresando datos y que en el input nunca se puedan ingresar numeros menores que 0, ni letras.

>>> m1=raw_input("ingrese masa ceniza con crisol:")ingrese masa ceniza con crisol:29,329>>> m2=raw_input("ingrese masa crisol:")ingrese masa crisol:28,585>>> m2=raw_input("ingrese masa muestra:")ingrese masa muestra:5,000>>> (de aqui en adelante, no se me ocurre, si alguien sabe, que me diga)Desde ya muchas gracias.Atentamente: Benjamin

Anónimo

2.1

mayo 18, 2013 2:52 p.m.

>>> m1=raw_input("Ingrese masa ceniza con crisol:")Ingrese masa ceniza con crisol:29.329>>> m2=raw_input("ingrese masa crisol:")ingrese masa crisol:28.585>>> m3=raw_input("ingrese masa muestra:")ingrese masa muestra:5.000>>> M1=float(m1)>>> M2=float(m2)>>> M3=float(m3)>>> Porcentaje=((M1-M2)/M3)*100>>> print type(M1), type(M2), type(M3)

>>> print Porcentaje14.88

----------------Soy la misma persona que escribio arriba, con paciencia, pude generar mi programa, me falta pulirlo un poco más, para posteriormente compilarlo en formato exe, de momento no

tengo idea como compilar, estoy agradecido tambien por los conocimientos de python publicados en este blog. Voy a investigar si puedo poner un bucle para englobar todos los input ¿se podrá?

Lección 6: Manipulación de Listas en Python

Unknown septiembre 05, 2011

Hola de nuevo, ya pasó algo de tiempo desde que escribí un tutorial de programación en Python, estuve publicando otros posts sobre otros temas, pero bueno... empecemos a hablar de programación otra vez. En esta ocasión, aprenderemos a manipular Listas en el lenguaje de programación Python. Manos a la obra !!!

Listas

Las listas son conjuntos ordenados de elementos del mismo o diferente tipo, digo esto porque una lista puede tener como elementos a números, cadenas, listas o combinaciones de ellos. Las listas están representadas escribiendo los elementos entre corchetes y separados por comas. Además, ten en cuenta que una lista completa puede ser almacenada en una variable. Veamos unos ejemplos:

>>> lista1 = ['hola', -45, 3]>>> lista1['hola', -45, 3]>>> lista2 = ['python', 'tutorial', 30]>>> lista2['python', 'tutorial', 30]>>> lista3 = [12, -8, lista1, lista2, 'prueba']>>> lista3[12, -8, ['hola', -45, 3], ['python', 'tutorial', 30], 'prueba']>>> listavacia = []>>> listavacia[]>>> Como mencioné anteriormente, una lista puede contener elementos de diferentes tipos, números, cadenas, variables e incluso otras listas. Se llama lista vacia a una lista que no tiene elementos.

Concatenar listas

Las listas se pueden concatenar (unir) con el símbolo de la suma (+), mira el ejemplo:

>>> lista1['hola', -45, 3]>>> lista2['python', 'tutorial', 30]>>> lista4 = lista1 + lista2>>> lista4['hola', -45, 3, 'python', 'tutorial', 30]Como puedes ver, el resultado de concatenar listas es una nueva lista que tiene como elementos a los elementos de las listas individuales.

Observación: En el último ejemplo, pon atención en el orden en que ubican los elementos de la lista4. Sus primeros elementos son los elementos de la lista1 y luego los elementos de la lista2 ya que la concatenación de las listas fue en ese orden, primero la lista1 y luego la lista2. Miremos el mismo ejemplo pero de otra forma:

>>> lista1['hola', -45, 3]>>> lista2['python', 'tutorial', 30]>>> lista4 = lista2 + lista1>>> lista4['python', 'tutorial', 30, 'hola', -45, 3]Aquí vemos que son los mismos elementos pero el orden ha variado, ahora los primeros elementos son los elementos de la lista2 y luego los elementos de la lista1.También podemos concatenar listas sin almacenarlas previamente en alguna variable

>>> lista5 = ['Conocimiento']>>> lista5['Conocimiento']>>> lista6 = lista5 + ['Adictivo']>>> lista6['Conocimiento', 'Adictivo']

Manipulación de los elementos individuales de una lista

Puedes acceder a cualquier elemento individual de la lista con sólo indicar el nombre de la lista y entre corchetes el número que representa su posición dentro de la lista.

Importante: Para acceder a los elementos de una lista se utiliza un índice entero empezando por "0", no por "1". Aclaremos esto con un ejemplo, supongamos que tenemos la siguiente lista:

H O L A

0 1 2 3

aquí el primer elemento 'H' tiene posición "0", el segundo elemento 'O' tiene posición o índice "1",

el tercer elemento 'L' tiene índice "2", y el cuarto elemento 'A' tiene posición "3" Veamos unos ejemplos de acceso a elementos individuales dentro de una lista

>>> lista = ['python', 'tutorial', 30]>>> lista['python', 'tutorial', 30]>>> lista[0]'python'>>> lista[1]'tutorial'>>> lista[2]30>>> lista[3]

Traceback (most recent call last): File "pyshell#30", line 1, in module lista[3]IndexError: list index out of range

Con lista[0], lista[1], lista[2] todo va correcto y nos devuelve el valor correspondiente a la posición indicada, pero cuando escribimos lista[3] nos sale un error. Eso es porque no se puede hacer referencia a elementos fuera de la lista: "list index out of range."

Manipulación de Sublistas

Apartir de una lista nosotros podemos extraer sublistas que contengan sólo unos elementos de la lista original. Para ello usaremos la siguiente notación:

nombre_de_la_lista[ninicio : nfinal]

donde la sublista extraída tendrá una cantidad de elementos igual a la diferencia nfinal - ninicio, y que empieza con el elemento de la posición ninicio. ¿Medio enredado con esto? Veamos unos ejemplos:

a. Ejemplo (1)>>> lista['Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo']>>> lista[1:4]['Febrero', 'Marzo', 'Abril']

en este ejemplo, para saber cuántos elementos tendrá la sublista sólo miramos [1 : 4] y restamos 4 - 1 con lo cual tendremos 3 elementos. Ahora para saber cual será el primer elemento de la sublista miramos nuevamente [1 : 4] con lo cual el primer elemento será el que se encuentra en la posición "1", es decir "Febrero". Luego la sublista tendrá 3 elementos empezando con "Febrero", dando como resultado ['Febrero', 'Marzo', 'Abril'].

b. Ejemplo(2)>>> lista['Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo']>>> lista[2:5]

['Marzo', 'Abril', 'Mayo']

en este ejemplo, igualmente tendremos 3 elementos (5 - 2 = 3) y la sublista empieza con el elemento de la posición "2", es decir "Marzo".

c. Ejemplo(3)>>> lista['Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo']>>> lista[:3]['Enero', 'Febrero', 'Marzo']

Se extrae una sublista hasta el valor de posición 3 (no incluido el elemento de la posición 3)

d. Ejemplo(4)>>> lista['Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo']>>> lista[3:]['Abril', 'Mayo']

Se extrae una sublista desde el valor de posición 3 (incluido el elemento de la posición 3)

Eliminando elementos de una lista

Para esto usaremos la instrucción del que es una palabra reservada que nos permite eliminar uno o varios elementos a la vez de una lista, o también la lista completa.

a. Ejemplo(1)>>> lista['Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio']>>> lista[0] # eliminaremos este elemento'Enero'>>> del lista[0]>>> lista['Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio']

como puedes notar hemos eliminado el elemento de posición "0", es decir "Enero".

b. Ejemplo(2)>>> lista['Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio']>>> lista[2:5] # eliminaremos esta sublista['Marzo', 'Abril', 'Mayo']>>> del lista[2:5]>>> lista['Enero', 'Febrero', 'Junio', 'Julio']

en este ejemplo vemos algo similar a la manipulación de sublistas, se eliminan 3 elementos (5 - 2 = 3) empezando en el de la posición "2" es decir "Marzo".

Longitud de una lista o cadena de una cadena de carácteres

No importa si trabajamos con listas o con cadena de carácteres, podemos saber la longitud de ellas, es decir el número de elementos que tienen. La función len() devuelve la longitud de una lista o de una cadena de carácteres.

>>> lista['Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo']>>> len(lista)5>>> cadena = 'Conocimiento Adictivo'>>> len(cadena)21

notar que los espacios en blanco también son contados.

La función range()

Imagínate que deseas crear una lista con los 400 primeros números naturales ¿las escribirías manualmente? pues no... Muchas veces nos será de mucha utilidad crear listas de números enteros en sucesión aritmética de una manera automatizada y es allí donde usamos la función range(). Veamos los distintos casos de uso de esta función.

a. Caso 1: La función range con un único argumento se escribe range(n) y crea una lista creciente de n términos enteros que empieza en 0 donde los términos aumentan de uno en uno. Es decir:

range(n) = [0, 1, 2, 3, ..., (n-1)]

>>> range(8)[0, 1, 2, 3, 4, 5, 6, 7]>>> range(11)[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

b. Caso 2: La función range con dos argumentos se escribe range(m, n) y crea una lista creciente de (n - m) términos enteros que empieza en m donde los términos aumentan de uno en uno. Es decir:

range(m, n) = [m, m+1, m+2, ..., (n-1)]

>>> range(2, 8) # 8 - 2 = 6 elementos[2, 3, 4, 5, 6, 7]>>> range(5, 8) # 8 - 5 = 3 elementos[5, 6, 7]>>> range(5, 12) # 12 - 5 = 7 elementos[5, 6, 7, 8, 9, 10, 11]

c. Caso 3: La función range con tres argumentos se escribe range(m, n, p) y crea una lista que empieza en m y termina antes de llegar a n, avanzando de p en p. El valor de p no puede ser nunca cero. Si p es positivo la lista será creciente, pero n tiene que ser mayor que m para que la lista no

sea vacía. Si p es negativo la lista será decreciente, pero n tiene que ser menor que m para que la lista no sea vacía.

# sucesiones creciente>>> range(8, 25, 4) # empieza en 8, avanza de 4 en 4[8, 12, 16, 20, 24]>>> range(4, 16, 3) # empieza en 4, avanza de 3 en 3[4, 7, 10, 13]

# sucesión decreciente>>> range(16, 5, -3) # empieza en 16, disminuye de 3 en 3[16, 13, 10, 7]

# error porque la razón es "p = 0">>> range (9, 18, 0)

Traceback (most recent call last): File "pyshell#68", line 1, in module range (9, 18, 0)ValueError: range() step argument must not be zero

Bueno... esto sería todo por el momento. Ahora ya sabemos de Listas y el tipo de cosas que podemos hacer con ellas. También hemos visto dos funciones importantes: range() y len(). En la próxima entrada colgaré varios ejercicios para que practiquen todo lo que hemos aprendido hasta el momento pues ya es hora de llevar todo a la práctica.

Primera práctica de Scripts en Python: Repaso de las primeras 6 lecciones

Unknown septiembre 05, 2011

Saludos a los que nos siguen en el curso de Programación en el Lenguaje Python. En esta ocasión nos toca practicar todo lo aprendido en estas primeras 6 lecciones, así que les presentaré una serie de problemas y sus respectivas soluciones. Son problemas básicos ya que este curso está orientado a iniciantes en la programación.

Te recomiendo que primero intentes hacer los scripts de cada problema por tu propia cuenta sin consultar la solución. Ya al final, puedes revisar las soluciones que yo planteé. Recuerda que es mucho mejor que intentes por ti mismo en primer lugar pues talvéz tu solución sea mejor que la mia y eso sería excelente !!

Práctica 1 de Programación en Python: Repasando las primeras 6 lecciones

1. Escriba un script que pida el ingreso de un número natural y calcule su factorial.

Mostrar / Ocultar Solución (1) ▼▲

# -*- coding: utf-8 -*-

# Factorial de un número# -----------------------------------------------

print 'Factorial de un Numero'print '-----------------------\n'numero = int(input('Ingrese un numero natural: '))

# Restringiendo la entrada a un numero positivowhile numero < 0: print 'Lo siento, el numero es negativo, intente otra vez\n' numero = int(input('Ingrese un numero natural: '))

# Importando el modulo sleep from time import sleep

if numero == 0: print 'El factorial es 1' sleep(7)elif numero > 0: k = 1 i = 1 # Calculando el factorial while k <= numero: i *= k k += 1 print 'El factorial es: ', i sleep(7)

2. Desarrolle un script que pida dos números y escriba la suma de enteros desde el primer número hasta el segundo sin incluir ambos.

Mostrar / Ocultar Solución (2) ▼▲

# -*- coding: utf-8 -*-# Pida dos numeros y escriba la suma de enteros# desde el primer numero hasta el segundo# ---------------------------------------------------------------

print 'Suma de enteros entre dos numeros'print '--------------------------------------------------------\n'

nmen = float(input('Ingrese el numero menor (limite inferior): '))nmay = float(input('Ingrese el numero mayor (limite superior): '))

# Evitando que el limite superior sea menor que el limite inferiorwhile nmay < nmen: print'\nValor no aceptado !!!, el limite inferior es ', nmen print'--------------------------------------------------------' nmay = float(input('Ingrese un numero mayor que el limite inferior: '))

# Calculando limites inferior y superior # Aplicando int() se hace truncadolinf = int(nmen)if nmay == int(nmay):

lsup = int(nmay)elif nmay > int(nmay): lsup = int(nmay) + 1 # Calculando la sumatoriasuma = ((lsup*(lsup+1))/2) - (lsup+((linf*(linf+1))/2))print'--------------------------------------------------------'print'La suma de enteros entre ',nmen,' y ',nmay,' es: ',sumafrom time import sleepsleep(20)

3. Elabore un programa que pregunte cuántos números vas a introducir, pida esos números y escriba cuántos negativos has ingresado.

4. # Sugerencia !!! Insertando elementos a una lista5. # instrucción: 6. lista.insert(posicion, elemento)7.8. # Ejemplo:9. >>> lista = [1, 2, 4]10. >>> lista11. [1, 2, 4]12.13. # insertamos el numero "15" en la posicion "1"14. >>> lista.insert(1, 15)15. >>> lista16. [1, 15, 2, 4]

Mostrar / Ocultar Solución (3) ▼▲

# -*- coding: utf-8 -*-# Pregunte cuantos numeros vas a introducir, pida esos numeros# y escriba cuantos negativos has ingresado.# ------------------------------------------------------------

total = int(input('Cuantos numeros desea ingresar? Escriba la cantidad: '))

# Restringiendo la entrada a un numero entero positivowhile total <= 0: print '---------------------------------------------------------' print 'Advertencia!!!' print '---------------------------------------------------------' print 'La cantidad ingresada no es correcta, por favor...' total = int(input('Indique un valor mayor a CERO: '))

print '\nIngreso de datos'print '---------------------------------------------------------'

t,k = [],[]ind = range(1, total+1)

# Pedimos la entrada de numerosfor x in ind:

num = input('Numero ' + str(x) + ', ingrese un valor: ') # lista de elementos ingresados t.insert(x, num) if num < 0: # lista de elementos negativos k.insert(x, num)print '---------------------------------------------------------'print 'Los numeros ingresados fueron: ',tprint '---------------------------------------------------------'# Dando el resultadoprint 'Existen ' + str(len(k)) + ' numeros negativos, y son: ',kfrom time import sleepsleep(20)

17. Escriba un script que solicite la altura y anchura de un rectángulo y lo dibuje de la siguiente manera:

Anchura = 5Altura = 3

Dibujo:***************

18.19. Mostrar / Ocultar Solución (4) ▼▲ 20. # -*- coding: utf-8 -*-21. # Este script dibuja un rectangulo usando el simbolo *22. # ----------------------------------------------------23.24. print 'Entrada de dimensiones'25. print '----------------------\n'26.27. ancho = int(input('Ingrese el ancho del rectangulo: '))28. while ancho <= 0:29. print '\ndebe ser un numero entero mayor que cero'30. ancho = int(input('Ingrese denuevo el ancho del rectangulo:

'))31.32. print ''33.34. altura = int(input('Ingrese la altura del rectangulo: '))35. while altura <= 0:36. print '\ndebe ser un numero entero mayor que cero'37. altura = int(input('Ingrese denuevo la altura del rectangulo:

'))38. 39. al = range(1, altura+1)40.41. print '\nEl resultado es:\n '42. # x recorre los valores de 'al'

43. for x in al:44. # Multiplicamos el simbolo * tantas veces como 'ancho'45. print ancho*'*'46. 47. from time import sleep48. sleep(15)

49. Escriba un script que solicite la altura de un triángulo y lo dibuje de la siguiente manera:

Altura del triángulo = 4

Dibujo:**********

50.51. Mostrar / Ocultar Solución (5) ▼▲ 52. # -*- coding: utf-8 -*-53. # Este programa dibuja un triangulo con solo saber la altura54. # ----------------------------------------------------------55.56. altura = int(input('Ingrese un numero natural mayor que UNO: '))57. # Restringiendo el valor de la altura58. while altura < 2: 59. print '\nHubo un error !!!, por favor...'60. altura = int(input('Ingrese un numero natural mayor que UNO:

'))61. 62. print '\nEl resultado es:\n '63. al = range(1, altura + 1)64.65. # x recorre los valores de 'al'66. for x in al:67. # Multiplicamos el simbolo '*' tantas veces como el valor x68. p = x * '*' 69. print p70. 71. from time import sleep72. sleep(20)

73. Escriba un script que solicite la altura de un triángulo y lo dibuje de la siguiente manera:

Altura del triángulo = 4

Dibujo:*******

***

74.75. Mostrar / Ocultar Solución (6)▼▲ 76. # -*- coding: utf-8 -*-77. # Este programa dibuja un triangulo invertido con solo ingresar la

altura78. #

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

79.80. altura = int(input('Ingrese un numero natural mayor que UNO: '))81. # Restringiendo el valor de la altura82. while altura <= 1:83. print '\nHubo un error!!! por favor...'84. altura = int(input('Ingrese un numero natural mayor que UNO:

'))85.86. al = range(1, altura + 1)87.88. print '\nEl resultado es:\n '89. for x in al: 90. # multiplicamos una cantidad de veces el simbolo '*'91. p = (altura + 1 - x)*'*' 92. print p93.94. from time import sleep 95. sleep(20)

96. Escriba un script que solicite la anchura de un triángulo y lo dibuje de la siguiente manera:

Anchura del triángulo = 4

Dibujo:****************

97.98. Mostrar / Ocultar Solución (7) ▼▲ 99. # -*- coding: utf-8 -*-100. # Este programa dibuja un triangulo solicitando el ancho del

triangulo101. # al usuario

102. # --------------------------------------------------------------------

103.104. ancho = int(input('Ingrese un numero natural mayor que UNO: '))105. # Restringiendo el valor 106. while ancho <= 1:107. print '\nEl numero ingresado no es correcto, por favor...'108. ancho = int(input('Ingrese un numero natural mayor que UNO:

'))109.110. print '\nEl resultado es:\n '111.112. an1 = range(1, ancho + 1) # an1=1,2,3,...,ancho113. an2 = range(1, ancho) # an2=1,2,3,...,(ancho-1)114.115. for x in an1:116. p = x * '*'117. print p118.119. for k in an2:120. t = (ancho - k) * '*'121. print t122.123. from time import sleep124. sleep(20)

125. Escriba un script que solicite un número y devuelva sus divisores

Dime un numero = 30Los divisores de 30 son:1 2 3 5 6 10 15 30

126.127. # Dato de ayuda: 128. # m % n es el residuo de la division m / n129. # Ejemplos:130.131. >>> 16 % 4132. 0133. # cuando el residuo es cero, entonces hay un divisor 134. >>> 16 % 3135. 1136. >>> 12 % 5137. 2138.

139. Mostrar / Ocultar Solución (8) ▼▲ 140. # -*- coding: utf-8 -*-141. # Este script devuelve los divisores de un numero142. # -----------------------------------------------143.144. print 'Ingreso de datos: '145. print

'-------------------------------------------------------------\n'

146. num = int(input('Ingrese un numero: '))147. while num < 0:148. print '\nError !! Por favor, ingrese un numero mayor que CERO'149. num = int(input('Ingrese un numero valido: '))150.151.152. k = num / 2153. k = int(k)154. cad = ''155.156. # El recorrido es hasta k = num / 2, pues no hay divisores mayores157. # a la mitad del numero excepto el mismo numero.158. for x in range(1, k + 1):159. # num % x es el residuo de la division num / x160. if num % x == 0:161. # Si el residuo es cero, entonces es un divisor162. cad = cad + str(x) + ' '163.164. print '\nLos divisores de ' + str(num) + ' son:\n' 165. print cad + str(num)166. from time import sleep167. sleep(20)

Bueno, creo que con estos 8 ejercicios tendrán un entretenimiento de 1 a 1 hora y media. Como mencioné al inicio, hemos planteado problemas básicos matemáticos donde usamos toda la teoría mencionada en las primeras 6 lecciones del curso... con un poco de práctica podrán crear scripts mas elaborados que los planteados en esta lista de ejercicios.