Существует 4 подхода, которые мне известны для достижения этого на Python (Python 3):
1) Конкатенация:
Вы можете сделать это, используя +
для объединения двух строк, однако вы можете объединять только данные типа строки, то есть данные не строкового типа необходимо преобразовать в строку с помощью функции str()
. Например:
print("The Enemy's health is " + str(EnemyHealth) + ". The Enemy is " + EnemyIs + ".")
# output = "The Enemy's health is 0. The Enemy is dead."
2) Использование функции print()
Python 3, которая может принимать несколько аргументов параметров:
Здесь ваш оператор print()
похож на оператор конкатенации выше, за исключением случаев, когда я использую +
для конкатенации, вам нужно заменить его на ,
. Преимущество использования этого заключается в том, что различные типы данных будут автоматически преобразованы в строку, т. Е. Больше не требуется функция str()
. Например:
print("The Enemy's health is ", EnemyHealth, ". The Enemy is ", EnemyIs, ".")
# output = "The Enemy's health is 0. The Enemy is dead."
3) Использование подхода замены строк
Причина, по которой ваш код не работает, в том, что %d
означает, что вы замените его на целое число и, следовательно, чтобы ваш код работал, для строки, хранящейся в переменной EnemyIs
, необходимо заменить на %s
, что используется для указания того, что он будет заменен строкой. Поэтому для решения вашей проблемы вам необходимо:
print("The Enemy's health is %d. The Enemy is %s." % (EnemyHealth, EnemyIs))
# output = "The Enemy's health is 0. The Enemy is dead."
4) Метод format()
для строк Python (это лучший подход для использования)
Это встроенный метод для всех строк в Python, который позволяет вам легко заменять заполнитель {}
в строках Python на любые переменные. В отличие от решения № 3, описанного выше, этот метод format()
не требует, чтобы вы выражали или преобразовывали разные типы данных в строку, поскольку он автоматически сделает это за вас. Например, чтобы заставить работать оператор печати, вы можете сделать:
print("The Enemy's health is {}. The Enemy is {}.".format(EnemyHealth, EnemyIs))
OR
print("The Enemy's health is {0}. The Enemy is {1}.".format(EnemyHealth, EnemyIs))
# output = "The Enemy's health is 0. The Enemy is dead."
UPDATE:
5) F-Strings
Начиная с python 3.6+, теперь вы также можете использовать f-строки для замены переменных внутри строки. Этот метод аналогичен методу .format()
, описанному выше, и, по моему мнению, лучше обновить метод str.format()
. Для использования этого метода все, что вам нужно сделать, это указать f
перед открывающей кавычкой при определении строки, а затем, внутри строки, использовать формат {[variable name goes here]}
, чтобы это работало. Например, чтобы заставить работать оператор печати, используя этот метод, вы можете сделать:
print(f"The Enemy's health is {EnemyHealth}. The Enemy is {EnemyIs}.")
# output = "The Enemy's health is 0. The Enemy is dead."
Как вы можете видеть, используя этот метод, variable name
создается непосредственно в фигурных скобках {}
.