2016-12-07 3 views
-2

Мне нужно использовать рекурсию, чтобы входной код продолжал называть себя, если сумма двух входов не равна 100, но каждый раз, когда я пытаюсь, я все время заканчиваю тем, что спрашиваю для ввода один раз, а затем, как только он был введен, он возвращает шестнадцатеричное значение.Внедрение рекурсии в метод класса python3

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

Любая помощь очень ценится! Редактирование: Исправлены опечатки

+2

Это должно быть 'self.input()', а не 'input (self)'. – zondo

+0

Возможный дубликат [Запросить пользователя для ввода до тех пор, пока он не даст действительный ответ] (http://stackoverflow.com/questions/23294658/asking-the-user-for-input-until-they-give-a-valid- ответ) – wwii

ответ

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 
    

В качестве конечной точки, я предложил бы не использовать рекурсию; a while цикл делает трюк эффективно.

+0

Большое спасибо за вашу помощь Джим! – mikecal7

Смежные вопросы