Google+ Seguidores

sábado, 18 de mayo de 2013

String o cadenas en Python

    22


En la entrada anterior: el Shell depython, estuvimos trabajando con números. En esta entrada estaremos hablando de las cadenas, ya que python es mucho más que una calculadora. Como he venido haciendo referencia, esta entrada nace del libro: http://inventwithpython.com/chapter3.html, que me ha parecido un excelente tutorial para iniciarse viendo ejemplos de juegos en python.
Vamos aprender como almacenar texto en las variables. Y vamos a crear un programa que va a dar la bienvenida al usuario con el texto “Hola Mundo” y el nombre del usuario.
En python trabajamos con pequeños trozos de texto llamados string. Podemos almacenar el texto de la misma manera que lo hacíamos con los números. Cuando escribamos cadenas de texto las ponemos con comillas simples o dobles, así:
string o cadenas en python
Cadena en python

Las comillas se ponen para decirle a la computadora donde comienza la cadena y donde termina. Esto es porque python evaluara una variable con el valor almacenado dentro de la variable (en este caso, la cadena “hola”).
Las cadenas pueden contener casi cualquier carácter del teclado.

Ejemplos de cadenas:

'Hola'
'Como están?'
'MAQUINA'
'7 manzanas, 14 naranjas, 3 limones'
'Hoy el clima esta muy feo...'
'A long time ago in a galaxy far, far away...'
'O*&#wY%*&OCfsdYO*&gfC%YO*&%3yc8r2'
Como ya vimos en la entrega anterior, a las cadenas también podemos manipularlas con los operadores para crear expresiones.

Concatenar Cadenas

Podemos añadir una cadena al final de otra mediante el operador +, a esto de le llama concatenar cadenas. Probemos escribir “hola” + “mundo en el shell”.
hola mundo en python
Concatenar cadenas
Para mantener un espacio de separación, dejar un espacio después del “hola “.
El operador + funciona diferente en las cadenas que en los números porque son diferentes tipos de datos. Todos los valores tienen un tipo de dato. El tipo de dato del valor “hola” es una cadena o String. El tipo de dato 5 es un entero o int.

Escribir un programa en el editor IDLE de python
Hasta ahora solo hemos escrito instrucciones en el shell interactivo de python. Cuando escribimos programas sin embargo, escribimos una serie de instrucciones y lo que queremos es que se ejecuten al mismo tiempo. Vamos a escribir nuestro primer programa.
Vamos abrir el IDLE de python. En Windows es tan facil como ir a inicio, y buscarlo dentro de la solapa python.
Para la gente que usa linux (como yo), les recomiendo instalar Eclipse + Pydev. Es un IDLE que trabaja con muchos lenguajes de programación (python es uno). 

También pueden instalar Geany, otro IDE para python.

Como instalar Geany en ubuntu 

1 Abrimos nuestra terminal: (Aplicaciones>Accesorio>Terminal o Ctrl + Alt + T) y escribimos esta linea: sudo apt-get install build-essential
2 Luego necesitaremos instalar el Geany tecleando en la terminal: sudo apt-get install geany
3 Listo. Bien fácil no? También se puede usar para Windows
Lo abrimos, creamos un archivo nuevo, damos clic en Documento, establecer tipo de archivo, lenguaje de script, y por ultimo, archivo de fuente python.
Ya esta pronto para que Geany pueda interpretar nuestro código en python.
De aquí en adelante, todos los proyectos van a estar hechos con el IDLE Geany.

HOLA MUNDO

Es una tradicion para el aprendizaje de los programadores crear el primer programa con el texto “Hola Mundo” en la pantalla. Vamos a crear nuestro propio programa Hola Mundo. Escriba lo que ve en la imagen.
IDLE Geany
"Hola Mundo"
Llamamos a el texto dentro del editor, código fuente del programa, es el que contiene las instrucciones que Python seguirá para determinar como el programa debe comportarse.
Ya dije anteriormente que la versión de pyhon que estamos utilizando es la 2.7, si están usando la 3.x los programas generados les darán error.
#hola.py
# Este programa dice Hola Mundo y pregunta por mi nombre.
print "Hola Mundo"
print "Cual es tu nombre?: "
minombre = raw_input()
print "Que bueno conocerte " + minombre
Si todo salio bien, el texto deberá tener varios colores como muestra la imagen.
Ahora nos toca guardar nuestro primer programa. Una vez que hayamos ingresado nuestro código fuente, en Geany: Archivo, Guardar. Lo guardaremos con el nombre hola.py .
Vamos a probarlo. Una ves guardado, sin cerrar Geany vamos a Construir, Ejecutar o F5. Si todo sale bien nos saldrá algo como esto:

