这是计算器的培训版本,由于某些原因我收到错误:
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()
#
答案 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,这是另一个原因。