15-Aprendiendo Python Desde Cero Comparaciones

8
 15-APRENDIENDO PYTHON DESDE CERO (comparaciones) Cualquier objeto de python puede compararse, veremos a continuacion las diferentes posibilidades en las comparaciones. Abramos el WING o el editor que utilicemos y vayamos a los ejemplos: En python no debemos confudirnos, el signo igual simple, refiere a la asignacion como hemos visto en las partes anteriores, si yo hago pepe= '90' es una asignacion, a la variable pepe, le asigno la string '90', pero existe para las comparaciones el signo de doble igual == que sirve para testear si un objeto es igual a otro y nos devolvera verdadero si lo es o falso, si no es igual. A= [67,99,'piru lo'] B= [67,99] C=['pirulo'] alli tenemos tres objetos listas, vemos que asignamos valores a cada una de ellas mediante el simple signo igual. Las copio en la ventana interactiva o shell del WING, ahora si comparo A con B a ver si son iguales mediante el doble signo igual A==B V emos que al no ser A igual a B, el r esultado es False o fa lso. Ahora si comparo A con B+C concatenadas, es obvio que el resultado sera True pues es una igualdad ya que a B le faltaba solo el item 'pirulo' y C es justo eso. Por lo tanto el operador == testea si ambos miembros de ña igualdad, tienen el mismo valor.

Transcript of 15-Aprendiendo Python Desde Cero Comparaciones

Page 1: 15-Aprendiendo Python Desde Cero Comparaciones

5/10/2018 15-Aprendiendo Python Desde Cero Comparaciones - slidepdf.com

http://slidepdf.com/reader/full/15-aprendiendo-python-desde-cero-comparaciones 1/8

 

15-APRENDIENDO PYTHON DESDE CERO (comparaciones)

Cualquier objeto de python puede compararse, veremos a continuacion las diferentes posibilidades

en las comparaciones.

Abramos el WING o el editor que utilicemos y vayamos a los ejemplos:

En python no debemos confudirnos, el signo igual simple, refiere a la asignacion como hemos visto

en las partes anteriores, si yo hago

pepe= '90'

es una asignacion, a la variable pepe, le asigno la string '90', pero existe para las comparaciones el

signo de doble igual == que sirve para testear si un objeto es igual a otro y nos devolvera verdadero

si lo es o falso, si no es igual.

A= [67,99,'pirulo']

B= [67,99]C=['pirulo']

alli tenemos tres objetos listas, vemos que asignamos valores a cada una de ellas mediante el simple

signo igual.

Las copio en la ventana interactiva o shell del WING, ahora si comparo A con B a ver si son igualesmediante el doble signo igual

A==B

Vemos que al no ser A igual a B, el resultado es False o falso.

Ahora si comparo A con B+C concatenadas, es obvio que el resultado sera True pues es una

igualdad ya que a B le faltaba solo el item 'pirulo' y C es justo eso.

Por lo tanto el operador == testea si ambos miembros de ña igualdad, tienen el mismo valor.

Page 2: 15-Aprendiendo Python Desde Cero Comparaciones

5/10/2018 15-Aprendiendo Python Desde Cero Comparaciones - slidepdf.com

http://slidepdf.com/reader/full/15-aprendiendo-python-desde-cero-comparaciones 2/8

 

Existe otro comparador que se utiliza poco pero hay que conocerlo tambien que es el operador  is,

dicho operador testea si ambos objetos son iguales y ademas estan ubicados en el mismo espacio de

memoria del programa, lo cual es poco util pero bueno, jeje.

Vemos una comparacion de si d y e son iguales y logicamente son iguales, eso se ve a simple vista,

 pero que pasa si usamos is ademas de comparar si son iguales verifica otros aspectos.

En el caso de strings chicas ademas de ser iguales, se ubican en el mismo buffer de memoria y elcomando is, nos devuelve que es true.

Aquí vemos dos strings grandes h , i que son iguales, pero al ser muy grandes el comando is, no

solo verifica que sean iguales como ==, si no que ademas verifica que esten en un mismo cache de

memoria, y al ser grandes caen fuera y me puede devolver falso, como en este caso a pesar de ser 

