NetLogo代码报错:第36行期望数字而非列表/块,求排查
NetLogo报错解决:Line36 预期数字而非列表/块
错误触发原因
你的报错出现在第36行的start signal 1 [ set color blue ]代码上:
- NetLogo没有
start命令用于创建指定品种的海龟,正确创建自定义breed海龟的语法是create-[breed复数] 数量 [动作] - 原代码把
create-signals误写为start signal,导致解释器无法识别命令,将后续的代码块[ set color blue ]当成了本应是数字参数的位置,因此抛出“预期数字而非列表/块”的错误。
修正后的核心代码片段
将transmit过程中的错误行替换为正确的创建命令:
to transmit create-signals 1 [ set color blue ] ; 修正此处的创建命令 set pcolor black set triggered-plants triggered-plants + 1 end
完整修正代码
globals [ initial-plants triggered-plants density ; 补充定义density变量,否则setup里会报错 ] breed [signals signal] to setup clear-all set-default-shape turtles "square" set density 50 ; 可根据需求调整密度值,或添加界面滑块控件 ask patches with [(random-float 100) < density] [ set pcolor green ] ask patches with [pxcor = min-pxcor] [ transmit ] set initial-plants count patches with [pcolor = green] set triggered-plants 0 ask patches with [ pcolor = red ] [ let target one-of neighbors4 with [ pcolor = green ] if target != nobody [ ask target [ set pcolor red ] ] ] reset-ticks end to go if not any? turtles [ stop ] ask signals ; 修正为breed的复数形式signals,而非单数signal [ask neighbors4 with [pcolor = green] [ transmit ] ] tick end to transmit create-signals 1 [ set color blue ] set pcolor black set triggered-plants triggered-plants + 1 end
额外提示
- 原代码中未定义
density变量,需在globals里补充或添加界面滑块,否则setup运行时会报错 go过程中的ask signal应改为ask signals(breed的复数形式才是指代整个群体)
内容的提问来源于stack exchange,提问作者Eduardo Dorado
相关产品推荐
相关产品推荐

