Netlogo嵌套循环

 _红裙子_Supreme 发布于 2023-02-13 21:54

基本上,我的问题是嵌套循环如何在netlogo中工作.我已经尝试在彼此之间嵌套两个while循环,但是内部循环似乎没有正常运行(正确地是它们在其他语言中的工作方式).如果我使用两个不同的循环,它按预期工作.netlogo中的循环工作类似于汇编语言中的标签,因此它会跳转到第一个标记时注意到它.

我问的原因是因为我一直在尝试使用不同类型的循环,或者为内循环创建一个过程,这会损害我的代码的可读性.这是一个例子,我在一个制表符分隔文件中读取为补丁分配值:

file-open "map2.txt"
let i max-pycor
let j min-pxcor
while [i >= min-pycor] [
 repeat 33 [ask patch j i [
    ifelse file-read = 1
      [set pcolor white]
      [set pcolor black]
    ]
    set j j + 1
  ]
  set i i - 1
]
file-close-all

我想删除重复33循环并使用while循环来使用可变大小的世界.

1 个回答
  • 起初,我不确定你的意思是"在netlogo中的循环工作类似于汇编语言中的标签,所以它会跳到第一个标签时注意到它",但我现在怀疑你指的是这个事实如果你loop在NetLogo中嵌套两个构造,最终会使用stop你的外部循环,这肯定不是你所期望的.

    展示:

    to test-loop
      let i 0
      loop [
        set i i + 1
        type (word "i" i " ")
        let j 0
        loop [
          set j j + 1
          type (word "j" j " ")
          if j = 3 [ stop ]
        ]
        if i = 3 [ stop ]
      ]
    end
    

    会在指挥中心给你这个:

    observer> test-loop
    i1 j1 j2 j3 
    

    我明白为什么这可能是一个问题.但是,while在NetLogo中,行为与您期望的一样:

    to test-while
      let i 0
      while [ i <= 3 ] [
        set i i + 1
        type (word "i" i " ")
        let j 0
        while [ j <= 3 ] [
          set j j + 1
          type (word "j" j " ")
        ]
      ]
    end
    

    在指挥中心:

    observer> test-while
    i1 j1 j2 j3 j4 i2 j1 j2 j3 j4 i3 j1 j2 j3 j4 i4 j1 j2 j3 j4
    

    ...所以我不明白为什么你不能使用两个嵌套while循环.

    2023-02-13 22:03 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有