调用一个参数无限增加的函数,另一个参数在有限值集上循环。

问题描述 投票:0回答:1

我一直在尝试用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循环中变化?

python loops while-loop iterator shapely
1个回答
0
投票

简单的解决方案

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()

不过,在我看来,使用发电机会是一个更好的解决方案。不过,由于你还是个初学者,我就不发这个解决方案了。

© www.soinside.com 2019 - 2024. All rights reserved.