如何仅验证用户对Numbers的输入?蟒蛇

时间:2015-08-30 16:20:16

标签: python validation

我需要帮助验证来自(随机)问题的输入,我要求确保用户输入只是一个数字,而不是字母或任何其他随机字符。此外,验证还应该有一条错误消息,通知用户他们做错了什么,并重复他们提出问题的机会。

到目前为止,我需要验证的代码部分如下:

def quiz():
    x = random.randint(1, 10)
    y = random.randint(1, 10)

    ops = {'+': operator.add,'-': operator.sub,'*': operator.mul}

    keys = list(ops.keys())
    opt = random.choice(keys)
    operation = ops[opt]  

    answer = operation(x, y)

    print ("\nWhat is {} {} {}?".format(x, opt, y))
    userAnswer= int(input("\nYour answer: "))

    if userAnswer != answer: #validate users answer to correct answer
        print ("\nIncorrect. The right answer is",answer,"")
        print ("\n============= 8 =============")
        return False
    else:
        print("\nCorrect!")
        print ("\n============= 8 =============")
        return True

for i in range(questions): #ask 10 questions
    if quiz():
        score +=1

print("\n{}: You got {}/{} questions correct.".format(name, score, questions,))

提前致谢!

4 个答案:

答案 0 :(得分:2)

使用try...except

while True:
    userAnswer = input("\nYour answer: ")
    try:
       val = float(userAnswer)
       break
    except ValueError:
       print("That's not a number!")

如果您只想要整数,请使用int代替float

答案 1 :(得分:0)

您可以使用函数验证整数输入:

def int_validation(user_Input):
    try:
        val = int(user_Input)
    except ValueError:
        print(user_Input,' not an integer!')

答案 2 :(得分:0)

单行:

['/gallery/', '/nika/']

答案 3 :(得分:-2)

最好让函数接受你的输入。然后,这可以继续提示用户,直到输入有效数字:

def get_number(prompt):
    while True:
        try: 
            return int(input(prompt))
        except ValueError:
            print("Please enter a number")

然后您可以按如下方式更改输入行:

userAnswer = get_number("\nYour answer: ")