martes, 24 de febrero de 2009

EXPRESIONES Y SENTENCIAS EN PYTHON

Una expresion ??? bueno, es forma correcta de decirle o digitar mas bien algo a nuestro interprete de manera que el interprete de Python me entienda y me conteste, aunque hay expresiones como en la vida real que el interprete al igual que las personas se quedan sin palabras ;)

>>> 1+1
2
bueno aqui hay que saber que una variable y un valor se consideran expresiones
>>>150
150
>>>x=2
>>>x
2
miren esto:

>>>mensaje="shalom"
>>>mensaje
'shalom'
>>>print(mensaje) #en python 2.x es print mensaje
shalom

ven la diferencia? Cuando Python muestra el valor de una expresion, muestra exactamente lo mismo que se digito al introducir el valor en el caso de dicha cadena 'shalom' la muestra tal y como fue asignada a la variable. Pero la sentencia print imprime el valor de la expresion en este caso el contenido de la cadena shalom. bueno esto se nota aqui con la cadenas :) si lo intentas con un entero pues no se va notar tanto esta diferencia :).

OPERADORES Y EXPRESIONES:


Los operadores son pues unos simbolos especiales que varios de ellos lo vemos desde que tavamos bbs :) si esos que reprentas operaciones de calculo simples ya saben a cuales me refiero?? no son mas que las suma (+) la resta (-) la division(/) y la multiplicacion(*)

veamos:

>>>20+32
52
>>>hora=10
>>>hora-1
9
>>>hora*60+2
602
>>>
5**2
25
>>>(7-2)+(5*2-5)
10

python 3.x
>>>5/2
2.5

python 2.x
>>>5/2
2


como ya sabran el simbolo (*) es el de la multiplicacion y el del (**) es el simbolo de la exponeciacion que falta de respeto hackchan :) pero los novatillos daran gracias al cielo por eso ;)
bueno deben saber que la expresion hora-1 donde, hora sera reemplazado por el valor que le asigne que en este caso fue 10 antes de hacer la operacion.

como ven la suma,division,resta y la multiplicacion hacen lo que ya esperavamos que hicieran asi que no debe ser muy dificil para los totalmente novatos el captar estos conceptos, pero si le recuerdo que la division en python en su version 2.x no hace lo que uno quisiera qu haga ya que una division tan facil donde el resultado es 2.5 me arroja un 2 bueno en VARIABLEN CON PYTHON ahi explique el porque de esa aparente anormalida con el resultado.

El ORDEN DE LAS OPERACIONES:

Bueno los Ingleses (hello everybody) :D alguien quiere traducir este blog ??? jeje no que va ya hay bastantes en ingles :D bueno amigos portemonos serios ;) lo que venia diciendo es que hay un acronimo de los igleses que es PEMDAS algunos diran que rayos quiere decir bueno le voy a decir y no tienen que ir por el diccionario, bueno se los digo a los que no saben que es un acronimo :)
P arentisis (parentisis)
E xponentiation (Exponenciacion)
M ultiplication (Multiplicacion)
D ivision (Division)
A ddition (Adicion)
S ubtraction (Sustraccion)

Bueno el porque de esa clase de kindergarden, bueno solo es para recordarle las reglas de precedencia de estos simbolos y la campeona de todas osea la de mayor precedencia es el ()

veamos

>>> 2*3+2
8
pero si queremos que la suma se realize primero que la multiplicacion pues recurrimos a los () que es el simbolo de mayor precedencia y por ende sera lo primero a realizar antes que nada veamos aver si es verda:
>>>2*(3+2)
10

bueno el siguiente es la exponenciacion es la que sigue despues de () en tener la presedencia mas alta veamos:

>>>5**2+1
26

si ves, si te das cuenta ??? la exponenciacion al tener mayor precedencia que la suma se realiza primero 5 elevado ala dos y luego le sumo 1, oye pero quiero que la suma se haga primero que hago??? no mentiras es una broma :) ya me dijistes que el parentisis es el de mayor precedencia pues solo hay que hacer esto:

