605 Stimmen

Wie schreibt man eine inline if-Anweisung für den Druck?

Ich muss einige Dinge nur drucken, wenn eine boolesche Variable auf True . Nachdem ich mir also die diese Ich habe es mit einem einfachen Beispiel versucht:

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

Dasselbe gilt, wenn ich schreibe print a if b==True .

Was übersehe ich hier?

15voto

Eduardo Punkte 7291

Sie können verwenden:

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

Sie können genauso gut weitermachen wie bisher:

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

Beispiel aus der Praxis:

>>> 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.

15voto

Eric Ed Lohmar Punkte 1727

Dies kann geschehen mit String-Formatierung . Es funktioniert sowohl mit der %-Notation als auch mit .format() y f-strings (neu in 3.6)

print '%s' % (a if b else "")

o

print '{}'.format(a if b else "")

o

print(f'{a if b else ""}')

13voto

kenorb Punkte 134883

Seit 2.5 können Sie Äquivalent zu C's "?:" ternärer Konditionaloperator und die Syntax lautet:

[on_true] if [expression] else [on_false]

Ihr Beispiel ist also gut, aber Sie müssen einfach hinzufügen else , wie:

print a if b else ''

6voto

In Ihrem Fall funktioniert das:

a = b or 0

Edita: Wie funktioniert das?

In der Frage

b = True

Also die Bewertung

b or 0

führt zu

True

die zugeordnet ist zu a .

Si b == False? , b or 0 würde den zweiten Operanden ergeben 0 die zugewiesen werden würden a .

6voto

SkariaArun Punkte 219

Versuchen Sie dies. Es könnte Ihnen helfen

a=100
b=True

if b:
   print a

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X