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