def completar_tablero (cursor, tablero, barco, sentido):
tupla, radio=cursor
x, y=tupla
print tupla
for i in range(0, 10):
if x>203+33*i and x<233+33*i:
print i
for p in range(0, 10):
if y>53+33*p and y<53+33*p+30:
print p
casillas=(i, p)
print casillas
else:
casillas=(-1, -1)
else:
casillas=(-1, -1)
print casillas
return casillas
此函数接收坐标作为输入,并且应该返回一个列和一行,其区域由for循环定义。
问题是这个函数总是返回(-1,-1)元组。我使用了一些打印来试图查明问题,我注意到在第二个for
之后,'casillas'变量被正确定义,但后来被第一个中的变量替换。
有人能告诉我为什么会这样吗?
答案 0 :(得分:1)
正如@duffymo指出的那样,你的假设在某些方面是错误的,因为这个值(在许多其他方面)给出了预期的(?)结果,即。不返回(-1,-1):
x y : returns
529 366 : (9, 9)
529 367 : (9, 9)
529 368 : (9, 9)
529 369 : (9, 9)
529 370 : (9, 9)
529 371 : (9, 9)
529 372 : (9, 9)
您可以使用此代码对其进行测试(我已简化您的功能,删除未使用的变量):
def completar_tablero (x,y):
for i in range(0, 10):
if x>203+33*i and x<233+33*i:
for p in range(0, 10):
if y>53+33*p and y<53+33*p+30:
casillas=(i, p)
else:
casillas=(-1, -1)
else:
casillas=(-1, -1)
return casillas
for x in range(0,1000):
for y in range(0,1000):
z = completar_tablero (x,y)
if z[0]!=-1 and z[1]!=-1:
print x,y,":",z