2017-02-28 5 views
0

Ich möchte Operanden jedes Mal durch eine Schleife wechseln können. Also beim ersten Mal würde ich gerne Spalte hinzufügen. Das zweite Mal durch die Schleife möchte ich von der Spalte abziehen. Beim dritten Mal möchte ich von der Spalte subtrahieren und von der Zeile subtrahieren. Beim vierten Mal möchte ich von der Spalte abziehen und zur Zeile hinzufügen. Ist es möglich, eine Schleife zu schreiben, um dies anstelle von mehreren zu erreichen? Danke für die Hilfe!Switch-Operanden in Schleifen Python 3

#add    
for x in range(1,8): 
    if game[column+x][row] == 'W': 
     game[column+x][row] = 'B' 
    elif game[column+x][row] == 'B': 
     return  
#subtract  
for x in range(1,8): 
    if game[column-x][row] == 'W': 
     game[column-x][row] = 'B' 
    elif game[column-x][row] == 'B': 
     return 
#etc.... 
for x in range(1,8): 
    if game[column-x][row-x] == 'W': 
     game[column-x][row-x] = 'B' 
    elif game[column-x][row-x] == 'B': 
     return 

for x in range(1,8): 
    if game[column-x][row+x] == 'W': 
     game[column-x][row+x] = 'B' 
    elif game[column-x][row+x] == 'B': 
     return 
+0

Welche Operanden ändert sich? Es scheint Inkonsistenzen in Ihrem Code zu geben. Insbesondere verwenden Sie 'Spiel [Spalte + X]' das erste Mal, aber 'Spiel [Spalte-X]' die anderen drei Male. – Peter

+0

Sie zeigen hier drei scheinbare Operandänderungen; Bitte klären Sie das Problem, das Sie lösen möchten. – Prune

+0

hat gerade die Frage aktualisiert. Hoffentlich ist es jetzt klarer –

Antwort

0

ich eine Liste der Operanden erstellt und iteriert durch die list.That arbeitete

1

Mit Ihrem Code nehme ich an, dass Sie jede 'W' umgebende Zelle mit 'B' markieren wollen. Dies sollte genug sein:

neighbours = [ 
    (-1, -1), 
    (-1, 0), 
    (-1, 1), 
    (0, -1), 
    (0, 0), 
    (0, 1), 
    (1, -1), 
    (1, 0), 
    (1, 1) 
    ] 

game = [ 
    ['W', 'W', 'E'], 
    ['' , '', ''], 
    ['' , '', ''] 
] 

print game 

row, col = 1, 1 # center of the game's table 

for x, y in neighbours: 
    if game[row + x][col + y] == 'W': 
     game[row + x][col + y] = 'B' 

print game 
+2

'für x, y in den Nachbarn:' –

+0

@MadPhysicist tatsächlich! Aktualisiert. –

+0

OP scheint ein 17x17 Gitter in der Frage zu haben, nicht ein 3x3 ... –