如何制作一个在python中验证卡安全码的程序?

时间:2014-04-21 20:09:17

标签: python validation python-2.7 if-statement

我想制作一个程序来验证python中的卡安全代码(CSC,信用卡上的3位数安全代码)。我想编写一个简单的程序来检查给定的代码是否有效。如果输入的所有三个字符都是0到9之间的数字,则代码有效。如果CSC有效,我希望程序显示按钮,说明它是有效的,并且如果输入的代码,则表示它无效不包含三位数字。

我写了下面的代码,但我知道这是错的。我怎样才能写出来但保持简短?

code = raw_input("Please enter CSC: ")

if code[0] in range [0,10] and code[1] in range [0,10] and code[2] in range [0,10]:
    print "Thank you. We will process your order!"
else:
    print "The verification code was not valid. Please check your credit card code again."

非常感谢你的帮助!

5 个答案:

答案 0 :(得分:2)

使用正则表达式,并匹配\d{3}

import re
m = re.match('\d{3}', code)
if m:
    print 'Yay!'
else:
    print 'Fail!'

答案 1 :(得分:2)

或者:

import re
if re.match("[0-9][0-9][0-9]", code) == None:
    print "Not valid"
else:
    Print "Valid"

答案 2 :(得分:2)

您可以检查长度是否正确:

if len(code) == 3:

并检查它是否是一个数字:

if code.isdigit():

修改:正确的语法:

if len(code) == 3 and code.isdigit():

答案 3 :(得分:1)

有更好的方法,但你的代码几乎是正确的。将range [0,10]的每个实例更改为map(str, range(0,10)),这样就可以了。请注意,如果我将输入设为"123cucumbers",它将批准我的输入:)

这可能是正则表达式的一个很好的应用程序,但老实说,我认为这有点过分。试试这个:

def validCSC(csc):
    if not len(csc) == 3:
        return False
    try:
        csc = int(csc) # turn it into a number
    except ValueError: # input isn't a number
        return False
    if 100 <= csc <= 999:
        return True
    else:
        return False

答案 4 :(得分:1)

我决定这样做:

code = raw_input("Please enter CSC: ")

if len(code) == 3 and code[0] in map(str, range(0,10)) and code[1] in map(str, range(0,10)) and code[2] in map(str, range(0,10)):
    print "Thank you. We will process your order!"
else:
    print "The verification code was not valid. Please check your credit card code again."

它有效但是它适用于所有情况吗?

非常感谢您的回答!