TypeError:&:'float'和'float'不支持的操作数类型,但我没有&

时间:2015-04-23 14:37:01

标签: python if-statement typeerror

以下是我的代码的一部分:

import numpy as np
import pyfits 
from astropy.io import ascii

def create_randoms(min_z,max_z,min_mass):

        Do some calculations and use it to 
        write into a file 


        if (max_z == 1.0 and min_mass == 1e13):
                ascii.write(data_1, '/home/Documents/0.0_zphot_1.0.dat', Writer=ascii.FixedWidthNoHeader, delimiter=None)

正好在if语句中,我收到错误:

TypeError: unsupported operand type(s) for &: 'float' and 'float'

我通过以下方式调用该函数:

create_randoms(0.0,1.0,1e13)

我不知道为什么它似乎不喜欢值1.0 and 1e13。我在这里使用按位&,而是正确使用逻辑运算符and。但它仍然让我误解了。

完整错误追溯:

TypeError                                 Traceback (most recent call last)
<ipython-input-83-d5f507b12cc0> in <module>()
----> 1 create_randoms(0.0,1.0,1e13,0,0,1,0,0,0,0,1)

/home/ssridhar/Documents/PhD_materials/Python/correlation_func/100_Hband_halos/jackknife_random_creation.py in create_randoms(min_z, max_z, min_mass, r1, r2, r3, r4, d1, d2, d3, d4)
    119         """ WRITING FILES ACCORDINGLY """
    120 
--> 121         if (max_z == '1.0' and min_mass == '1e13'):
    122                 ascii.write(data_1, '/home/ssridhar/Documents/PhD_materials/2pt_correlation_master_2/Input/100_Hband_halos/jackknife/M200>1e13/K1_100sq_M200>1e13_xyz_0.0<zphot0.001<1.0.dat', Writer=ascii.FixedWidthNoHeader, delimiter=None)
    123 

TypeError: unsupported operand type(s) for &: 'float' and 'float'

1 个答案:

答案 0 :(得分:2)

Python将您的代码编译为字节码,然后运行它。但字节码不会产生可读的错误消息。发生错误时,Python会从磁盘加载原始源代码,以显示导致错误的行。

因此,当您编辑代码,但不在Python中重新加载字节码或重新启动Python解释器时,您的错误消息将不同步。运行有问题的旧代码,但回溯显示新代码。

在ipython中,重新加载代码,或者100%确定,重新启动解释器。