计算化学公社

标题: 求助tcl,循环出问题 [打印本页]

作者
Author:
chw985550192    时间: 2020-7-10 13:36
标题: 求助tcl,循环出问题
本帖最后由 chw985550192 于 2020-7-10 14:17 编辑

for {set j 96} {$j <= 117} {incr j 1} {

set outfile [open num-$j.dat w]

set O5 [[atomselect top {not water and name "O.*" and within 3 of index $j}] get index]
set  O5num [llength $O5]
puts  $outfile [format "%5d" $O5num]

}

close $outfile


我想统计index 96 to 117 附近的氧原子

我直接在tk console中输入 set O5 [[atomselect top {not water and name "O.*" and within 3 of index 96}] get index] ,输出的结果为120 125 136 158 169

可是做上述循环的时候输出 1 2 10,输出结果竟然和上述不一样,且输出是错误的。


请问上述的循环中那里出问题了呢,谢谢。



作者
Author:
enthalpy    时间: 2020-7-10 15:09
本帖最后由 enthalpy 于 2020-7-10 15:18 编辑


{set j 96} {$j <= 117} {incr j 1} {


set outfile [open num-$j.dat w]


set O5 [[atomselect top not water and name "O.*" and within 3 of index $j"] get index]

set  O5num [llength $O5]

puts  $outfile [format "%5d" $O5num]


}

你要把花括号替换成双引号,里面的变量j 才能替换。

作者
Author:
chw985550192    时间: 2020-7-10 15:18
enthalpy 发表于 2020-7-10 15:09
{set j 96} {$j

我给的例子是对当前帧数进行输出,并没有涉及到具体那一帧。我只是想问上述的循环那里出问题。
作者
Author:
enthalpy    时间: 2020-7-10 15:19
chw985550192 发表于 2020-7-10 15:18
我给的例子是对当前帧数进行输出,并没有涉及到具体那一帧。我只是想问上述的循环那里出问题。

我刚才看错了,你看上面修改的回复。
作者
Author:
chw985550192    时间: 2020-7-14 20:13
enthalpy 发表于 2020-7-10 15:19
我刚才看错了,你看上面修改的回复。

谢谢你的回答,你说的会有一个问题,我定义的 name "O.*",已经有双引号了,如果再有一个双引号就会报错,请问这个问题要怎么解决呢。
作者
Author:
wyb    时间: 2020-7-15 09:34
每次读取一帧的时候需要清空之前的选择




欢迎光临 计算化学公社 (http://bbs.keinsci.com/) Powered by Discuz! X3.3