如何在另一个函数中调用一个函数?

时间:2019-05-09 20:31:42

标签: python function

我是社区的新手,并且通常会进行编码,选择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

谢谢!

2 个答案:

答案 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。 我认为这只是打字错误。