我的循环“应该”遍历从[0]到最后一个项目(最多为[7])的列表,然后购买并计算它从列表中购买该项目的次数,然后将结果乘以一个值。你知道吗
它目前正在做的是购买少量的物品,输出每件物品的购买次数,就这样。它甚至没有“花掉”所有的“津贴”
它通常输出
CP Total: 2000
Type Item: Item
# of Properties: 5
{'MDEF': 4}
{'SPR': 3}
{'AGI': 2}
{'CRIT': 3}
{}
如果你看到代码,把成本加在一起,最多只能加100-200美元,而不是2000美元
for aProp in S:
cost = CostDic[aProp]
if (cost * 5) < CP:
purchase_ls = []
while CP >= cost:
b = randint(1, 5)
cost = cost * b
if CP < cost:
continue
purchase_ls.append(aProp)
CP = CP - cost
else:
purchase_ls = []
while CP >= cost:
cost = cost
if CP < cost:
continue
purchase_ls.append(aProp)
CP = CP - cost
print(dict(Counter(purchase_ls)))
是不是特别让我伤心的部分
对于所讨论的循环,我现在将其修改为
循环部分做得很好,但它没有像我希望的那样做正确的两件事
你的问题是:
在这个循环中,您现在修改了
cost
的值,我猜您不是有意这么做的。具体来说,在cost = cost * b
行中,我相信您的意图是,右侧的cost
表示单个单位的成本,左侧的cost
表示“n”单位的成本,其中“n”是1到5之间的随机数。你知道吗但这段代码实际上所做的与这个意图是不同的。第二次进入
while
循环时,变量cost
仍处于其新的更高值,然后将再次被随机数1-5相乘。所以在这个速度下cost
会迅速变大,使CP >= cost
无法保持真实。你知道吗我想让你大吃一惊的是,你用同一个变量
cost
来表示不同时间的不同事物。我强烈建议您将其更改为两个不同的变量,并使用更有意义的名称,例如unitCost
和groupCost
,以防止以后代码中出现这种类型的混淆。你知道吗相关问题 更多 >
编程相关推荐