在python3类方法中实现递归
我需要使用递归,以便在两个输入的总和不等于100时,输入继续调用自身,但每次我尝试时,我总是以它请求输入一次而结束,然后一旦输入,它返回一个十六进制值在python3类方法中实现递归,python,python-3.x,class,recursion,Python,Python 3.x,Class,Recursion,我需要使用递归,以便在两个输入的总和不等于100时,输入继续调用自身,但每次我尝试时,我总是以它请求输入一次而结束,然后一旦输入,它返回一个十六进制值 class Z: def __init__(self, probabilityX = 0, probabilityY = 0): self.probabilityX = "" self.probabilityY = "" def getProbability(self): print
class Z:
def __init__(self, probabilityX = 0, probabilityY = 0):
self.probabilityX = ""
self.probabilityY = ""
def getProbability(self):
print(self.probabilityX, self.probabilityY)
def input(self):
self.probabilityX = int(input("Enter probability of x:"))
self.probabilityY = int(input("Enter probability of y:"))
if self.probabilityX + self.probabilityY != 100:
input(self)
def main():
purs = Z()
purs.input()
purs.getProbability()
main()
非常感谢您的帮助!
编辑:修复了键入错误以下几点:
input
调用都缺少右括号:
self.probabilityX = int(input("Enter probability of x:")
self.probabilityY = int(input("Enter probability of y:")
应改为:
self.probabilityX = int(input("Enter probability of x:"))
self.probabilityY = int(input("Enter probability of y:"))
我猜当你发布这个问题时,它们是错别字:-)input(self)
并不能实现您的想法input
是一个内置函数,您可以使用self
作为提示来调用它。您应该再次使用self.input()
(并可能将其重命名为input\u probabilities
)以避免混淆purs.getProbabilityP
拼写错误,它是purs.getProbability()
\uuuuu init\uuuuuu
没有多大意义:
def __init__(self, probabilityX = 0, probabilityY = 0):
self.probabilityX = ""
self.probabilityY = ""
我不知道为什么您为概率(X | Y)
提供默认参数,然后不将这些参数分配给相应的实例属性。您应该这样做:
def __init__(self, probabilityX = 0, probabilityY = 0):
self.probabilityX = probabilityX
self.probabilityY = probabilityY
作为最后一点,我建议不要使用递归;
while
循环有效地发挥了作用。应该是self.input()
,而不是input(self)
。非常感谢您的帮助,Jim!