Как я могу исправить NameError, которая появляется в моих собственных определенных функциях? - PullRequest
0 голосов
/ 15 сентября 2018

Я пытаюсь сделать простую математическую функцию, которая будет суммировать две переменные. Однако, если строка введена в функцию, все сходит с ума. Попробуйте / За исключением почему-то не работает:

def addtwo(a,b):
    if int(a) and int(b):
        added=a+b
    else:
        added=print("Insert a number!")
    return added

Ответы [ 2 ]

0 голосов
/ 15 сентября 2018

NameErrors возникает, когда переменные вызываются перед установкой.Это означает, что ваши a и b переменные, вероятно, установлены неправильно.

https://airbrake.io/blog/python-exception-handling/python-nameerror

Строка, введенная в функцию, приведет к недопустимому литералу и будетсовершенно другая проблема.Это может быть обработано с помощью try и except.

0 голосов
/ 15 сентября 2018

NameError не приходит из-за этой функции. Кроме того, ваша функция написана неправильно. Ошибка NameE не будет решена (потому что эта часть вы не поделились). Но другая ошибка, которая приходит к вам с помощью функции addtwo, будет решена так: -

    >>> def addtwo(a,b):
    ...     if isinstance(a, int) and isinstance(b,int):
    ...             added = a+b
    ...     else:
    ...             added = "Insert a number!"
    ...     return added
    >>> print(addtwo(7,5))
    12
    >>> print(addtwo("str",5))
    Insert a number!

В вашем коде if int(a) and int(b): создает проблему при проверке целочисленного значения. Это выдаст эту ошибку ValueError: invalid literal for int() with base 10: 'str'. Поэтому используйте isinstance вместо int. А также added=print("Insert a number!") совершенно неправильно.

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