ich eine Datei mit einem ‚Raster‘ wie Design gegeben wurde, wie zum Beispiel:Python Liste Verständnis und Iterieren
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
Um einen Angriff Simulator zu machen. Und dass die erste Zeile n (Größe des Gitters), p (Prozent pro Quadrat verloren), k (Gesamtzahl, die es über die letzte Zeile zu gewinnen muss) darstellt.
Das Problem, das ich in lief habe, ist der Simulation Teil verstehe ich die Tatsache, wie die Code-Zeilen zu durchlaufen und die Mathematik zu tun, sie zu bearbeiten wie zB:
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]
, die in dem richtigen ist Sinn. Aber ich muss auch einen "zufälligen" Prozentverlust für jedes Rasterquadrat anwenden, was ich getan habe (nicht in dieser Codezeile, entfernt es, um dieses Problem vorher zu erkennen). Was ich versuche zu sagen ist, dass ich die erste Zeile dieses Codes editieren muss (mit dem Abzug der Anzahl und des prozentualen Verlustes), dann benutze diese Zeile für den Rest des Gitters, wiederhole die Mathematik noch einmal. Ich bin etwas verloren gegangen, wie ich eine Liste für jede Zeile im Raster behalten, bearbeiten und verwenden kann.
Eine korrekte Ausgabe wäre so etwas wie dieses, aber ohne den zufälligen prozentualen Verlust: (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]
Ich habe wieder zu verwenden:
[18.0, 20.0, 19.0, 17.0, 20.0]
Für den Rest die Zeilen, aber ich bin nicht sicher, wie man mit einer Aktualisierungsliste iteriert. Ich glaube, es ist einfach genug, aber mir fehlt ein kleines Detail.
Ich bin viel verwirrt. Du sprichst darüber, dass du die letzte Linie hinter dir hast, um zu gewinnen. Sollten die Ergebnisse einer Zeile (Zeile) Auswirkungen auf die nächste Zeile (Zeile) haben? –
Auch sollten Sie Ihre Pokemon mit Floats zuweisen? Oder sollten Sie Integer-Zuweisungen vornehmen, wobei ein möglicher Rest über die Zeile verteilt ist? –
@AustinHastings Die zweite Zeile des 'Gitters', [2,0,1,3,0], für jede Zahl muss von den Zahlen des angreifenden Pokémon abgezogen werden. Also ja die Ergebnisse einer Zeile müssen sich auf die nächste auswirken. Was das Pokemon angeht, das als Float gespeichert wurde, hat mein Professor gesagt, dass diese "Pokémon" Mutanten sind, also einige nicht ein "volles" Pokémon sein dürfen und Floats benutzen. Es ist sehr merkwürdig. – Cabbage363