python - 如何验证我的 beginSim() 是否正确生成了我的排行榜列表?
问题描述
我是 Python 新手,如果这个问题是基本的,我深表歉意。我正在尝试编写游戏排行榜的模拟。我正在使用许多其他模拟示例来尝试将适合我用例的东西拼接在一起。目前,我正在尝试确认当我启动我的 sim 卡时,代码正确地生成了一个由 100 名玩家组成的相对随机的排行榜,其中包含已定义的名称和“支付”的随机值。我正在尝试打印排行榜,期望看到我的每个 playerList 值,加上随机生成的 0 到 23 之间的整数。但是,我只得到字节的结果:“< main .Player object at 0x000001DCC67F4640>”。
import random
num_in_chat = 24
num_not_in_chat = 76
num_battles = 1 #testing on 1 before adding more
playerList = []
for i in range(num_in_chat):
playerList.append("F"+ str(i+1))
for i in range(num_not_in_chat):
playerList.append("NF"+ str(i+num_in_chat+1))
Leaderboard = []
class Player:
def __init__(self, payout_hour):
self.rank = range(1,num_in_chat+num_not_in_chat+1)
self.payout = payout_hour
def beginSim():
for i in playerList:
Leaderboard.append(Player(random.randint(0,24))) #I believe this line should randomly generate a payout hour between 0 and 23 for every player
beginSim()
print(Leaderboard)
这里的重点是最终我将要编写规则来模拟每个玩家如何在一天中开始与其他玩家交换位置(按一天中的每一分钟迭代)。如果我开始的排行榜不正确,其余的都无关紧要。
谢谢你尽你所能的帮助!
解决方案
您正在打印类型对象Leaderboard
列表。Player
当您提供print
一个对象时,它会尝试将其转换为字符串格式。当您提供print
对象列表时,它将打印这些对象的字符串表示形式的列表。
您的问题的简化是,如果您有这样的列表:Leaderboard = [Player(1), Player(2)]
python 将尝试打印:print([repr(Player(1)), repr(Player(2))])
由于 python 不知道如何将Player
对象转换为字符串,它只是打印对象的表示。
您可以__str__
向您的类添加一个方法,Player
以便可以按照您想要的方式将其转换为 String,然后还可以添加一个__repr__
方法,以便它知道如何以字符串格式表示您的对象。
例如:
class Player:
def __init__(self, payout_hour):
self.rank = range(1,num_in_chat+num_not_in_chat+1)
self.payout = payout_hour
def __str__(self):
return "Player({}, {})".format(self.rank, self.payout)
def __repr__(self):
return self.__str__()
推荐阅读
- scala - Scalacheck 中的 StackOverflowError 没有任何递归(或自定义生成器)
- php - Woocommerce 价格 * 数量乘法小数问题
- javascript - JavaScript中空值赋值的目的是什么(不是null,未定义等)
- python - 如何对齐此列表中的每个单词?
- powerbi - 如何计算 Power BI 中 2 个度量值相等的位置
- javascript - 如何在反应原生功能组件中更改标题标题?
- r - 使用 scale_size_area 为 geom_point 设置绝对点大小
- javascript - 如何使它在js计算器中的等于后单击数字时显示先前的答案?
- c++ - 查找 for 循环输出的所有 3 组合
- java - 在我的画布上添加新贴纸时出现问题 - Android