我阅读了这两个条目(Meaning of classmethod and staticmethod for beginner,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