iguales.

Realmente el chequeo que se usa en todos los programas para igualdad es el signo doble igual, el

comando is queda para roles de programacion avanzada, pero bueno al menos conocemos un poco

algun caso que nos muestra una diferencia entre ambos, por lo cual vemos que es conveniente usar 

== para verificar igualdades.

Tambien tenemos en las comparaciones los simbolos de mayor ( >) y menor (<) que nos sirven

 para determinar si un objeto es mayor o menor que otro.

Si son strings se compararan letra a letra hasta ver si una es mayor que otra.

En este caso

Compara los primeros caracteres y como ambos son 9 y son iguales, ahi pasa al segundo donde el 8es menor que 9, por lo tanto ya con eso sale el resultado de que es menor, no siguiendo la

comparacion en los caracteres siguientes.

Page 3: 15-Aprendiendo Python Desde Cero Comparaciones

5/10/2018 15-Aprendiendo Python Desde Cero Comparaciones - slidepdf.com

http://slidepdf.com/reader/full/15-aprendiendo-python-desde-cero-comparaciones 3/8

 

Es similar a la comparacion que se realiza para ubicar las palabras en el diccionario, el mismo

criterio de comparacion letra a letra es usado aquí.

En el caso de objetos como listas se compara item a item, en este caso los dos primeros items son

iguales, pero A tiene un tercero que B no tiene lo cual lo hace mas grande.

En este ejemplo, los primeros items son iguales, en el segundo B es mayor que A por lo cual ya

devuelve que es B mayor que A, sin comparar los siguientes items.

Python reconoce otras formas de verdadero y falso, según el tipo de objeto, por ejemplo si un objeto

es numerico, si es cero es falso y si es distinto de cero es verdadero.

Esto puede servir para iteraciones en donde queremos comparar un indice que va cambiando de

valor y queremos terminar de iterar cuando el valor de dicho item sea cero, se puede hacer la

comparacion directa contra cero, o se puede verificar si es verdad el resultado, el cual sera

verdadero mientras el valor no sea cero.

Veamos ambos ejemplos el primero, comparando si el indice es cero:

x=9

>>> while x>0:... print x,

... x=x-1

...

9 8 7 6 5 4 3 2 1>>>

Bueno ahi tenemos una iteracion while, que aun no estudiamos pero while significa que va a iterar 

mientras sea verdadera la condicion que esta al lado, en este caso que x sea mayor que cero.

Como x comienza valiendo nueve y la condicion es verdadera o sea que x es mayor que cero,

entrara en el while y loopeara hasta que vaya disminuyendo por el x=x-1 que esta dentro y cuando

llegue a cero saldra por que x>0 sera falso.

Una variante de esta iteracion, es imprimir el valor de x cuando salio, para verificar el valor de x en

ese momento.

Page 4: 15-Aprendiendo Python Desde Cero Comparaciones

5/10/2018 15-Aprendiendo Python Desde Cero Comparaciones - slidepdf.com

http://slidepdf.com/reader/full/15-aprendiendo-python-desde-cero-comparaciones 4/8

 

Si armamos un script

x=9

while x>0:print x,

x=x-1

print 'salimos con x valiendo',x

Si lo debuggeo con STEP INTO o f7, vere como va loopeando escribiendo en la pestaña DEBUG

I/O lo que va imprimiendo y en el STACK DATA vere los valores de cada variable como van

cambiando, especialmente x que empieza siendo nueve, y va disminuyendo hasta que se hace cero y

sale.

Sale del loop cuando x vale cero y imprime el mensaje de salida.

La verdad el cartel de salimos con x valiendo cero, deberia estar en otra linea, lo arreglaremos.

Ahora si al ponerle el \n, salta a la otra linea donde escribe el mensaje de salida.

Page 5: 15-Aprendiendo Python Desde Cero Comparaciones

5/10/2018 15-Aprendiendo Python Desde Cero Comparaciones - slidepdf.com

http://slidepdf.com/reader/full/15-aprendiendo-python-desde-cero-comparaciones 5/8

 

Es bueno ver que el print del mensaje de salida, debe estar nuevamente en el margen, sin

