0

エラーが発生しています....何が間違っているのかはわかっていますが、修正方法がわかりません。文字列を整数に追加できないことは理解しています...どんなアイデアでも、感謝します!

    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()
4

2 に答える 2

0

メソッドadd_gasには2つの引数が必要であり、関数に渡すのは1つだけです。また、関数に戻り値はありませんが、戻り値を出力しています。

これは私のために働いた:

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()
于 2013-02-27T17:43:45.413 に答える
0

したがって、コードには2つの独立した問題があります。

  • エラーメッセージに次の行が表示されました:

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

    コード内では、行は次のとおりです。

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

    それは2つの異なる意味です。add最初は、変数を文字列に連結しようとしますが、'gas'これは整数として失敗しadd、Python は整数を文字列に暗黙的に変換しません (エラーはそれを示しています)。だからあなたはしたいでしょう'gas' + str(add)

  • main関数では、次のようにadd_gasメソッドを呼び出します。

    mercedes.add_gas(4)
    

    しかし、実際には と の 2 つのパラメーターを使用してメソッドを定義した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

最後に、ロケール インスタンス変数に辞書を使用する理由がわかりませんが、そうする正当な理由がない限りgas、車の種類のプロパティを定義しないのはなぜですか?

于 2013-02-27T17:46:47.987 に答える