我得到了一个“网格”文件状设计,如:Python列表理解,和迭代
5,20,13
2,0,1,3,0
1,2,1,2,1
2,1,2,1,0
0,2,0,2,2
0,3,3,3,1
为了使攻击模拟器。 第一行代表n(网格大小),p(每平方的损失百分比),k(必须通过最后一条线获得的总数)。
我已经跑进问题是仿真的一部分,我明白如何遍历的代码行的事实和做数学题对它们进行编辑,如:
numAP = numAttackPokemon
gridRules = gymData[0]
gymGrid = gymData[1]
n = gridRules[0]
p = gridRules[1]
k = gridRules[2]
numPRC = float(numAP/n)
numPRCR = [numPRC] * n
for numRow in range(0, n):
gymGridNum = gymGrid[numRow]
aList = []
for num in gymGridNum:
numDefSub = numPRCR[num] - gymGridNum[num]
if numDefSub <= 0:
print("You have failed, restart the program and try again!")
break
else:
aList.append(numDefSub)
returns:
[18.0, 20.0, 19.0, 17.0, 20.0]
[19.0, 18.0, 19.0, 18.0, 19.0]
[18.0, 19.0, 18.0, 19.0, 20.0]
[20.0, 18.0, 20.0, 18.0, 18.0]
[20.0, 17.0, 17.0, 17.0, 19.0]
其中在正确感。但我也必须为每个网格方块应用一个“随机”百分比,这是我所做的(不是在该代码行中,预先将其移除以解决此问题)。我想说的是,我必须编辑此代码的第一行(扣除数字和百分比损失),然后使用该行重新计算网格的其余部分。我已经在如何保留,编辑和使用网格中每一行的列表方面有所失落。
正确的输出会是这样,但没有随机百分比损失:(numPRC = 100)
[18.0, 20.0, 19.0, 17.0, 20.0]
[17.0, 18.0, 18.0, 15.0, 19.0]
[15.0, 17.0, 16.0, 14.0, 19.0]
[15.0, 15.0, 16.0, 12.0, 17.0]
[15.0, 12.0, 13.0, 9.0, 16.0]
我不得不重新使用:
[18.0, 20.0, 19.0, 17.0, 20.0]
对于其余行,但我不知道如何迭代更新列表。我相信这很简单,但我错过了一个小细节。
我很困惑。你谈论的是通过最后一条线来赢得胜利。一行(行)的结果是否应该影响下一行(行)? –
另外,你应该使用浮动分配你的宠物小精灵?或者你应该做整数分配,并在整个行中分配可能的余数? –
@AustinHastings对于每个数字,'网格'的第二行[2,0,1,3,0]必须从攻击口袋妖怪的编号中减去。所以是,一行的结果必然会影响下一行。至于口袋妖怪存储为浮动,我的教授说这些'口袋妖怪'是突变体,所以有些可能不是一个'完整'的口袋妖怪,并使用浮动。它非常奇怪。 – Cabbage363