实现递归到python3类方法

时间:2016-12-07 22:42:19

标签: python python-3.x class recursion

我需要使用递归,以便输入在两个输入的总和不等于100的情况下继续调用自身,但每次尝试时,我都会一直向前请求输入一次,然后一旦输入,它将返回一个十六进制值。

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

非常感谢任何帮助! 编辑:修正了输入错误

1 个答案:

答案 0 :(得分:0)

有几件事:

  1. 首先,这些不是类方法,该术语具有您不应该混淆的特定含义。你在这里处理普通方法。
  2. (已废弃)两个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:"))
    

    当你发布问题时,我猜他们是拼写错误: - )

  3. 致电input(self)并不符合您的想法。 input是一个内置函数,您可以使用self作为提示来调用它。您应该再次使用self.input()(并可能将其重命名为input_probabilities以避免混淆。

  4. (已废弃)purs.getProbabilityP拼写错误,为purs.getProbability()

  5. 您的__init__没有多大意义:

    def __init__(self, probabilityX = 0, probabilityY = 0):
        self.probabilityX = ""
        self.probabilityY = ""
    

    我不确定为什么要为probability(X|Y)提供默认参数,然后不将它们分配给相应的实例属性。你应该这样做:

    def __init__(self, probabilityX = 0, probabilityY = 0):
        self.probabilityX = probabilityX
        self.probabilityY = probabilityY
    
  6. 最后一点,我建议不要使用递归;一个while循环可以有效地完成这个技巧。