indentacion, eso significa que se ejecutara cuando salga del while, si le colocara la indentacion que

tiene x=x-1, se ejecutara dentro del while y se repetira cada vez que pase por alli en el loop.

Alli vemos el segundo ejemplo, testea que se repita el loop mientras x sea verdadero, o sea diferente

de cero como habiamos visto, en la practica se comporta igual que el caso anterior ya que antes

testeaba que fuera verdadera la expresion x>0.

Los valores numericos se comparan directamente y el mas grande es el mayor, en este caso se ve

que la variable y que vale 2 es mas grande que la variable x que vale -1 que es negativo y menor, si

 pruebo si x es mayor que y el resultado es falso.

Si aumentamos x para que sea mas negativo en este caso -5, vemos que sigue siendo menor que y

que vale 2.

Ya vimos que los objetos numericos son verdaderos si son diferentes de cero y falsos si son cero, los

objetos que no son numericos son verdaderos si su contenido es diferente de vacio, si quiero saber si

una lista es verdadera, debera tener algun contenido, la lista vacia [] es falsa.

 

Page 6: 15-Aprendiendo Python Desde Cero Comparaciones

5/10/2018 15-Aprendiendo Python Desde Cero Comparaciones - slidepdf.com

http://slidepdf.com/reader/full/15-aprendiendo-python-desde-cero-comparaciones 6/8

 

Alli en la tabla vemos ejemplos de objetos verdaderos y falsos, la string 'spam' como cualquier otra

que tenga contenido es verdadera, mientras que la string “” que es vacia es falsa, asi mismo la listavacia [] es falsa, el diccionario vacio {} es falso, el numero 1 es verdadero y el 0 es falso, y None

que es un objeto especial similar al NULL de C, es tomado siempre como valor falso.

Existe una extension que se aplico a partir de Python 2.3 y es un nuevo tipo llamado booleano

(bool) o sea que puedo asignar a una variable directamente el valor True o False.

Funcionan realmente de la misma forma como hablamos de que cero era verdadero y diferente de

cero era falso, es el mismo concepto en este caso, se le da entidad con un nuevo tipo que se puede

asignar directamente comparar etc.

Alli vemos otro ejemplo, a la variable x se le asigna el valor True al inicio, por eso mientras x sea

verdadero entra en el while, donde imprime, y luego se le cambia el valor a False, lo que hace que

salga e imprima que salimos con x valiendo False.

Page 7: 15-Aprendiendo Python Desde Cero Comparaciones

5/10/2018 15-Aprendiendo Python Desde Cero Comparaciones - slidepdf.com

http://slidepdf.com/reader/full/15-aprendiendo-python-desde-cero-comparaciones 7/8

 

En el siguiente ejemplo vemos que tambien se puede usar combinados el mayor e igual (>=) y el

menor e igual (<=)

Vemos que x se mantiene loopeando mientras sea mayor e igual que 1, o sea saldra cuando valga

cero y eso lo imprime en la salida.

 

Resumiendo Python compara los diferentes objetos de esta forma:

Los numeros se comparan por el que tiene mayor magnitud, es mas grande los positivos son

mas grandes que los negativos siempre.

Las strings se comparan como se ubicarian en el diccionario, carácter por carácter y si el

  primer carácter es igual, buscamos el siguiente para ver cual lo tiene mayor, donde

encontramos un primer caracter desigual sera mayor el que tenga el carácter mas grande de

ambos.

Listas y tuplas son comparadas item por item de izquierda a derecha, de la misma forma que

las strings el primer item diferente que se halla, es el que decide si una es mayor que otra.

Los diccionarios solo se comparan, haciandolo mediante listas que se obtienen del mismo

 por el metodo sort.( lo usaremos mas adelante y alli se veran ejemplos )

Hasta la parte 16

Ricardo Narvaja

 

Page 8: 15-Aprendiendo Python Desde Cero Comparaciones

5/10/2018 15-Aprendiendo Python Desde Cero Comparaciones - slidepdf.com

http://slidepdf.com/reader/full/15-aprendiendo-python-desde-cero-comparaciones 8/8