TypeError: 'int' object is not iterable even though iterator was removed

TypeError: 'int' object is not iterable even though iterator was removed

这是计算器的培训版,由于某种原因我收到错误:

      File "C:/Users/stazc/PycharmProjects/project00/Calculator.py", line 54, in calculate
    print(sum(self.numY,self.numX))
TypeError: 'int' object is not iterable

有趣的是我在这里没有使用迭代器,尽管我想这样做。我之前执行了代码并且 运行 很好地添加了一些循环代码并且它给出了这个错误。现在循环部分在注释中,所以它应该不会影响代码,尽管它仍然给我同样的错误!!

class Calculator:
    numX = 0
    numY = 0
    __sign = ''

    def __init__(self):
        pass
        # self.numX = x
        # self.numY = y
        # self.__sign = sign

    def set_key_values(self):
        print("Input numbers and then symbol")
        self.numX = int(input("X: "))
        self.__sign = input("Input symbol: ")
        self.numY = int(input("Y: "))

    #functions
    def sum(self,numX, numY):
        return numX+numY

    def minus(self,numX, numY):
        return numX-numY

    def mult(self,numX, numY):
        return numX*numY

    def divide(self,numX, numY):
        return numX/numY

    #setters
    def set_x(self,x):
        self.numX = x

    def set_y(self,y):
        self.numY = y

    def set_sign(self,sign):
        self.__sign = sign
    numX = numX
    #getters

    def get_x(self):
        return self.numX

    def get_y(self):
        return self.numY

    def get_sign(self):
        return self.__sign

    def calculate(self):
        if self.__sign == '+':
            print(sum(self.numY,self.numX))
        elif self.__sign == '-':
            print(self.minus(self.numX,self.numY))
        elif self.__sign == '*':
            print(self.mult(self.numX,self.numY))
        elif self.__sign == '/':
            print(self.divide(self.numX,self.numY))
        else:
            print('Incorrect Input, try again!')


c = Calculator()
c.set_key_values()
c.calculate()

我在这里尝试添加一个循环,您可以继续添加内容,但是这个错误使我的代码完全停止工作并且不明白为什么?

#
# loop = input("Keep Going? y/n")
# cont = True
# if loop[0] == 'y':
#     cont = True
# else:
#     cont = False
#
# while cont:
#     c = Calculator()
#     c.set_key_values()
#     c.calculate()
# else:
#     quit()
#

将出现错误的地方 sum() 替换为 self.sum()。 你想这样做是因为 python 的版本与你的不同,需要一个可迭代的作为第一个参数才能工作。您计算器中的所有内容都使用 self 函数而不是 python,所以这是另一个原因。

出现此错误的原因:

print(sum(self.numY,self.numX))
TypeError: 'int' object is not iterable

是因为你用的是Python的built-in sum(iterable[, start])方法。它采用的第一个参数需要一个可迭代的。相反,您将希望使用属于您的 Calculator class.

的已定义方法 self.sum
print(self.sum(self.numY,self.numX))