Condición inexistente?

Francisco Palm fpalm en ula.ve
Dom Sep 25 21:45:58 CEST 2005


Bueno, todo depende de cual lenguaje estás viniendo, tienes que pensar 
más allá de la sintaxis particular de un lenguaje...

la sintaxis del if en Python es

    if <expresion_logica>:

Esta expresión lógica devuelve un valor, si pones "creo_que_es_primo == 
True" lo único que haces es "True == True" es cierto, devuelve True. 
Pero si la variable creo_que es primo ya contiene el valor True la 
comparación es innecesaria. Lo que pasa es que algunos lenguajes como 
Basic o Pascal no son muy inteligentes en este sentido...

Otra cuestión importante es que revises el tema de lógica de 
cortocircuito...

Tomado de la página  Python Instántaneo, escrito por Magnus Lie Hetland 
(http://www.arrakis.es/~rapto/AprendaPython.html):

    Retomando el tema de la lógica de cortocircuito...

    Todos los valores de Python se pueden utilizar como valores lógicos.
    Algunos, los más "vacíos", como |[]|, |0|, |""| y |None| representan
    el valor lógico "falso", mientras el resto (como |[0]|, |1| or
    |"Hola, mundo"|) representan el valor lógico "verdadero".

    Las expresiones lógicas como |a and b| se evalúan de este modo:
    Primero, se comprueba si |a| es verdadero. Si /no/, simplemente se
    devuelve su valor. Si /sí/, simplemente se devuelve |b| (que
    representa el valor lógico de la expresión). La lógica
    correspondiente a |a or b| es: Si |a| es verdadero, devolver su
    valor. Si no, devolver |b|.

    Este mecanismo hace que |and| y |or| se comporten como los
    operadores booleanos que supuestamente implementan, pero también
    permite escribir expresiones condicionales muy curiosas. Por
    ejemplo, el código

    if a:
        print a
    else:
        print b
  

    Se puede sustituir por:

    print a or b
  

Pues eso...

Saludos

F. Palm

cut0ff wrote:

> Que tal lista, recién acabo de empezar en Python y ya tengo algunas 
> dudas. Expongo una de ellas. Resulta que estoy leyendo un tutorial que 
> conseguí a traves de esta lista y uno de sus ejemplos dice así:
>
>>     num=int(raw_input('Dame un número: '))
>>
>>     creo_que_es_primo=True
>>
>>     for divisor in range(2, num):
>>             if num % divisor == 0:
>>                     creo_que_es_primo=False
>>
>>     if creo_que_es_primo:
>>             print 'El número', num, 'es primo'
>>     else:
>>             print 'El número', num, 'no es primo'
>
>
> Como podeis observar el programa calcula si un numero és o no primo. 
> Mi duda viene relacionada con la ultima sentencia if. No entiendo la 
> condición 'if creo_que_es_primo:'. No deberia compararse con el valor 
> True? o en cualquier caso ¿con otro valor?
>
>




Más información sobre la lista de distribución Python-es