>>>5**(2+1)
125


bueno los siguientes digo siguientes porque la multiplicacion y la division tienen el mismo nivel de precedencia claro esta que ambos estan por debajo de los parentesis y la exponenciacion veamos:

>>>8*2/2
8

pero si hago lo invertido dara igual??? veamos:

>>>2/8*2
0.5 #los que usan pytho 2.x recuerden que el resultado va ser 0

si se dan cuenta?? esto es porque la division y la multiplicacion tienen el mismo nivel de presedencia entonces la expresion se evalua de izquierda a derecha.

Bueno solo queda la adicion y la Sustraccion que son los de mas bajo nivel de precedencia y al igual que la multiplicacion y la division tambien comparten un mismo nivel de precedencia:


>>>1+2-8
-5


bueno vemos una serie de combinaciones:

>>>(25+3)/(1+3*2)*2

bueno muchachos traten de hacer ese a mano y luego lo digitan en su interprete Python no se hagan trampa que aqui venimos a equivocarnos y corregirnos para aprender :) vamos cuanto nos dara esa expresion pues muy facil es 2 este cree que no me lei bien este post baboso, ole te pasastes :) dejame decirte que si te dio 2 estas remal, pero a los que le dio 2.3 esta muy mal tambien :( bueno quien da mas o menos :DDD bueno lo que dijeron menos le daria algo asi como 1.75 pero no, no es la respuesta que busco, si ven y esta expresion es pequeñita y los que se equivocaron tienen que repasar y dejar esos conceptos claros ya que mas adelante veremos cuando tengamos que resolver algun ejercicio matematico tendremos expresiones realmente complejas:DD la respuesta era:


>>>(25+3)/(1+3*2)*2
>>>8

A los que antes de probarlo en su interprete Python los felicito van en busca del conocimiento y si les dio 8 es por que no son tan novatillos :DD bueno y los que hicieron trampa pues vamos esforcemonos mas la idea es aprender y a los hacker no me insulten no soy pedagogo y hay que enteder que ustedes en sus dias pasados fueron unos novatillos :) .

LAS OPERACIONES CON CADENA

Bueno en Python toda operacion matematica con una cadena es ilegal veamos:

>>>hola +2
Traceback (most recent call last):
File "", line 1, in
TypeError: Can't convert 'int' object to str implicitly

asi que cualquier operacion basica (+ - * /) con cadenas (String) va generar el mismo error, creo que esto esta muy facil :) , pero que pasa si a dos String los tratamos de sumar veamos:

>>>"hola " + "Hackchan"
hola hackchan

el operador (+) entre cadenas se utiliza para la concatenacion facil no??? sera que si nos ponemos de curioso haber que pasa si restamos (-) y dividimos (/) vale:

>>>"hola " - "Hackchan"

Traceback (most recent call last):
File "", line 1, in
TypeError: unsupported operand type(s) for -: 'str' and 'str'

>>>"hola" / "Hackchan"

Traceback (most recent call last):
File "", line 1, in
TypeError: unsupported operand type(s) for /: 'str' and 'str'

Bueno no sigamos siendo mas boludos probando lo inebitable ;) como ven el operador (+) se utliza
como en otros lenguages la concatenacion con este pequeño amigo, bueno el operador (*) tambien tiene un comportamiento algo muy interesante en cadenas para los que estan pensando en que "x"*"x" nos va dar "
" pues creo que tienen una sobre dosis de numeros :) pues no esa no es la funcion del (*) vemos cual es:

>>> "hola "*2+"hackchan"
'hola hola hackchan'

>>> "g"+"o"*15+"l"
'goooooooooooooool'


COMPOSICION:

Que hemos visto hasta aqui: las variables, las expresiones y las sentencias todo por separado bueno esperaba que ya lo fueran ustedes por su cuenta ir combinando todo lo que hemos visto vemos:

