#python #string-formatting
#python #форматирование строки
Вопрос:
Я создаю текстовую игру, похожую на сделку типа Minecraft RPG, просто для удовольствия. И у меня есть полностью рабочий инвентарь, за исключением одной вещи. Например, когда вы проверяете свой инвентарь, я хочу, чтобы он говорил: «Дерево x2» 2 — это количество, если у вас есть 2 или сколько у вас есть. Итак, я установил self.wood(элемент wood) в self .wood = «Wood x% s» % self.количество древесины (количество древесины, которое у вас есть). Вы можете увидеть код здесь:
def cinventory(self):
print(self.woodcount)
self.wood = ("Wood x%s" % self.woodcount)
print("---------------------------------")
print(" Inventory ")
for x in self.inventory:
print(x)
print("---------------------------------")
Проблема в том, что он печатает Wood x0, даже если у вас их больше. Он всегда выводит ноль. Я даже заставил его распечатать количество древесины до того, как он распечатает ваш инвентарь, и он отлично отображает фактическое число, но когда оно находится в строке кода, которую я создал, оно не работает. В чем проблема?
Ответ №1:
%s
является строкой формата для строк. Попробуйте использовать %d
(цифру) для чисел.
В качестве альтернативы вы можете использовать:
self.wood = "Wood x%s" % str(self.woodcount)
сначала преобразуйте целое число в строку. Обратите внимание, что я удалил лишние круглые скобки, поскольку они не нужны.
Комментарии:
1. @user3238885 что такое
type
ofself.woodcount
?2. На самом деле, оба
%s
и%d
работают для меня в Python 2.7 и 3.4, поэтому должно быть что-то еще…