有人可以解释为什么我得到这个错误吗?我的代码:无法理解TypeError
def x(n):
if n == 1: n = 4
elif n == 2: n = 3
elif n == 3: n = 2
elif n == 4: n = 1
return n
def y(n):
if n == 1: n = 2
elif n == 2: n = 1
elif n == 3: n = 4
elif n == 4: n = 3
return n
def query_x(i, j, quadrants):
quadrants[i-1:j] = map(x, quadrants[i-1:j])
def query_y(i, j, quadrants):
quadrants[i-1:j] = map(y, quadrants[i-1:j])
def query_c(i, j, quadrants):
count = [quadrants[i-1:j].count(n) for n in range(1,5)]
print "%d %d %d %d" % (count[0], count[1], count[2], count[3])
def process_queries(queries, quadrants):
for query in queries:
if query[0] == "X": query_x(query[1], query[2], quadrants)
elif query[0] == "Y": query_y(query[1], query[2], quadrants)
elif query[0] == "C": query_c(query[1], query[2], quadrants)
if __name__ == "__main__":
N = int(raw_input())
quadrants = []
for i in xrange(N):
pair = map(int, raw_input().split())
x, y = pair
if x > 0 and y > 0: quadrants.append(1)
elif x < 0 and y > 0: quadrants.append(2)
elif x < 0 and y < 0: quadrants.append(3)
elif x > 0 and y < 0: quadrants.append(4)
Q = int(raw_input())
queries = []
for i in xrange(Q):
query = raw_input().split()
queries.append([query[0], int(query[1]), int(query[2])])
process_queries(queries, quadrants)
输出:
4
1 1
-1 1
-1 -1
1 -1
5
C 1 4
X 2 4
C 3 4
Y 1 2
C 1 3
1 1 1 1
Traceback (most recent call last):
File "QuadrantQueries_dev.py", line 53, in <module>
process_queries(queries, quadrants)
File "QuadrantQueries_dev.py", line 28, in process_queries
if query[0] == "X": query_x(query[1], query[2], quadrants)
File "QuadrantQueries_dev.py", line 16, in query_x
quadrants[i-1:j] = map(x, quadrants[i-1:j])
TypeError: 'int' object is not callable
欢迎使用Code Review!此网站适用于需要改进的工作代码。堆栈溢出将是这个问题更好的网站。 –
所以我们再次见面:)正如你可能可以告诉我仍然在解决同样的问题。另外,还有更多关于主题的内容,我发现在CodeReview,StackOverflow和程序员之间做出决定非常困难。在我看来,他们应该都只是卷入一个站点。 –
我不喜欢这些网站被分裂的方式。但是,我不觉得难以对问题进行分类。代码审查仅适用于需要风格/性能改进的工作代码。涉及不起作用的代码的问题总是属于StackOverflow。如果没有涉及的代码,那么它可能属于程序员。 –