我需要使用递归,以便输入在两个输入的总和不等于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()
非常感谢任何帮助! 编辑:修正了输入错误
答案 0 :(得分:0)
有几件事:
(已废弃)两个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_probabilities
以避免混淆。
(已废弃)purs.getProbabilityP
拼写错误,为purs.getProbability()
。
您的__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
最后一点,我建议不要使用递归;一个while
循环可以有效地完成这个技巧。