Как применить точность с плавающей точкой (спецификатор типа) в условной f-строке?

Из http://www.cplusplus.com/reference/string/string/find_last_of/ :

// string::find_last_of
#include 
#include 
using namespace std;

void SplitFilename (const string& str)
{
  size_t found;
  cout << "Splitting: " << str << endl;
  found=str.find_last_of("/\\");
  cout << " folder: " << str.substr(0,found) << endl;
  cout << " file: " << str.substr(found+1) << endl;
}

int main ()
{
  string str1 ("/usr/bin/man");
  string str2 ("c:\\windows\\winhelp.exe");

  SplitFilename (str1);
  SplitFilename (str2);

  return 0;

Это должно дать вам представление о том, как справиться с строкой пути. Затем после этого все, что вам нужно сделать, - это цикл через пути, начиная с диска и заканчивая самой глубокой папкой. Проверьте, существует ли папка, а если нет, создайте ее.

9
задан NoSplitSherlock 1 March 2019 в 17:53
поделиться

3 ответа

Вы могли бы использовать другую f-строку для вашего первого условия:

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

По общему признанию, не идеал, но он выполняет свою работу.

0
ответ дан Nikolas Stevenson-Molnar 1 March 2019 в 17:53
поделиться

Я думаю, что f-строка в ответе f-строки настолько проста, насколько это возможно, но если вы хотите немного большей читабельности, рассмотрите возможность перемещения условия за пределы f-строки:

value = f'{self.percent_profit:.2f}' if True else 'No data yet'
print(f"Percent profit : {value}")
0
ответ дан Idlehands 1 March 2019 в 17:53
поделиться

Вы также можете использовать троичную для форматера - нет необходимости складывать 2 f-строки, как Николас ответ делает:

for pg in (2.562345678, 0.9, None):   # 0.0 is also Falsy - careful ;o)
    print(f"Percent Growth: {pg if pg else 'No data yet':{'.05f' if pg else ''}}")
    # you need to put '.05f' into a string for this to work and not complain

Выход:

Percent growth: 2.56235
Percent growth: 0.90000
Percent growth: No data yet
0
ответ дан Patrick Artner 1 March 2019 в 17:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: