我一直在尝试用Python编写我的第一个程序,基本上都能找到现有的答案,但现在我真的卡住了。
代码如下。
from shapely import geometry, ops
main_condition = True
line = geometry.LineString(((0,0),(5,5)))
while main_condition:
# do some geometry stuff with line
if second_condition:
return line
main_condition = False
else:
line_parallel = line.parallel_offset(«arg1»,«arg2»)
line = line_parallel
#loop again
我有一行,我想偏移,直到满足一个条件。我的问题是,我想改变的参数是shapely的一个参数。line_parallel
函数。现在我想改变的参数如下。
"arg1": 这个参数是一个浮点数,是新平行线的偏移量。我希望这个参数是0.001、0.001、0.002、0.002、0.003、0.003,以此类推,重复一次,然后转到下一个数字。
"arg2"。这个参数是一个字符串,表示偏移量是在 "左 "还是在 "右"。我希望每次主循环运行时,这个参数在'左'和'右'之间变化。
希望这不会太混乱,但本质上的想法是,线的偏移首先是0.001 "左",然后是0.001 "右",然后是0.002 "左",然后是0.002 "右",以此类推,每次都会偏移到原线两侧越来越远的位置,直到满足条件。
有什么办法可以让函数的参数在while循环中变化?
简单的解决方案
import itertools
def my_loop():
for i in itertools.count():
for dir in ['right', 'left']:
arg1 = i * 0.001
arg2 = dir
# rest
if condition:
return
my_loop()
不过,在我看来,使用发电机会是一个更好的解决方案。不过,由于你还是个初学者,我就不发这个解决方案了。