TypeError:' int'即使删除了迭代器,对象也不可迭代

时间:2018-02-16 00:07:20

标签: python iterator calculator typeerror

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

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

2 个答案:

答案 0 :(得分:2)

您收到此错误的原因:

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

是因为您正在使用Pythons内置sum(iterable[, start])方法。它所采用的第一个参数需要一个可迭代的。相反,您需要使用属于self.sum类的已定义方法Calculator

print(self.sum(self.numY,self.numX))

答案 1 :(得分:0)

sum()替换为您收到错误的self.sum()。 你想这样做是因为python的版本与你的版本不同,需要一个iterable作为第一个参数才能工作。计算器中的所有内容都使用自身功能而不是python,这是另一个原因。