2011-04-28 116 views
0

我得到一个错误:不清楚Python语法/错误

NameError: name 'barley_amount' is not defined

这里是我的代码:

from ctypes import * 

class barley_amount(Union): 
    _fields_ = [ 
       ("barley_long", c_long), 
       ("barley_int", c_int), 
       ("barley_char", c_char) 
       ] 
    value = raw_input("Enter the amount of Barley to put into the beer vat: ") 
    my_barley = barley_amount(int(value)) 
    print "Barley amount as a long: %ld" % my_barley.barley_long 
    print "Barley amount as an int: %d" % my_barley.barley_long 
    print "Barley amount as a char: %s" % my_barley.barley_char`from ctypes import * 

    my_barley = barley_amount(int(value)) 
    print "Barley amount as a long: %ld" % my_barley.barley_long 
    print "Barley amount as an int: %d" % my_barley.barley_long 
    print "Barley amount as a char: %s" % my_barley.barley_char 

我把这个例子从一本书,甚至复制发布它的时候我一直得到错误。我使用PyDev和eclipse。任何人有任何想法在这里发生了什么?哦,我也在使用Python 2.7.1。

+0

utdmr的答案解释了如何解决该问题,但具体错误消息的原因是,在执行类定义的主体时,'barley_amount'尚未定义。 – ncoghlan 2011-04-29 05:32:18

回答

5

缩进在Python中很重要。最后一部分(从第13行的ctypes开始)是错误的。真正的代码是:

from ctypes import * 

class barley_amount(Union): 
    _fields_ = [ 
       ("barley_long", c_long), 
       ("barley_int", c_int), 
       ("barley_char", c_char) 
       ] 

value = raw_input("Enter the amount of Barley to put into the beer vat: ") 
my_barley = barley_amount(int(value)) 
print "Barley amount as a long: %ld" % my_barley.barley_long 
print "Barley amount as an int: %d" % my_barley.barley_long 
print "Barley amount as a char: %s" % my_barley.barley_char 
0

我花了很长时间敲打我在这头,以及,你没有工会结束后一个空行“]”

值前添加一个空格它应该工作找到其他然后再次提到已经提到的随机ctypes导入。