为什么静态方法不“断言”我的用户输入?

时间:2018-12-04 14:58:42

标签: python python-3.x user-input static-methods assertion

我阅读了这两个条目(Meaning of classmethod and staticmethod for beginnerstaticmethod),并得到了@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

0 个答案:

没有答案