Как вызвать функцию внутри другой функции? - PullRequest
0 голосов
/ 09 мая 2019

Я новичок в сообществе и программировании в целом, выбрал python в качестве моего первого языка и закончил пару онлайн-курсов.

Я пытаюсь работать над проектом, чтобы попрактиковаться и продолжать совершенствоваться. Он проверяет номер кредитной карты, проверяет цифры, префикс и контрольную сумму, но я застрял в очень простой концепции.

Я определяю функцию как ввод для пользователя номера кредитной карты enter de, затем я хотел бы вызвать функцию внутри другой, которая проверяет префикс и контрольную сумму, но я продолжаю получать трассировку, как будто моя переменная не определено.

# 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 ]

1 голос
/ 09 мая 2019

Причина ошибки заключается в том, что вы фактически не присваивали возвращаемое значение функции 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()
0 голосов
/ 09 мая 2019

Вы должны вызывать inp_cc, а не int_cc. Я думаю, что это просто опечатка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...