【问题标题】:Printing a protocol(list with dicts)打印协议(带有字典的列表)
【发布时间】:2014-11-24 19:48:07
【问题描述】:

我有一个列表,称为协议,其中填充了 Yatzy 中的播放器对象。每个对象都是一个包含时刻(如满屋)和值(例如 20)的字典。

我想打印协议,但现在不知道如何制定代码。

我希望它看起来像这样:

球员名字一行
在“一”时刻,每个玩家的分数都为一条线

等等。

到目前为止我已经尝试过了(protokoll=protocol, momentlist= 包含所有时刻的列表(ones、twos 等):

def Utskrift(protokoll, momentlist):

    for key in momentlist:
        print ("%-20s" % key)
        for deltagare in protokoll:
            print (deltagare.protokoll[key], "\t",)

不起作用,错误消息说明了我用来制作每个玩家的 Spelare 类。

错误信息:

Traceback (most recent call last):
  File "/Users/Mans/Desktop/P-Uppgift/Yatzy_huvudprogram.py", line 160, in <module>
    meny()
  File "/Users/Mans/Desktop/P-Uppgift/Yatzy_huvudprogram.py", line 139, in meny
    Utskrift(protokoll, momentlist)
  File "/Users/Mans/Desktop/P-Uppgift/Yatzy_huvudprogram.py", line 93, in Utskrift
    print (deltagare.protokoll[key], "\t",)
AttributeError: 'Spelare' object has no attribute 'protokoll'

问题是当我使用时

对于protokoll中的玩家

打印(播放器) 它可以正常工作(尽管它没有按我的意愿打印)。

Uskrift 的函数看起来对吗?

感谢您的帮助

【问题讨论】:

  • “错误信息说明了 Spelare 类”。那么,这可能意味着您的 Spelare 课程有问题。我们无法提供更多建议,因为我们不知道类或错误是什么样的。
  • 感谢您的帮助。我已经更新了信息。事情是,当我使用更简单的打印功能时,它可以正常工作。你觉得我的函数 Utskrift 怎么样?
  • 如果您的 Spelare 类没有 self.protokoll 属性,您可能会收到该错误。您的 Spelare 类有哪些属性
  • 好的。我已经用我的班级 Spelare 更新了信息。

标签: python list dictionary printing


【解决方案1】:
        print (deltagare.protokoll[key], "\t",)

Spelare 没有protokoll 属性。如果您尝试访问 Spelare 的 OrderedDict 对象,则应使用其名称moment

        print (deltagare.moment[key], "\t",)

【讨论】:

  • 亲爱的凯文,非常感谢!最后一件事,我做了你建议的改变,它在不同的行上打印键和值。如果我想在同一行打印键及其值,您知道该怎么做吗? ?
  • 尝试删除第一个print,将第二个修改为print ("%-20s" % key, deltagare.protokoll[key], "\t",)
  • 是的!非常感谢您的宝贵时间,真的帮了我很多!谢谢,祝您有愉快的一天!
猜你喜欢
  • 2015-10-03
  • 1970-01-01
  • 1970-01-01
  • 2014-06-29
  • 1970-01-01
  • 1970-01-01
  • 2012-01-24
  • 2013-04-18
  • 2019-09-19
相关资源
最近更新 更多