Почему staticmethod не «утверждает» мой пользовательский ввод? - PullRequest
0 голосов
/ 04 декабря 2018

Я прочитал эти две записи ( Значение classmethod и staticmethod для новичка , staticmethod ), и у меня сложилось впечатление, что @staticmethod может функционировать как пользовательский оператор утверждения assert, чтобы гарантироватьправильный ввод.

Правильно ли мое предположение ? (@ staticmethod может утверждать пользовательский ввод)

Когда я ввожу в свой код ожидаемое значение x> 0, а не цифру, я получаю свой результат, будь то простое число илисоставное число.Но если у меня отрицательное число, 0 или не цифра, я могу вводить данные до тех пор, пока они не будут «правильными» и мой код не завершится или не напечатает «Неверный ввод».

Моя цель - «очистить» входные данные с помощью статического метода (или чего-либо еще в основном), но в моем классе.

Мой код:

class CompositeNumbers:
    def __init__(self, digit):
        self.digit = digit

    @staticmethod
    def check_input(digit):
        try:
            while digit <= 0:
                digit = int(input("Try again: "))
        except TypeError:
            print("Wrong Input")

    def userinput(self):

        uinput = self.digit

        for i in range(2, uinput):
            if uinput % i == 0:
                print("The number is composite!")
                break
            else:
                print("The number is a prime!")
                break

РЕДАКТИРОВАТЬ

Я переместил свою функцию check_input в мою userinput.При запуске кода он завершается без ошибок, но не печатает вывод.

class CompositeNumbers:
    def __init__(self, digit):

        self.digit = digit

    def userinput(self, digit):

        if digit <= 0 or TypeError:

            def check_input(digit):
                flag = True
                while flag:
                    try:
                        while digit <= 0:
                            digit = int(input("Try again: "))
                        else:
                            flag = False
                            return digit
                    except TypeError:
                        print("Wrong Input")


        for i in range(2, digit):
            if digit % i == 0:
                print("The number is composite!")
                break
            else:
                print("The number is a prime!")
                break
...