Strings (Cadenas)

--Originally published at Python.

Una cadena de caracteres permite almacenar un conjunto de caracteres. Su funcionamiento es similar a una tupla.
Para inicializar un string utilizamos el operador de asignación.
nombre=‘Juan Pablo’
Podemos utilizar las comillas simples o dobles para su inicialización:
mail='jose@gmail.com’
o
mail=“jose@gmail.com”
Para conocer el largo de un string podemos utilizar la función len:
print len(mail)
Para acceder a un caracter particular del string lo hacemos indicando un subíndice entre corchetes:
print mail[0]  #Imprimimos el primer caracter
El lenguaje Python nos permite rescatar una “porción” de un string con la misma sintaxis que trabajamos las tuplas:
nombre='Jose Maria’
print nombre[1:4]  #ose
print nombre[:4] #Jose
print nombre[5:] #Maria
Los string son inmutables, es decir que no podemos modificar su contenido luego de ser inicializados:
titulo='Administracion’
titulo[0]='X’ # Esto produce un error
Esto no significa que no podemos utilizar la variable para que referencie a otro string:
nombre='Jose’
print nombre
nombre='Ana’
print nombre
Para concatenar string Python permite utilizar el operador +.
Si tenemos tres string y queremos almacenar sus contenidos en un cuarto string podemos codificarlo de la siguiente manera:
cadena1='uno’
cadena2='dos’
cadena3='tres’
total=cadena1+cadena2+cadena3
print total #unodostres
También Python define el operador * para los string. El resultado de multiplicar un string por un entero es otro string que repite el string original tantas veces como indica el número.
#si queremos un string con 80 caracteres de subrayado, la forma más sencilla es utilizar la siguiente expresión:
separador=’_’*80
print separador
Los operadores relacionales definidos para los string son:
> Mayor
>= Mayor o igual
< Menor
<= Menor o igual
== Igual
!= Distinto
Si queremos saber si un string es mayor alfabéticamente que otro utilizamos el operador >
nombre1='CARLOS’
nombre2='ANABEL’
if nombre1>nombre2:
   print nombre1+’ es mayor alfabéticamente que ’+nombre2
si queremos saber si dos variables tienes en mismo contenido:
nombre1='CARLOS’
nombre2='CARLOS’
if nombre1==nombre2:
  print 'Las dos variables tienen el mismo contenido:’+nombre1


de: http://pythonya.appspot.com/detalleconcepto?deta=Estructura%20de%20datos%20tipo%20cadena%20de%20caracteres%20(string)

Buscar dentro de una lista.

--Originally published at Python.

Queremos poder formular dos preguntas más respecto de la lista de inscritos:
¿Está la persona cuyo padrón es v inscripta en esta materia?
¿En qué orden se inscribió la persona cuyo padrón es v?.
Veamos qué operaciones sobre listas se pueden usar para lograr esos dos objetivos:
Para preguntar si un valor determinado es un elemento de una lista usaremos la operación in:
>>> xs
[78455, 79211, 54988, 66540, 47890]
>>> 78 in xs
False
>>> 66540 in xs
True
>>>
Nota
Esta operación se puede utilizar para todas las secuencias, incluyendo tuplas y cadenas
Para averiguar la posición de un valor dentro de una lista usaremos la operación index().
>>> xs.index(78455)
0
>>> xs.index(47890)
4
Advertencia
Si el valor no se encuentra en la lista, se producirá un error:
>>> xs.index(78)
Traceback (most recent call last):
  File “<stdin>”, line 1, in <module>
ValueError: list.index(x): x not in list

Si el valor está repetido, el índice que devuelve es el de la primera aparición:
>>> ys=[10,20,10]
>>> ys.index(10)
0
Nota
Esta operación está disponible en cadenas, pero no en tuplas.
Para iterar sobre todos los elementos de una lista usaremos una construcción for:
>>> zs = [5, 3, 8, 10, 2]
>>> for x in zs:
…     print x

5
3
8
10
2
Nota
Esta construcción se puede utilizar sobre cualquier secuencia, incluyendo tuplas y cadenas.

Mutar una lista.

--Originally published at Python.

Dijimos antes que las listas son secuencias mutables. Para lograr la mutabilidad Python provee operaciones que nos permiten cambiarle valores, agregarle valores y quitarle valores.
Para cambiar una componente de una lista, se selecciona la componente mediante su índice y se le asigna el nuevo valor:


