除非我在条件之后加上'print'语句,为什么我的'if'条件不起作用?

时间:2017-01-12 15:30:36

标签: python python-2.7

问题方法的开头:

def create_axial_features(self):
    # begin executing features
    try:
        roto.command.CommandExecute('TREEVIEW OBJECT SELECT ALL')
        roto.command.CommandExecute('ALIGN COORDINATE_SYSTEM ACTIVE ( "world" )')
        roto.command.CommandExecute('EDIT OBJECT DELETE ()')

        roto.command.CommandExecute(
            'FEATURE PLANE CREATE ("Thrust End of Shaft")')

        if self.var.jobDetails["Thrust Collar"] == "1":
            roto.command.CommandExecute('FEATURE PLANE CREATE ("Inactive Thrust Shoulder")')
            print "done"

        roto.command.CommandExecute(
            'FEATURE PLANE CREATE ("Active Thrust Shoulder")')
        roto.command.CommandExecute(
            'FEATURE CYLINDER CREATE ("TE Bearing Journal")')

出于某种原因,if语句下的代码仅在我在其下添加print语句时执行。当我删除print语句时,“Inactive Thrust Shoulder”行无法执行。 是的,self.var.jobDetails["Thrust Collar"]总是等于1,所以绝对不是它。

我之前从来没有遇到这样的问题,所以我不知道从哪里开始排除故障。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

我想出了问题

这与这一行有关:

if self.var.jobDetails["Thrust Collar"] == "1":

当新作业启动时,值"1"存储为整数,因为它刚刚由用户输入。但是,当加载旧作业时,它会将值作为字符串从保存的文本文件中加载。因此,if条件只会在它是一个加载的作业时运行。我错误地将它归因于内存缓冲问题,因为我在第一次测试期间创建了新作业,并且只是在第二次测试中加载了作业,而在我的脑海中,我在第一次和第二次测试之间在代码本身中唯一改变的是添加print语句。