Como funciona el programa?

Cada linea que ingresamos es una instrucción para el ordenador que va a ser interpretado por Python de manera que el ordenador entienda. Un programa informatico se parece mucho a una receta. Hacer el primer paso, luego el segundo y asi sucesivamente hasta llegar al final. Cada instrucción se sigue en secuencia, comenzando desde la parte superior del programa y trabajando por lista de instrucciones.
Empecemos por la primera linea:
# Este programa dice Hola Mundo y pregunta por mi nombre.
Esta linea se llama comentario. Cualquier texto que siga despues del signo # es un comentario. Los comentarios no son para el ordenador, es para nosotros, los programadores. El ordenador los ignora. Los comentarios nos aydan a recordar lo que quizimos hacer o lo que estamos haciendo. Los programadores acostumbran a poner comentarios al iniciar el programa para saber de que se trata y como funciona. El IDLE nos muestra los comentarios en rojo para destacarlos.

Las funciones

Las funciones son algo asi como mini-programas dentro de tu programa. Python proporciona algunas funciones incorporadas que podemos utilzar. Lo bueno: solo tenemos que saber lo que hace la funcion, no como se hace. La funcion print() muestra en pantalla el texto que ponemos dentro, pero no es necesario saber como lo hace.
Nosotros podemos usar print() todas las veces que necesitemos mostrar algo por pantalla. Toma como entrada lo que escribimos dentro de la función y luego lo muestra en pantalla. Si escribimos print “hola mundo” (en python 2.7 no es necesario agregar los paréntesis para encerrar el texto) se mostrara en pantalla hola mundo.
Minombre = raw_input()
Esta linea tiene una instrucción de asignación a una variable (minombre) y una llamada a la función de entrada. El nombre que el usario ingrese se guardara en la variable minombre para luego ser usada.
La función raw_input no necesita ninguna entrada como la función print().
print "Que bueno conocerte " + minombre
En la ultima linea tenemos de nuevo la funcion print(). Esta vez, se utiliza con el operador + para concatenar la cadena “Que bueno conocerte” y la cadena almacenada en la variable minombre, que es lo que el usuario ingresa como entrada.
Una ves se ejecuta la ultima linea del programa, se detiene. Al llegar a este punto el programa se sale y todas las variables son olvidadas por el ordenador, incluyendo la cadena que se guarda en la variable minombre.
Si ejecutamos nuevamente el programa podremos ingresar otro nombre.

Resumen:

Ahora que hemos aprendido a trabajar con los string (o cadenas), podemos meter mano e interactuar con nuestros programas. El usuario podrá ingresar texto con la función raw_input y nuestro programa podrá darle información con la función print(). Las cadenas son simplemente otro tipo de datos que podremos utilizar en nuestros programas. Podemos utilizar los operadores para concatenar cadenas.
En la próxima entrada veremos mas acerca de las variables.

