在python中求和

时间:2013-02-27 17:37:59

标签: class python-3.x

我收到错误....我知道我做错了什么,但不确定如何修复它。我明白我不能在一个整数中添加一个字符串......任何想法,我都会感激不尽!

    self.variables['gas'] = 'gas'+add
TypeError: Can't convert 'int' object to str implicitly

我的代码:

class Cars:        
    def __init__(self, **kwargs):
        self.variables = kwargs

    def set_Variable(self, k, v):
        self.variables[k] = v

    def get_Variable(self, k):
        return self.variables.get(k, None)     

    def add_gas(self, add, gas):
        self.variables['gas'] = gas+add


def main():
    mercedes = Cars(gas = 3)
    print (mercedes.get_Variable('gas'))
    print(mercedes.add_gas(4))


if __name__ == "__main__": main()

2 个答案:

答案 0 :(得分:0)

你的方法add_gas需要两个参数,你只需要将一个参数传递给函数。此外,您正在打印返回值,但函数中没有返回。

这个对我有用:

class Cars:        
    def __init__(self, **kwargs):
        self.variables = kwargs

    def set_Variable(self, k, v):
        self.variables[k] = v

    def get_Variable(self, k):
        return self.variables[k]     

    def add_gas(self, add):
        self.variables['gas'] +=add

def main():
    mercedes = Cars(gas = 3)
    print (mercedes.get_Variable('gas'))
    mercedes.add_gas(4)
    print (mercedes.get_Variable('gas'))
    print ('There are %s gallons of gas in the car.' % mercedes.get_Variable('gas'))


if __name__ == "__main__": 
    main()

答案 1 :(得分:0)

因此,我发现您的代码存在两个独立问题:

  • 在您的错误消息中显示了以下行:

    self.variables['gas'] = 'gas'+add
    

    在您的代码中,行是这样的:

    self.variables['gas'] = gas+add
    

    这是两个不同的含义。第一个尝试将变量add连接到字符串'gas',这将失败,因为add是一个整数,Python不会隐含地将整数转换为字符串(错误告诉你)。所以你想做'gas' + str(add)

  • main函数中,您可以像这样调用add_gas方法:

    mercedes.add_gas(4)
    

    但实际上您使用两个参数[{1}}和add定义了该方法,因此这将失败。

我认为您想要做的是在调用方法时将gas值增加self.variables['gas'],因此您需要编写如下所示的方法:

add

请注意,您可以使用def add_gas(self, add): self.variables['gas'] = self.variables['gas'] + add 运算符缩短它:

+=

最后,我不知道为什么你会想要为你的语言环境实例变量使用字典,但除非你有充分的理由这样做,为什么不为你的汽车定义一个def add_gas(self, add): self.variables['gas'] += add 属性类型?