我是社区的新手,并且通常会进行编码,选择python作为我的第一语言,并完成了一些在线课程。
我正在尝试进行练习并不断改进的项目,它是一个信用卡号验证程序,可以检查数字,前缀和校验和,但是我陷入了一个非常基本的概念。
我要定义一个函数作为用户输入信用卡号的输入,然后我想在另一个函数中调用该函数以验证前缀和校验和,但是我不断获得回溯,就像我的变量一样未定义。
# User inputs the cc number
def inp_cc():
cc_number = input("Insert credit card number: ")
return cc_number
# This will validate the prefix and lenght and print it if its correct,
otherwise will show an error
# Code is not completed as I keep getting the traceback
def val_tc():
inp_cc()
if len(cc_number) == 13 or len(cc_number) == 16:
cc_brand = "Visa"
print("Credit card number: %s" % cc_number,"Credit card brand: %s" % cc_brand)
else:
quit()
# Here I call the val_tc() function that should also call the inp_cc()
val_tc()
这是我得到的错误:
Traceback (most recent call last):
File "main.py", line 17, in <module>
val_tc()
File "main.py", line 11, in val_tc
if len(cc_number) == 13 or len(cc_number) == 16:
NameError: name 'cc_number' is not defined
谢谢!
答案 0 :(得分:1)
该错误的原因是您实际上没有将inp_cc
函数的返回值分配给任何东西。这是固定版本:
def inp_cc():
cc_number = input("Insert credit card number: ")
return cc_number
def val_tc():
cc_number = inp_cc() # FIXED
if len(cc_number) == 13 or len(cc_number) == 16:
cc_brand = "Visa"
print("Credit card number: %s" % cc_number,"Credit card brand: %s" % cc_brand)
else:
quit()
val_tc()
答案 1 :(得分:0)
您必须调用inp_cc,而不是int_cc。 我认为这只是打字错误。