22 comentarios:
Write comentarios
  1. Hola diego. En el programa que pones aqui de ejemplo, veo que al introducir el codigo, el cual enumeraspor lineas del 1 al 9, dejas libre las lineas 2, 3 y 9 segun la imagen del escritorio Geany. Mi pregunta es: ¿porque las dejas vacias y como influyen esos espacios libres 2, 3 y 9 al desarrollar un programa?

    ResponderEliminar
    Respuestas
    1. Si no hay codigo, los espacios en blanco no afectan en nada. Los espacios en blanco nos sirven para delimitar y entender mejor el codigo.

      Eliminar
    2. Bueno Diego, entrado en materia empiezan mis conflictos practicos. Empiezo a explicarte:
      Abro Geany, archivo nuevo y empiezo a escribir el codigo del programa Hola Mundo:
      1. #hola.py
      2.
      3.
      4 # Este programa dice Hola Mundo y pregunta por mi nombre
      5. print "Hola Mundo"
      6. print "Cual es tu nombre?:"
      7. minombre = raw_input()
      8. minombre = Luis
      9.print "Que bueno conocerte" + minombre

      El resultado de Geany una vez guardado, construido y ejecutado es: Hola Mundo
      Cual es tu nombre?:
      ME FALTARIA la otra parte del texto: Que bueno conocerte Luis. ¿Donde esta el error?

      Eliminar
    3. Vale Diego, solucionado. El codigo correcto y el resultado en comparacion con el anterior es este:
      1.#hola.py
      2.
      3.#Este programa dice Hola Mundo y pregunta por mi nombre
      4. print "Hola mundo"
      5. print "cual es tu nombre?:"
      6. print "mi nombre es Luis"
      7. mi nombre = raw_input
      8. minombre="Luis"
      9. print "que bueno haberte conocido " + minombre
      LUEGO EL RESULTADO DEVUELTO POR GEANY UNA VEZ GUARDADO, CONSTRUIDO Y EJECUTADO ES EL SIGUIENTE:
      Hola Mundo
      Cual es tu nombre?
      mi nombre es Luis
      Que bueno haberte conocido Luis
      NO SE SI HABRA OTRA RESPUESTA MAS CORRECTA, PERO ESTA YA TIENE MAS LOGICA PARA MI...

      Eliminar
    4. Perdon, para no equivocar a quien este en el mismo ejercicio de Hola Mundo con Geany, ERROR EN LINEA 7: EN VEZ DE mi nombre, es todo seguido: minombre, sino no coincidiria la variable y la funcion raw_input

      Eliminar
    5. Hola SITO, te cuento que la linea 6 y la linea 8 son innecesarias. En la linea 5, cuando dice (todo junto) minombre = raw_input(), lo que hace el programa es esperar que el usuario escriba el nombre, una vez ocurra esto, el programa sigue y saluda diciendo "que bueno haberte conocido" + minombre (en mi nombre se guarda lo que el usuario ingreso). Espero me hallas entendido. No tendria gracia que tu tengas que ingresar todo.

      Eliminar
    6. Ok Diego, te refieres a la linea 7 que es la que guarda la funcion raw_input. Aaaah, por eso se quedaba a medias.... Lo que no he llegado todavia es a como ejecutarlo en el sistema operativo y hacerlo funcionar para que mi pareja ponga por su nombre y vea parte de mis minimos progresos...Supongo que todo el aprendizaje debe ir paso a paso para que se ejecuta y FUNCIONA UN PROGRAMA REALMENTE HECHO POR UNO MISMO. Poco a poco...

      Eliminar
  2. Ok Diego, entonces es algo aleatorio el que hayas dejado libre sin codigo las lineas 2, 3 y 9. Pense que lo hacias porque afectaba al resultado final del programa. Gracias

    ResponderEliminar
  3. Hola Diego, te doy el resultado que me arroja la terminal una vez ejecuto el programa de 'Hola Mundo' segun me has indicado tu omitiendo las lineas 6 y 8.
    CODIGO:
    #hola.py
    #Este programa dice Hola Mundo y pregunta por mi nombre
    print "Hola Mundo"
    print "cual es tu nombre?:"
    minombre = raw_input
    print "Que bueno haberte conocido " + minombre
    RESULTADO DE LA TERMINAL UNA VEZ GUARDADO, CONSTRUIDO Y EJECUTADO DESDE GEANY:
    Hola Mundo
    cual es tu nombre?:
    Traceback (most recent call last):
    File "prueba5hola.py" line 6 in module
    print "Que bueno es haberte conocido " + minombre
    TypeError: cannot concatenate 'str? and 'builtin_function_or_method' objects
    (program exited with code: 1)
    press return to continue
    De aqui deduzco que la terminal me esta arrojando algun error de concatenacion, o que simplemente que falta una parte de codigo u otro error. ¿podias despejarme esta duda antes de seguir? Gracias Diego

    ResponderEliminar
  4. ¡YA ENCONTRE EL ERROR DIEGO! Me arrojaba error la terminal porque me faltaba el signo () de la funcion raw_input(). Ahora me contesta las dos ultimas frases pero sin error alguno, solo que mi duda esta en que nose como se refleja la parte del programa que se dirija dandole la bienvenida al jugador.

    ResponderEliminar
    Respuestas
    1. Sito: Ya te estaba por comentar que te faltaban los parentesis... Ahora, no entiendo la última consulta.
      Saludos

      Eliminar
  5. Si Diego, mi consulta es: como puedo visionar la parte en la que el programa interactua con el usuario para ver que realmente funciona. Ejemplo: una vez desarrollado el programa, quieres que un amigo o familia juegue con este para poder comprobar que el software interactua de forma correcta. No se si me explico suficiente. Es que esa parte no me la imagino...

    ResponderEliminar
    Respuestas
    1. SITO: lo que hacen estas lineas de codigo es muy sencillo, quizá no te de para sorprender a alguien jaja. Si lo ejecutas desde Geany o desde el shell, lo que hace el programa es decir "hola mundo", luego pregunta un nombre (cuando el usuario lo ingrese y presione la tecla enter) va a terminar saludando al usuario. Lo que puedes hacer en Geany para que no se te cierre el programa una vez finalizado, es agregar una ultima linea de codigo: raw_input() (esto es para que el programa quede esperando una entrada de datos y no se cierre), luego con un enter se cierra. Espero pueda haber resuelto tu dudda...

      Eliminar
    2. Gracias por tu rapida respuesta Diego, probare esto ultimo porque asi podre entender y conocer in situ la respuestas los programas aunque como tu bien dices, el 'Hola Mundo' no da para sorprender jejeje, pero BUENISIMO PARA EMPEZAR A ENTENDER EL FUNCIONAMIENTO. Te dire si ha funcionado

      Eliminar
  6. Hola Diego, solucionado. Con esta ultima linea raw_input el programilla...me habla jejeje. Fantastico!!. Gracias

    ResponderEliminar
  7. Hola Diego, estaba repasando las concatenaciones y he querido hacer algo similar al miniprograma "Hola Mundo" para soltarme un poco.
    Pero poniendo un codigo algo diferente me da error, Y ME LO HE REPASADO 12 VECES. Aqui te dejo el codigo para ver si tu encuentras el error que me arroja Geany. Codigo:
    1 #Este programa saludara a Merce con cariño
    2
    3 print "Hola guapa, como te llamas?:"
    4 print "es que eres preciosa"
    5 minombre=raw_input()
    6 print "pues a tu lado me quedo toda la vida " + minombre
    7 raw_input()
    El programa lo he guardado como MERCE.py y luego a sido construido y ejecutado. Al ser ejecutado me da error de sintaxis
    Espero tu respuesta Diego, gracias.

    ResponderEliminar
  8. Hola Diego. Despues de darle mas vueltas al tema, deduzco que lo que Geany o Python no me aceptan es la letra "ñ". ¿Es posible que sea ese el problema de sintaxis? ¿no esta permitido el caracter "ñ" en Python o en Geany?

    ResponderEliminar
    Respuestas
    1. Exactamente, Agregando estas dos lineas en el comienzo de tus
      programas, no tendras más problemas:
      #!/usr/bin/env python
      # -*- coding: utf-8 -*-

      La primera es para que tus programas no tengan problemas con sistemas Unix, linux... y la segunda es para poder visualizar sin errores algunos caracteres que no conoce python, ejemplo: ñ, y los tildes...

      Espero halla podido ayudarte. Saludos

      Eliminar
  9. Muchas gracias, porque la cabeza me iva a estallar jajaja. Son conceptos que cuando te metes de lleno en cualquier tema desde cero, siempre tienes mas tropiezos. Pero asi es como se aprende, con tencidad y...preguntando a expertos maestros y personas amables que como tu, intentan enseñar a los demas, se esfuerzan dia a dia y disfrutan con ello. Intentare no molestarte mucho con tropiezos tan simplones. Gracias Diego

    ResponderEliminar
    Respuestas
    1. SITO: preguntando se aprende.... python es maravilloso y vale la pena aprender algo nuevo todos los días. Ojalá sea un experto como dices tu, pero recién estoy aprendiendo.
      Abrazo

      Eliminar
  10. Hola Diego, tenia una cuestion por preguntarte, ¿hay alguna linea como la #!/usr/bin/env python para ayudar a que los programas tambien sean compatibles y puedan ejecutarse sin problemas en windows?

    ResponderEliminar
    Respuestas
    1. Hola SITO, yo los programas los ejecuto correctamente en windows, cuales son los problemas que tienes? Saludos

      Eliminar

Tu comentario es importante y nos motiva a seguir escribiendo...

Entradas más recientes

© 2014 Mi diario Python. Designed by Bloggertheme9 | Distributed By Gooyaabi Templates
Powered by Blogger.