subplot python




¿Cómo escribir en línea si la declaración para imprimir? (9)

Bueno, ¿por qué no simplemente escribe:

if b:
    print a
else:
    print 'b is false'

Necesito imprimir algunas cosas solo cuando una variable booleana está configurada en True . Entonces, después de ver this , lo intenté con un ejemplo simple:

>>> a = 100
>>> b = True
>>> print a if b
  File "<stdin>", line 1
    print a if b
             ^
SyntaxError: invalid syntax  

Lo mismo si escribo print a if b==True .

¿Que me estoy perdiendo aqui?


Desde 2.5 se puede usar el operador condicional ternario equivalente a "?:" De C y la sintaxis es:

[on_true] if [expression] else [on_false]

Entonces tu ejemplo está bien, pero simplemente debes agregar else , como:

print a if b else ''

Inline if-else EXPRESSION siempre debe contener una cláusula else, por ejemplo:

a = 1 if b else 0

Si desea dejar sin cambios el valor de su variable 'a', debe asumir el antiguo valor 'a' (de lo contrario, las demandas de sintaxis todavía lo requieren):

a = 1 if b else a

Este fragmento de código no se modifica cuando b se convierte en Falso.


La declaración 'else' es obligatoria. Puedes hacer cosas como esta:

>>> b = True
>>> a = 1 if b else None
>>> a
1
>>> b = False
>>> a = 1 if b else None
>>> a
>>> 

EDITAR:

O, dependiendo de sus necesidades, puede intentar:

>>> if b: print(a)

Prueba esto . Te podria ayudar

a=100
b=True

if b:
   print a

Puedes usar:

print (1==2 and "only if condition true" or "in case condition is false")

Así como puedes seguir así:

print 1==2 and "aa" or ((2==3) and "bb" or "cc")

Ejemplo del mundo real:

>>> print "%d item%s found." % (count, (count>1 and 's' or ''))
1 item found.
>>> count = 2
>>> print "%d item%s found." % (count, (count>1 and 's' or ''))
2 items found.

Si no desea from __future__ import print_function , puede hacer lo siguiente:

a = 100
b = True
print a if b else "",  # Note the comma!
print "see no new line"

Que imprime:

100 see no new line

Si no estás en contra from __future__ import print_function o estás usando python 3 o posterior:

from __future__ import print_function
a = False
b = 100
print(b if a else "", end = "")

Agregar el else es el único cambio que necesita hacer para que su código sea sintácticamente correcto, necesita el else para la expresión condicional (el "en línea si el resto está bloqueado")

La razón por la que no usé None o 0 como han usado otros en el hilo, es porque el uso de None/0 causaría que el programa print None o print 0 en los casos donde b es False .

Si desea leer sobre este tema, he incluido un link a las notas de la versión para el parche que esta característica se agregó a Python.

El 'patrón' anterior es muy similar al patrón que se muestra en PEP 308:

Esta sintaxis puede parecer extraña y al revés; ¿Por qué la condición va en medio de la expresión, y no en el frente como en la C de C? x: y? La decisión se verificó aplicando la nueva sintaxis a los módulos en la biblioteca estándar y viendo cómo se lee el código resultante. En muchos casos donde se usa una expresión condicional, un valor parece ser el "caso común" y un valor es un "caso excepcional", que se usa solo en raras ocasiones cuando no se cumple la condición. La sintaxis condicional hace que este patrón sea un poco más obvio:

contents = ((doc + '\ n') si doc else '')

Así que, en general, creo que esta es una forma razonable de acercarse, pero no se puede discutir con la simplicidad de:

if logging: print data

Siempre necesitas una else en una línea si:

a = 1 if b else 0

Pero una forma más fácil de hacerlo sería a = int(b) .


hmmm, puedes hacerlo con una lista de comprensión . Esto solo tendría sentido si tuviera un rango real ... pero hace el trabajo:

print([a for i in range(0,1) if b])

o usando solo esas dos variables:

print([a for a in range(a,a+1) if b])




inline