Search code examples
pythonpython-3.xf-string

How to apply float precision (type specifier) in a conditional f-string?


I have the following f-string I want to print out on the condition the variable is available:

f"Percent growth: {self.percent_growth if True else 'No data yet'}"

Which results in:

Percent growth : 0.19824077757643577

So normally I'd use a type specifier for float precision like this:

f'{self.percent_growth:.2f}'

Which would result in:

0.198

But that messes with the if-statement in this case. Either it fails because:

f"Percent profit : {self.percent_profit:.2f if True else 'None yet'}"

The if statement becomes unreachable. Or in the second way:

f"Percent profit : {self.percent_profit if True else 'None yet':.2f}"

The f-string fails whenever the condition leads to the else clause.

So my question is, how can I apply the float precision within the f-string when the f-string can result in two types?


Solution

  • You could use another f-string for your first condition:

    f"Percent profit : {f'{self.percent_profit:.2f}' if True else 'None yet'}"
    

    Admittedly not ideal, but it does the job.