我有这个功能(见下文),看起来像重复了四遍。四个代码段非常相似,只是在某些数学运算符上有所不同。是否可以使此代码更短?我找不到方法,但是我希望能够调用一个在代码片段中交换“-”,“ +”和“ ”符号的函数(该函数),以便不必重复它们吗?
CODE
def diag_grannar(storlek,troll_position): #funktion som kollar efter diagonala grannar
ny_rad = troll_position[0]
ny_kol = troll_position[1]
diag_grannar = []
# while-loopen letar efter diagonala grannar snett vänster ovanifrån troll_position
while True:
ny_rad -= 1
ny_kol -= 1
if ny_rad >= 1 and ny_kol >= 1:
diag_grannar.append([ny_rad,ny_kol])
else:
ny_rad = troll_position[0]
ny_kol = troll_position[1]
break
# while-loopen letar efter diagonala grannar snett vänster nedanifrån troll_position
while True:
ny_rad += 1
ny_kol -= 1
if ny_rad <= storlek and ny_kol >= 1:
diag_grannar.append([ny_rad,ny_kol])
else:
ny_rad = troll_position[0]
ny_kol = troll_position[1]
break
# while-loopen letar efter diagonala grannar snett höger nedanifrån troll_position
while True:
ny_rad += 1
ny_kol += 1
if ny_rad <= storlek and ny_kol <= storlek:
diag_grannar.append([ny_rad,ny_kol])
else:
ny_rad = troll_position[0]
ny_kol = troll_position[1]
break
# while-loopen letar efter diagonala grannar snett höger ovanifrån troll_position
while True:
ny_rad -= 1
ny_kol += 1
if ny_rad >= 1 and ny_kol <= storlek:
diag_grannar.append([ny_rad,ny_kol])
else:
ny_rad = troll_position[0]
ny_kol = troll_position[1]
break
return diag_grannar
请清楚一点,我指的是以下代码段:
while True:
ny_rad -= 1
ny_kol += 1
if ny_rad >= 1 and ny_kol <= storlek:
diag_grannar.append([ny_rad,ny_kol])
else:
ny_rad = troll_position[0]
ny_kol = troll_position[1]
break
最诚挚的问候;