Правильная печать символа в зависимости от переменной с использованием Python - PullRequest
0 голосов
/ 27 июня 2018

Я хотел бы знать, был ли хороший питонический способ сделать что-то вроде этого:

size1 = 4 
size2 = 3
value = size1 - size2

def isSign(value):
    if value > 0 :
        return "+"
    else :
        return ""

print("My total gain is" + isSign(value) + str(value))

В этом случае моя строка должна выглядеть так:

My total gain is +1

В случае, когда значение равно -1, моя строка должна выглядеть следующим образом:

My total gain is -1

В случае, если значение равно 0, моя строка должна выглядеть следующим образом:

My total gain is 0

Я также хотел бы по возможности избегать внешних модулей.

Ответы [ 3 ]

0 голосов
/ 27 июня 2018

f-строки - хороший способ сделать это:

print(f'My total gain is {"+" if value > 0 else ""}{value}') 
0 голосов
/ 27 июня 2018

Форматирование строки обеспечивает флаг + для этого:

>>> "{:+}".format(3)
'+3'
>>> "{:+}".format(-3)
'-3'
0 голосов
/ 27 июня 2018

Вы можете заменить isSign(value) на (value > 0) * "+".

Это работает, потому что True == 1 и False == 0, а число n раз, когда строка повторяет эту строку n раз, поэтому 0 * "+" является пустой строкой "".

Однако некоторые могут найти его нечитабельным, о чем свидетельствует тот факт, что я должен объяснить, как он работает.

Использование f-строки:

f"My total gain is {(value > 0) * '+'}{value}"
...