USM Numérica

Licencia y configuración del laboratorio

Ejecutar la siguiente celda mediante Ctr-S.


In [1]:
"""
IPython Notebook v4.0 para python 3.0
Librerías adicionales: 
Contenido bajo licencia CC-BY 4.0. Código bajo licencia MIT. 
(c) Sebastian Flores, Christopher Cooper, Alberto Rubio, Pablo Bunout.
"""
# Configuración para recargar módulos y librerías dinámicamente
%reload_ext autoreload
%autoreload 2

# Configuración para graficos en línea
%matplotlib inline

# Configuración de estilo
from IPython.core.display import HTML
HTML(open("./style/style.css", "r").read())


Out[1]:

Introducción a STRING

En Python podemos definir distintos tipos de variables, en este caso un objeto definido como un string tiene una serie de cualidades que nos permiten realizar ciertas operaciones que definiremos en este tutorial.

En particular el nombre string refiere a una secuencia de caracteres que puede ser utilizada como variable para representar otro objeto de distinta naturaleza como un número, también puede construirse un algoritmo que nos permita dar acceso a algún archivo o directorio a partir de una contraseña, entre otras posibilidades. A continuación presentamos una serie de operaciones comunes que nos permitirán tener un manejo básico de un string.

Objetivos

  1. Operaciones básicas para crear un formato
  2. Operaciones de búsqueda
  3. Operaciones lógicas de formato
  4. Sentencias de condicionamiento
  5. Ejercicio de práctica

1. Operaciones básicas para asignar un formato

En ocasiones se vuelve útil poder controlar a partir de ciertos comandos el formato de un string, pudiendo cambiar letras mayúsculas y minúsculas, centrar o mover la variable a un extremo de la pantalla y/o darle un formato en específico a nuestra secuencia.

Por ejemplo un string que definiremos como variable podemos hacer que represente un pequeño texto, una vez definido nuestro string le daremos un formato de título mediante el siguiente comando.


In [2]:
cadena_1 = "aprender haciendo"

print cadena_1.title()


Aprender Haciendo

Otra posibilidad es que imprima nuestra variable asignada únicamente con letras mayúsculas.


In [3]:
print cadena_1.upper()


APRENDER HACIENDO

Centrar o alinear un texto a la izquierda o derecha de la pantalla son otras opciones de formato posibles de realizar con comandos de python definidos para un string.


In [4]:
cadena_2 = "lo maravilloso de programar"

print cadena_2.center(50,"=")


===========lo maravilloso de programar============

Podemos redefinir una variable con cierto formato y luego convinar con otra opción de formato como sigue.


In [5]:
cadena_1 = "aprender haciendo".title()

print cadena_1.rjust(40, " ")


                       Aprender Haciendo

Se puede observar que el comando anterior ajusta el texto a la derecha, además de que se puede introducir cualquier símbolo incluso espacio, su homólogo a la izquierda es el siguiente.


In [6]:
print cadena_1.ljust(40, "*")


Aprender Haciendo***********************

2. Operaciones de busqueda en un string

Realizar operaciones de búsqueda de un caracter o subcadena dentro de una cadena, pudiendo contabilizar cuantas veces se repite este carácter o determinar la posición en la cual se encuentra la subcadena dentro de la cadena es posible mediante los siguientes comandos.



In [7]:
cadena_3 = "buscando a wally".title()

cadena_3.find("Wally")


Out[7]:
11

EL comando find nos arroja un número que nos indica la posición que antecede al primer caracter de Wally, es decir encontramos a Wally luego del carácter que se ubica luego de la posición 11 dentro de la cadena 3. Otra opción es realizar una búsqueda de un subtexto en un tramo definido de la variable, mencionando además que cuando no se encuentra el carácter en el tramo definido, por defecto nos arroja el valor -1.


In [8]:
cadena_3.find("Wally",0,10)


Out[8]:
-1

In [9]:
cadena_3.find("Wally",2,20)


Out[9]:
11

Podemos también contabilizar cuantas veces se encuentra un caracter o subcadena dentro de una cadena con el comando count. Y de igual modo que antes la contabilización es posible de realizar en un tramo definido del texto.


In [10]:
cadena_4 = "que fácil de encontrar"

cadena_4.count("e")


Out[10]:
3

In [11]:
cadena_4.count("e",0,13)


Out[11]:
2

3. Operaciones lógicas de formato

Veremos que podemos realizar sentencias lógicas en relación a características de un string, esto puede ser de mucha ayuda a la hora de definir ciertos formatos para variables que el programador o usuario deben manipular.

Comenzamos con sentencias que refieren al formato de un string, por ejemplo saber si comienza o termina con determinados caracteres, utilizando los comandos startswith() y endswith() respectivamente, a lo que Python respondera con verdadero o falso.


In [12]:
cadena_5 = "construyendo un detector de mentiras"
print cadena_5.startswith("construyendo un")


True

In [13]:
print cadena_5.endswith("detector")


False

Además podemos verificar si el string contiene caracteres sólo numéricos, alfabéticos o alfanuméricos, usando los comandos isdigit(), isalpha() y isalnum() respectivamente.


In [14]:
cadena_6 = "ano"
print cadena_6.isdigit()


False

In [15]:
cadena_7 = "1987"
print cadena_7.isalpha()


False

In [16]:
cadena_8 = cadena_6 + cadena_7
print cadena_8
print cadena_8.isalnum()


ano1987
True

Luego podemos intentar con otras características de formato, como por ejemplo saber si la cadena contiene caracteres sólo mayúsculas, sólo minúsculas o inclusive algún formato especifico como de título, usando los comandos isupper(), islower() y por último istitle()


In [17]:
nombre = "isaac"
print nombre.isupper()


False

In [18]:
apellido = "asimov".upper()
print apellido.islower()
respuesta = apellido.islower()
print respuesta


False
False

In [19]:
nombre_completo = nombre.title() + apellido.title()

print nombre_completo


IsaacAsimov

La última característica de formato aplicada desde una operación lógica será si la cadena contiene sólo espacios en blanco, para lo que utilizaremos el comando isspace() como sigue a continuación.


In [20]:
nombre_completo = "isaac asimov".title()
print nombre_completo.isspace()


False

4. Sentencias de condicionamiento

Por último en este tutorial introduciremos una sentencia de condicionamiento que nos permitirá ampliar el espectro de aplicación de operaciones lógicas a partir de elementos básicos.


In [21]:
contrasena_1 = "abcd1234"

if len(contrasena_1)<10:
    print "la contrasena contiene menos de 10 caracteres"
else:
    print "contrasena válida"


la contrasena contiene menos de 10 caracteres

In [22]:
contrasena_2 = "abcd1234ab"
respuesta = contrasena_2.islower()

if len(contrasena_2)<10:
    print "la contrasena contiene menos de 10 caracteres"
elif respuesta == True:
    print "la contrasena debe contener al menos 1 caracter mayúscula"
else:
    print "contrasena válida"


la contrasena debe contener al menos 1 caracter mayúscula

5. Ejercicio de práctica

Para aplicar lo aprendido en este tutorial, se deja el ejercicio de crear una pequeña rutina que verifique si los datos referente a las variables nombre_usuario y contrasena cumplen con las siguientes condiciones:

  • El nombre de usuario debe encontrarse en formato de título
  • El nombre de usuario sólo debe contener caracteres alfabéticos
  • Para la contraseña se debe especificar que si tiene menor a 5 caracteres no es válida
  • Si la contraseña tiene menos de 8 caracteres es riesgosa y mayor o igual a 10 es segura
  • La contraseña debe ser de tipo alfanumérica y no debe tener espacios en blanco
  • Por último la contrasena debe contener mayúsculas y minúsculas

In [23]:
>>> desarrollo ejercicio


  File "<ipython-input-23-b435fbb4300a>", line 1
    desarrollo ejercicio
                       ^
SyntaxError: invalid syntax