在Python中验证数据类型

时间:2019-02-03 12:20:04

标签: python validation

我想在此简单代码中将数据类型验证为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()

2 个答案:

答案 0 :(得分:0)

在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值,就像我上面显示的那样。

答案 1 :(得分:0)

这有点棘手,但是它将解决逻辑,将您的条件更改为:

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

如果用户输入ifint,它将进入float内。

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