Как вставить строку в строку как переменную? - PullRequest
0 голосов
/ 03 сентября 2018

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

EnemyHealth = 0  

EnemyIs = 'dead'

print("The Enemy's health is %d. The Enemy is %d." % (EnemyHealth,EnemyIs)

Но каждый раз, когда я пытаюсь это сделать, я не могу использовать строку в качестве одной из переменных. Как бы я вставить переменную строку в другую строку?

P.S. Я использую Python 3.7.0

Ответы [ 7 ]

0 голосов
/ 03 сентября 2018

Избегайте% спецификаторов формата в Python3.x

Из документов:

старый стиль форматирования со временем будет удален из языка, обычно следует использовать str.format ().

Есть несколько простых способов сделать это, проверьте код ниже:

print("The Enemy's health is {} The Enemy is {}".format(EnemyHealth, EnemyIs)

print("The Enemy's health is {0} The Enemy is {1}".format(EnemyHealth, EnemyIs)

print("The Enemy's health is {EnemyHealth} The Enemy is {EnemyIs}".format(EnemyHealth=EnemyHealth, EnemyIs=EnemyIs)
0 голосов
/ 03 сентября 2018

Существует 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 создается непосредственно в фигурных скобках {}.

0 голосов
/ 03 сентября 2018

Вы также можете использовать print("The Enemy's health is %d. The Enemy is %s." % (EnemyHelath, EnemyIs)), хотя рекомендуется print("The Enemy's health is {}. The Enemy is {}.".format(EnemyHealth,EnemyIs)).

0 голосов
/ 03 сентября 2018

Спецификатор формата для строкового объекта: %s. Итак, ваш код должен быть:

EnemyHealth = 0   
EnemyIs = 'dead'
print("The Enemy's health is %d. The Enemy is %s." % (EnemyHealth,EnemyIs))
0 голосов
/ 03 сентября 2018

Это потому, что %d в вашей первой строке ожидает целочисленную переменную на своем месте. %s для строк.

То есть:

print("The Enemy's health is %d. The Enemy is %s." % (EnemyHealth,EnemyIs)

(Также имейте в виду, что %f для поплавков, и вы можете использовать некоторые трюки, такие как %2.4f напишет число 1.234567 как 01.2346)

0 голосов
/ 03 сентября 2018

Проблема с вашим кодом в том, что вы используете %d для второго аргумента. %d предназначен для целых чисел, а %s предназначен для строк. Вы можете заставить его работать, изменив на %s вот так:

EnemyHealth = 0
EnemyIs = 'dead'
print("The Enemy's health is %d. The Enemy is %s." % (EnemyHealth, EnemyIs))

выход

The Enemy's health is 0. The Enemy is dead.

Альтернативой является использование функции форматирования следующим образом:

print("The Enemy's health is {}. The Enemy is {}.".format(EnemyHealth, EnemyIs))

Подробнее о форматировании строки можно найти здесь .

0 голосов
/ 03 сентября 2018

Используйте печать с форматом, это делает ваш код хорошо выглядеть

print("The Enemy's health is {} The Enemy is {}".format(str(EnemyHealth),EnemyIs)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...