>>> print (7 + 23)
30


Bueno en realida lo que hace el interprete Python es realizar primero la suma y luego llama la funcion print


>>>hora = 2
>>>minuto=
4

>>> print ("numero de minutos:",hora*60+minuto) #si tienes python 2.x elimina los ( )
124

>>>porcentaje= (minuto * 100 ) / 60
>>>print(porcentaje)
>>> 6.66666666667


Por ahora esta capacidad no es la gran cosa pero ya mas adelante veremos cosas mucho mas complejas con algo mas de breveda ;) para los novatillos y los no tan novatillos acuerdensen que la parte izquierda de una asignacion debe ser una variable:

variable = minuto *100

ya que lo contrario seria totalmente ilegal:

minuto*100 = variable

espero que esto sea de mas decirlo ya que me imagino que un ultranovatillo almenos sepa manejar el operador de asignacion ya que como vemos es ilogico decir 8= t a 8 asignarle t asi lo lee Python ya todo tiene un orden y una forma correcta recuerda que python es un lenguaje formal y las ambiguedades son solo para los lenguajes naturales ;).

COMENTARIOS:

Muchos ya sabemos esto y muchos no lo utilizamos creemos que nuestros programas sera leidos sin problemas por otro programador tal vez eso sea asi pero te imaginas ponerser a entender y decifrar que hizo un programador a un programa realmente grande es mucho mas facil empezar de 0 que realizar el proceso de ingenieria inversa asi que una buena practica de programacion es que documente absolutamente todo mas adelante veremos un comentario especial que tiene Python para fines de la documentacion por ahora debemos saber que # todo lo que este despues de este simbolo python lo va ignorar ya que se trata de un comentario.

>>> print 2 + 2 # suma de dos enteros
4

bueno todo lo que llevamos es algo muy basico que no esta de mas como es interpretado todo esto en Python tranquilos que ya llegaremos a explicar funciones y veremos el paradigma de la Programacion orientada a Objetos en python pero antes tendremos que ver que son listas tuplas y diccionarios hasta la proxima bye.

write by Hackchan

6 comentarios:

  1. Este comentario ha sido eliminado por un administrador del blog.

    ResponderEliminar
  2. NI CASO AL COMENTARIO ANTERIOR, no te lo mereces. Seguro que el que ha escrito el comentario anterior no ayudado nunca a nadie en su vida.
    Muy superficial es el que solo se fija en los externo (en este caso la gramatica) y no se da cuenta del esfuerzo que has dedicado altruistamente para ayudar a los demas.

    Yo personalmente te agradezco de todo corazon las horas que has dedicado a estas paginas (a mi me han servido de mucho) y poco importa si lo que aqui pones es de cosecha propia o te has inspirado en alguna parte (dicen que desde los griegos ya esta todo inventado y solo nos dedicamos a transmitir el saber, aportando algunos solo una pequeña parte (que es con lo que progresamos), mientras que otros se dedican a fastidiar al projimo.

    Lo dicho muchas gracias y te animo a continuar por este camino.

    Un afectuoso abarazo.

    Jose Lopez

    ResponderEliminar
  3. excelente publicacion... no imagine que python fuese asi de facil... y no le hagas caso al primer comentario... tu sigue adelante... felicidades... es un excelente articulo...

    ResponderEliminar
  4. buenisimo ! los parentesis me estaban arruinando la existencia ;)
    gracias !

    ResponderEliminar
  5. que significa que este esto ??

    m = 5
    .....
    ....
    for i in range(5):
    m -= 1


    me intersa saber que le hace el ( -= ) a m..
    le va quitando uno cada vez que pasa por el for ???

    ResponderEliminar
  6. Hola Hackchan, te felicito por lo sencillo de tu explicación como novato que soy me fue muy claro todo lo que escribiste.
    Muchas gracias.

    Jose

    ResponderEliminar