我想制作一个程序来验证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."
非常感谢你的帮助!
答案 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."
它有效但是它适用于所有情况吗?
非常感谢您的回答!