函数在python中打印for循环函数中的引号和花括号
函数see_inventory()在其内部的for循环中打印引号,如何使其打印列表而不带引号?顺便说一句,我是个乞丐函数在python中打印for循环函数中的引号和花括号,python,printing,Python,Printing,函数see_inventory()在其内部的for循环中打印引号,如何使其打印列表而不带引号?顺便说一句,我是个乞丐 class Person: equipped_armor = { "head": {"name": "cap", "defense": 1}, "chest": {"name": "mail", "defense": 2}, "legs": {"name": "wooden leggings", "defense": 1}, }
class Person:
equipped_armor = {
"head": {"name": "cap", "defense": 1},
"chest": {"name": "mail", "defense": 2},
"legs": {"name": "wooden leggings", "defense": 1},
}
gold = 10
stored_armor = {"Stored Armor: ": ["rash leggings"]}
weapons = {"Weapons: ": ["wooden_sword", "mythrill_staff"]}
potions = {"Potions: ": ["HP potion"]}
ui_gold = {"Gold: ": gold}
inv = [
stored_armor,
weapons,
potions,
ui_gold
]
def __init__(self):
self.name = "Cavalex"
def see_inventory(self):
for element in self.inv:
print(element)
通过运行以下命令:
player = Person()
player.see_inventory()
我明白了:
{'Stored Armor: ': ['rash leggings']}
{'Weapons: ': ['wooden sword', 'mythril staff']}
{'Potions: ': ['HP potion']}
{'Gold: ': 10}
这里有一个真正简单的方法
str(player.see_inventory())。替换(“,”)
或者在函数中,类似于:
打印(str(元素)。替换(“,”)
首先,让我们简化您的示例;班级结构对这个问题无关紧要
gold = 10
stored_armor = {"Stored Armor: ": ["rash leggings"]}
weapons = {"Weapons: ": ["wooden_sword", "mythrill_staff"]}
potions = {"Potions: ": ["HP potion"]}
ui_gold = {"Gold: ": gold}
inv = [
stored_armor,
weapons,
potions,
ui_gold
]
现在,您正在尝试打印项目列表,而不使用您选择的数据存储自然附带的标点符号。要做到这一点,您必须进入该存储并按照您希望的方式重新格式化项目
在本例中,这并不是一个简单的问题,因为您为玩家的背包选择了一个非同质结构:一个字典列表,其值具有不同的类型。我通过在列表中循环(在更正错误输入的变量名之后)并在构建输出之前检查值的类型来解决这个问题
for element in inv:
for key, val in element.items():
if type(val) == list:
inventory = ' '.join([item for item in val])
else:
inventory = str(val)
print(key, inventory)
输出:
Stored Armor: rash leggings
Weapons: wooden_sword mythrill_staff
Potions: HP potion
Gold: 10
在这里,只需对
查看\u inventory
进行此小更改,即可完成任务
def see_inventory(self):
for element in self.inv:
for k, v in element.items():
if type(v) == list:
print(k, ' '.join(v))
else:
print(k, v)
输出
您希望输出的具体内容是什么?存储的护甲:“皮疹绑腿”武器:“木剑”、“mythrill staff”药水:“HP药水”黄金:10请指定您想要的输出,并显示您尝试生成它的编码。有很多关于输出格式的教程;您需要访问要打印的单个元素。另外,使代码可执行。
see\u inventory
函数不返回值。在str
-repr上使用replace
,有点聪明,但是也会删除值中的任何引号。Thx!我有没有办法把“木剑”放进库存,但给它赋值,让它像“木剑”一样显示在控制台上?我怎样才能在项目之间也加上逗号?@Cavalex:你现在已经进入了一种不受堆栈溢出影响的手握状态,通过学习教程中的字符串处理和输出格式,你会得到更好的服务。是的,你可以做这些事情。。。但正如发帖指南所指出的那样,这对你们双方都有好处,所以如果你在发帖前自己搜索一下就可以了。
(xenial)vash@localhost:~/python$ python3.7 armor.py
Stored Armor: rash leggings
Weapons: wooden_sword mythrill_staff
Potions: HP potion
Gold: 10