在 Python 中验证数据类型



我想在这个简单的代码中验证数据类型为 int 或 float,我在某处出错了,无论如何都会显示错误消息"输入整数!我已经尝试将 == 而不是 != 放在 if 之后,但问题仍然存在。

def menuLoop():
    marks = input("Please Enter the Obtained Marks: ")
    if type(marks) != int or float:
        print("Enter an integer!")
        menuLoop()
    else:
        if int(marks) >= 75:
            print("A")
            menuLoop()
        elif marks >= 60:
            print("B")
            menuLoop()
        elif marks >= 35:
            print("C")
            menuLoop()
        elif marks < 35:
            print("D")
            menuLoop()

menuLoop()

这有点棘手,但它会修复逻辑,将您的条件更改为:

if not marks.replace('.','',1).isdigit():
    print("Enter an integer!")
    menuLoop()

如果用户输入intfloat,它将进入if

.replace('.','',1)将仅替换一个.然后检查所有其他字符是否为数字。

在Python中,问题是默认情况下,input()既不int也不float,这是一个string

如果要检查输入是否为int的形式,则可以这样做:

try:
    # mark is going to convert in int, if it can.
    # otherwise, it will throw a ValueError
    mark = int(mark)
except ValueError:
    # Handle the exception
    print 'Please enter an integer'
    menuLoop()

该函数int()引发一个ValueError,如果给定的参数在int中不可转换。因此,在捕获该ValueError之后,我们可以显示一条消息,输入一个int eger值,就像我上面显示的那样。

最新更新