我没有Tcl语言的经验。我试图运行一个循环并尝试将输出写入输出文件。我的循环条件没有产生任何输出。我已经仔细检查了我的输入它们似乎是正确的。我的结束条件语法是否正确?如果我只使用&&
而不是$j >83
,那么它的工作正常。 (我在下面的代码中附上了一个剪辑,我的代码的第一行有问题)。
for {set j 1} { $j > 83 && $j < 104 } {incr j}
{
set sel [atomselect top "resid $j and name CA"]
mol reanalyze top
set structs [$sel get structure]
if {[lindex $structs ] == "H"}
{
incr count
}
puts -nonewline $output $j
puts -nonewline $output " "
puts $output $structs
}
答案 0 :(得分:1)
假设明显的语法错误已得到纠正......
当条件表达式子句的计算结果为false时,for
命令停止。在第一次运行时,首先运行setup子句(set j 1
),然后检查确实评估为false的条件($j > 83 && $j < 104
),因为1不在83和104之间,因此{{1在运行循环体之前停止。
你可能会更开心:
for
在更复杂的情况下,您定义一个基本循环,然后在正文中放置一个单独的跳过规则:
for {set j 84} {$j < 104} {incr j} {
# The rest of your loop body here...
}
但是在这种情况下......只需在正确的范围内循环开始。