函数在python中打印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}, }

函数see_inventory()在其内部的for循环中打印引号,如何使其打印列表而不带引号?顺便说一句,我是个乞丐

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