【问题标题】:What to do when Python gives you this error message: "NameError: name 'divide' is not defined"当 Python 给您此错误消息时该怎么办:“NameError: name 'divide' is not defined”
【发布时间】:2015-07-11 02:56:51
【问题描述】:

我尝试使用 python 运行以下脚本:

age = add (30, 5)
height = subtract (78,4)
weight = multiply(90, 2)
iq = divide(100, 2)

我收到一条错误消息:

文件“ex21.py”,第 22 行,在 iq = 除法 (100, 2) NameError: name 'divide' 没有定义

我完全迷失了,因为“除法”是 python 识别的标准数学函数,但它不会在我的计算机上。当我只搜索错误消息时,大多数搜索结果都是非英语的。我想知道语言是否有问题。

非常感谢您的帮助!!!


修订:

我忘记了我之前在脚本中定义了“除法”。嗬!感谢你的帮助。我学的太慢了。太感谢了!!

def divide(a,b): 
    return a / b

【问题讨论】:

    标签: python nameerror divide


    【解决方案1】:

    数学函数可以通过它们的操作符访问,而不是内置函数。相反,请尝试:

    age = 30+5
    height = 78-4
    weight = 90*2
    iq = 100/2
    

    或者,您可以定义自己的函数:

    def add(*nums):
        return sum(nums)
    
    def subtract(num1, num2):
        return num1-num2
    
    def multiply(*nums):
        val = 1
        for i in nums:
            val*=i
        return val
    
    def divide(num1, num2):
        return num1/num2
    

    那么您的原始代码将按预期工作。

    【讨论】:

    • @LilyYoon-KyoHan,很高兴为您提供帮助,您介意点击绿色复选标记(15 分钟后)接受这个答案吗?谢谢!
    • 您也可以导入这些运算符的函数版本(import operator
    • 很公平,@NightShadeQueen,但我认为由于 OP 正在使用 Learn Python The Hard 方法来学习 python,最好展示函数背后的真实数学。
    【解决方案2】:

    您访问的函数必须是您已明确定义的 addsubtractmultiplydivide。否则,使用 python 运算符 +、-、*、/

    【讨论】:

    • 非常感谢!!现在这是有道理的。
    【解决方案3】:

    您的代码是取自 Learn Python The Hard way 的 Exercise 21 的直接示例。

    在那里,作者定义了自己的add()subtract()multiply()divide() 函数如下,然后他正在使用这些运算符。

    def add(a, b):
        print "ADDING %d + %d" % (a, b)
        return a + b
    
    def subtract(a, b):
        print "SUBTRACTING %d - %d" % (a, b)
        return a - b
    
    def multiply(a, b):
        print "MULTIPLYING %d * %d" % (a, b)
        return a * b
    
    def divide(a, b):
        print "DIVIDING %d / %d" % (a, b)
        return a / b
    

    Python 提供了+-*/ 来执行相应的操作。

    要通过这些特定的函数名称执行所需的操作,您还必须在代码中定义以下函数。然后就可以直接使用了。

    age = add (30, 5)
    height = subtract (78,4)
    weight = multiply(90, 2)
    iq = divide(100, 2)
    

    【讨论】:

    • 是的,我正在练习。我在定义它时拼错了名称。我很困惑,我将“除法”定义为一个函数……并认为这是 python 刚刚理解的东西。嗬! 掌心。缓慢但肯定地,我正在学习。谢谢!!
    • 你可以在你的代码中定义这些函数,然后直接调用这些函数。
    猜你喜欢
    • 2020-11-07
    • 2022-11-27
    • 1970-01-01
    • 2015-01-20
    相关资源
    最近更新 更多