Я прочитал эти две записи ( Значение 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