code = "+"
message = "{} " + code + "{} = {}".format('1', '2', '3')

print(message)

Я предположил, что это должно напечатать 1+2=3, но на самом деле это распечатать:

{} +1 = 2

Это почему? Это должно быть так же, как:

message = "{} + {} = {}".format('1', '2', '3'), в этом случае он работает как положено.

-2
ling 27 Июн 2019 в 18:04

6 ответов

Лучший ответ

Функция форматирования здесь вызывается в строке "{} = {}", а не во всей строке сообщения, и поэтому "{}" перед + печатается как есть. Чтобы исправить это, просто измените строку сообщения на

message = ("{} " + code + "{} = {}").format('1', '2', '3')
2
GAGAN DEEP SINGH 27 Июн 2019 в 15:09

Причина в том, что формат применяется только к последним символам между двойными кавычками ("{} = {}"). Таким образом, число три просто отбрасывается, а переменная кода заменяется ее значением.

0
mik1904 27 Июн 2019 в 15:07

.format('1', '2', '3') применяется к последней строке в конкатенации ("{} = {}"), а не ко всему. Поставьте круглые скобки вокруг конкатенации и добавьте .format() к этому, и это должно дать ожидаемые результаты.

1
c0lon 27 Июн 2019 в 15:08

Поскольку метод format применяется только к последней строке в двойных кавычках, например, { { Х1 } } .

Если вы хотите получить результат всей строки, вы должны вызвать метод format только для одной строки:

message = "{0} {1} {2} = {3}".format('1', code, '2', '3')
print(message)
# '1 + 2 = 3'

Посмотрите на эту страницу, она действительно полезна для форматирования строк.

2
Alexandre B. 27 Июн 2019 в 15:41
code = "+"
message = ("{} " + code + "{} = {}").format('1', '2', '3')
print(message)

Над кодом должен работать. Это потому, что сначала "{}" рассматривается как отдельная строка, "{} = {}". format ('1', '2', '3') оценивается только для формата. Отсюда и неправильный вывод

0
Subhrajyoti Das 27 Июн 2019 в 15:54

То, что вышеупомянутые люди сказали, правильно. Вы могли бы сделать что-то вроде этого

def createMessage(a,b ,c):
    code = '+'
    mes1 = "{}".format(a)
    mes2 = "{} = {}".format(b,c)
    message = mes1 + code + mes2
    print(message)


createMessage(1,2,3)
1
newwebdev22 27 Июн 2019 в 15:12