Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to write inline if statement for print?

I need to print some stuff only when a boolean variable is set to True. So, after looking at this, I tried with a simple example:

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

Same thing if I write print a if b==True.

What am I missing here?

like image 506
Ricky Robinson Avatar asked Aug 09 '12 09:08

Ricky Robinson


People also ask

Can you put an if statement inside a print statement Python?

Since it is an expression, one can't use any statement inside it.

How do you write an inline statement in Python?

Syntax of Inline if-else in Python To write an Inline if-else statement we have to follow this syntax. In this syntax, <expression1> will be returned or executed if the condition is true, or else <expression2> will be returned or executed, and these conditions are always executed from left to right.

What is an inline if statement?

It is commonly referred to as the conditional operator, inline if (iif), or ternary if. An expression a ? b : c evaluates to b if the value of a is true, and otherwise to c . One can read it aloud as "if a then b otherwise c".


2 Answers

Python does not have a trailing if statement.

There are two kinds of if in Python:

  1. if statement:

    if condition: statement if condition:     block 
  2. if expression (introduced in Python 2.5)

    expression_if_true if condition else expression_if_false 

And note, that both print a and b = a are statements. Only the a part is an expression. So if you write

print a if b else 0 

it means

print (a if b else 0) 

and similarly when you write

x = a if b else 0 

it means

x = (a if b else 0) 

Now what would it print/assign if there was no else clause? The print/assignment is still there.

And note, that if you don't want it to be there, you can always write the regular if statement on a single line, though it's less readable and there is really no reason to avoid the two-line variant.

like image 64
Jan Hudec Avatar answered Sep 20 '22 16:09

Jan Hudec


Inline if-else EXPRESSION must always contain else clause, e.g:

a = 1 if b else 0 

If you want to leave your 'a' variable value unchanged - assing old 'a' value (else is still required by syntax demands):

a = 1 if b else a 

This piece of code leaves a unchanged when b turns to be False.

like image 21
Rostyslav Dzinko Avatar answered Sep 21 '22 16:09

Rostyslav Dzinko