我意识到我最近在这个论坛上发了很多垃圾邮件,我只是想解决我的问题,因为我应该为任务创建一个yahtzee游戏。我的代码当前如下所示:
class Player:
def __init__(self,name):
self.name=name
self.lista={"ones":0,"twos":0,"threes":0, "fours":0,"fives":0,"sixs":0,"abovesum":0,"bonus":0,"onepair":0,"twopair":0,"threepair":0,"fourpair":0,"smalladder":0,"bigladder":0,"house":0,"chance":0,"yatzy":0,"totalsum":0}
self.spelarlista=[]
def __str__(self):
return self.name
def welcome(self):
print("Welcome to the yahtzee game!")
players = int(input("How many players: "))
rounds=0
while not players==rounds:
player=input("What is your name?: ")
rounds=rounds+1
self.spelarlista.append(Player(player))
print(self.spelarlista)
def main():
play=Player("Joakim")
play.welcome()
for key in ["names","ones","twos","threes","fours","fives","sixs","abovesum","bonus","onepair","twopair","threepair","fourpair","smalladder","bigladder","house","chance","yatzy","totalsum"]:
print("%-20s"%key)
main()
我的目标是它看起来像这样:https://gyazo.com/26f997ed05c92898d93adaf0af57d024
如果你看我的方法“欢迎”,我想打印我的自述,只是想看看它会是什么样子,但我得到的只是“播放器对象在0x7fac824….”,我意识到我的str有问题,我应该如何更改它?你知道吗
如果您得到的是
Player object at 0x7fac824
或任何类似的东西,那么您似乎是在(间接地)调用对象上的repr
,而该对象又调用了对象的__repr__
方法。你知道吗由于没有定义
__str__
方法,因此__str__
也将默认为调用__repr__
。你知道吗__repr__
返回对象的字符串表示形式(通常可以转换回对象,但这只是一个约定),这正是您所需要的。你知道吗打印对象列表时,python不会调用objects
__str__
方法,而是调用容器列表。如果你想把它们全部打印出来,可以调用__str__
方法,方法是使用map()
或列表理解对它们应用内置函数str()
,然后用str.join()
方法将它们连接起来。你知道吗或者作为另一种替代方法,您可以为对象定义^{} 属性,该属性返回对象的正式字符串表示形式:
相关问题 更多 >
编程相关推荐