我有一个矩形的三个顶点,需要找到第四个顶点,我需要找到N个矩形的缺失顶点。
可悲的是,我无法弄清楚如何在第一个矩形之后分配顶点:/。
以下是输入的示例文本文件:
2 # '2' is the number of rectangles.
5 5 # (x1, y1)
5 7 # (x2, y2)
7 5 # (x3, y3)
30 20 # (x1, y1)
10 10 # (x2, y2)
10 20 # (x3, y3)
# (there could be more '**vertices**' and more than '**2**' cases)
这是我的方法:
import sys
def calculate(num):
x1 = lines[n].split()[0]
y1 = lines[n].split()[1]
x2 = lines[n+1].split()[0]
y2 = lines[n+1].split()[1]
x3 = lines[n+2].split()[0]
y3 = lines[n+2].split()[1]
print x1, y1
print x2, y2
print x3, y3
#Planning to write codes for calculation & results below inside this function.
readlines = sys.stdin.readlines() # reads
num = int(lines[0]) # assigns the number of cases
for i in range(0, num):
item += 1
calculate(item) # Calls the above function
当我运行此代码时,我得到以下内容:
5 5
5 7
7 5
5 7
7 5
30 20
我想得到的是:
5 5
5 7
7 5
30 20
10 10
10 20
答案 0 :(得分:2)
你想要
item += 3
在你的循环中。
再看一遍,这还不足以让它发挥作用。您想传递行号
1, 4, 7, 10 .....
到您的calculate
功能。您可以使用range
for iLine in range( 1, 3*num-1, 3):
calculate( iLine)
第三个参数告诉它每次跳过3,你需要从#1行开始,而不是#0,因为第0行包含你的计数。
您还需要获得正确的上限。您要传递到calculate
的最终值实际上是3*num-2
,但请记住range
函数不包含上限,因此我们可以使用(最高期望值+ 1) ,这是3*num-1
来自的地方。
答案 1 :(得分:2)
上面的代码似乎不是您的完整代码,但我认为您应该在实际代码中更正它,如下所示:
而不是item +=1
,你应该写item = 1+ i*3
。
答案 2 :(得分:1)
@Avilar - 这是num > 2
时代码中发生的情况
您的代码建议如下:
item = 1
for i in range(0, num):
item += i*3
我们经历循环
i = 0
item += 0 --> item = 1
然后
i = 1
item += 3 --> item = 4
然后
i = 2
item += 2*3 --> item = 10
然后
i = 3
item += 3*3 --> item = 19
然后
i = 4
item += 3*4 --> item = 31
您将生成数字
1, 4, 10, 19, 31, 46, 64
我们想要的时候
1, 4, 7, 10, 13, 16, 19