如何修复出现在自己定义的函数中的NameError?

时间:2018-09-15 14:22:26

标签: python-3.x function

我正在尝试做一个简单的数学函数,它将总结两个变量。但是,如果在函数中输入字符串,一切都会变得疯狂。尝试/由于某种原因无法正常工作:

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

2 个答案:

答案 0 :(得分:0)

在设置变量之前调用变量会引发NameErrors。这意味着您的ab变量可能设置不正确。

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

在函数中输入一个字符串将导致无效的文字,这是一个完全不同的问题。可以使用tryexcept来解决。

答案 1 :(得分:-1)

由于此功能,不会出现NameError。另外,您的函数编写错误。 NameError将无法解决(因为您没有共享该部分)。但是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!")也是完全错误的。