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))
这是计算器的培训版,由于某种原因我收到错误:
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))