>>> xs[1]=79211
>>> xs
[78455, 79211, 66540, 45750]


Para agregar un nuevo valor al final de la lista se utiliza la operación append(). Escribi-mosxs.append(47890)para agregar el padrón 47890 al final dexs`.


>>> xs.append(47890)
>>> xs
[78455, 79211, 66540, 45750, 47890]
>>>


Para insertar un nuevo valor en la posición cuyo índice es k (y desplazar un lugar el resto de la lista) se utiliza la operación insert().
Escribimos xs.insert(2, 54988) para insertar el padrón 54988 en la tercera posición de xs.


>>> xs.insert(2, 54988)
>>> xs
[78455, 79211, 54988, 66540, 45750, 47890]


Nota
Las listas no controlan si se insertan elementos repetidos, si necesitamos exigir unicidad, debemos hacerlo mediante el código de nuestros programas.


>>> xs.insert(1,78455)
>>> xs
[78455, 78455, 79211, 54988, 66540, 45750, 47890]


Para eliminar un valor de una lista se utiliza la operación remove().
Escribimos xs.remove(45750) para borrar el padrón 45750 de la lista de inscritos:


>>> xs.remove(45750)
>>> xs
[78455, 78455, 79211, 54988, 66540, 47890]


Si el valor a borrar está repetido, se borra sólo su primera aparición

:
>>> xs.remove(78455)
>>> xs
[78455, 79211, 54988, 66540, 47890]


Advertencia
Si el valor a borrar no existe, se produce un error:


>>> xs.remove(78)
Traceback (most recent call last):
  File “<stdin>”, line 1, in <module>
ValueError: list.remove(x): x not in list

Listas.

--Originally published at Python.

Presentaremos ahora una nueva estructura de datos: la lista. Usaremos listas para poder modelar datos compuestos pero cuya cantidad y valor varían a lo largo del tiempo. Son secuencias mutables y vienen dotadas de una variedad de operaciones muy útiles.
La notación para lista es una secuencia de valores encerrados entre corchetes y separados por comas. Por ejemplo, si representamos a los alumnos mediante su número de padrón, se puede tener una lista de inscritos en la materia como la siguiente: i [78455, 89211, 66540, 45750]. Al abrirse la inscripción, antes de que hubiera inscritos, la lista de inscritos se representará por una lista vacía: [].
7.2.1. Longitud de la lista. Elementos y segmentos de listas
Como a las secuencias ya vistas, a las listas también se les puede aplicar la función len() para conocer su longitud.
Para acceder a los distintos elementos de la lista se utilizará la misma notación de índices de cadenas y tuplas, con valores que van de 0 a la longitud de la lista −1.

Para obtener una sublista a partir de la lista original, se utiliza la notación de rangos, como en las otras secuencias.
Para obtener la lista que contiene sólo a quién se inscribió en segundo lugar podemos escribir:

Para obtener la lista que contiene al segundo y tercer inscritos podemos escribir:

Para obtener la lista que contiene al primero y segundo inscritos podemos escribir:

Cuando usar que tipo de repetición en un programa.

--Originally published at Python.

Ya hemos visto todos los tipos de repetición de un programa. Eso de cuando utilizarlos va depende del tipo del algoritmo que quieras utilizar. También es posible combinarlos para un código más grande. Pero OJO, no todos los tipos puedan funcionar. Hay que dejar claro los 3 tipos de repetición y con sus ejemplos debido a que ya se había explicado anteriormente en algunos WSQ y Masteries.

El uso de “while” se utiliza para que una operación se haga una y otra vez hasta que la condición se rompa. Un ejemplo sería el Método Babilónico. La variable “z” se rompe cuando este es igual a la variable “y”.

El uso de “for” tiene muchos usos, pero lo principal es que establece ciertos límites y se hará la operación tantas veces hasta llegar a ese límite. Un ejemplo sería el de la Mastery 20 con el de las potencias. Se establece un límite en “b”, es decir, se hará “b” la misma operación.

Y el uso de la recursión algorítmica  que se define la función a sí misma, es decir, se llama la función dentro de su misma función. El ejemplo sería el del Gran Común Divisor de la WSQ12. Dependiendo de los valores de “a” y “b”, se restará esos argumentos dependiendo de la condición llamando la función en sí.

de: http://kenscourses.com/tc101winter2015/2015/mastery-22-when-to-use-what-type-of-repetition-in-a-program-3/

USO DE RECURSIÓN PARA ALGORITMOS REPETITIVOS

--Originally published at Python.

Ya hemos visto como funcionan los loops. Una cosa interesante de ellos es que pueden utilizarse a sí mismas. Para dejar más claro esto es que son algoritmos repetitivos y su función es definirse y utilizarse a sí misma. En Python se puede hacer esto. Un gran ejemplo de ello es la Factorial de la WSQ09.

image

Vemos que dentro de la función de la Factorial, en la línea 7 se llama sí mismo. Esto sirve para definir “n!” luego de haber puesto las condiciones anteriores. Básicamente, es como un loop. También se llamó esa función dentro de otro loop y el output sería esto:

image


Otro gran ejemplo sería el de Gran Común Divisor en el WSQ12:
Fórmula de Éuclides:
GCD(a, a) = a
GCD(a, b) = gcd(a - b, b) si a > b
GCD(a, b) = gcd(a, b - a) si a < b

image

Se ve que en la línea 5 y en la línea 8 se llama la función GCD() con diferentes parámetros. Es otro loop y el output sería esto:

image


No en todos los casos se puede utilizar algoritmos recursivos, todo depende de qué tipo de problema estás enfrentando.

de: http://rogramming.blogspot.mx/2015/05/mastery-21-use-of-recursion-for.html

Loops. (while)

--Originally published at Python.

Mientras que los búcles While se repiten mientras se cumpla una condición buleana sea cumplida. Por ejemplo:

Cuando llega a un bucle while, Python evalúa la condición y, si es cierta, ejecuta el cuerpo del bucle. Una vez ejecutado el cuerpo del bucle, se repite el proceso (se evalúa de nuevo la condición y, si es cierta, se ejecuta de nuevo el cuerpo del bucle) una y otra vez mientras la condición sea cierta. Únicamente cuando la condición sea falsa, el cuerpo del bucle no se ejecutará y continuará la ejecución del resto del programa.
La variable o las variables que aparezcan en la condición se suelen llamar variables de control. Las variables de control deben definirse antes del bucle while y modificarse en el bucle while.

Otra ventaja del bucle while es que el número de iteraciones no está definida antes de empezar el bucle, por ejemplo porque los datos los proporciona el usuario. Por ejemplo, el siguiente ejemplo pide un número positivo al usuario una y otra vez hasta que el usuario lo haga correctamente:


Loops. (for)

--Originally published at Python.

Hay dos tipos de búcles(loops) en Python, for y while.
El búcle “for”
Los búcles For iteran sobre una secuencia. Aquí un ejemplo:


Para bucles pueden iterar sobre una secuencia de números usando las funciones de “range” y “xrange”. La diferencia entre rango y range el que la función de rango devuelve una nueva lista con números que el rango especifica, donde xrange devuelve un iterador, el cual es muy eficiente. (Python 3 usa la función range, el cual actua como xrange). Nota que la función xrange esta basada en zero.

de: http://www.learnpython.org/es/Loops

Condicionales Anidadas.

--Originally published at Python.

En ocaciones cuando hay más de dos caminos posibles es necesario implementar estructuras condicionales anidadas, es decir por la rama del verdadero o falso (else:) disponemos otras estructuras condicionales.
Debemos tener cuidado con la indentación del código para evitar errores.
Veamos un ejemplo que requiere utilizar estructuras condicionales anidadas. Generaremos tres números aleatorios y luego imprimiremos el mayor de los tres:

Como podemos observar por el bloque del verdadero del primer if tenemos otra estructura condicional (debemos indentar cada estructura condicional:


Uso de la condicional “else”.

--Originally published at Python.

El utilizar else lo que hace es que podemos tener la capacidad de ejecutar un codigo alternativo en caso de que el resultado logico de la expresion evaluada sea falso. Esta es una forma de tener varias alternativas de codigo a ejecutar.El uso con un ejemplo seria el siguiente.

En este ejemplo se puede ver que la expresion solo sera verdadera si la variable es diferente de 10, dado que esto no es cierto, ejecutaremos la alternativa con “else”, el resultado de este programa sera el siguiente.