在 Python 中定义 not_equal 函数

Defining not_equal Function in Python

所以任务是假设 python 没有 != 内置,并编写一个函数 not_equal 接受两个参数并给出与 != 运算符相同的结果。

我写了以下代码:

def not_equal(x, y):
     if x == 0 or y == 0: #avoid error message for dividing by 0
         if ((y+1)/(x+1)) == 1:
             equal = False
     elif x/y == 1:
         equal = False
     else:
         equal = True
     return equal

并测试了以下测试用例:

print not_equal(3, 4)
print not_equal(5, 5)
print not_equal(0, 3)
print not_equal(4, 0)

前两个工作,但后两个给我以下错误消息:

Traceback (most recent call last):
  File "/Users/dvanderknaap/Desktop/My Python Programs/hw2.py", line 73, in <module>
    print not_equal(0, 3)
  File "/Users/dvanderknaap/Desktop/My Python Programs/hw2.py", line 67, in not_equal
    return equal
UnboundLocalError: local variable 'equal' referenced before assignment

为什么?

if x == 0 or y == 0: #avoid error message for dividing by 0
         if ((y+1)/(x+1)) == 1:
             equal = False

print not_equal(0, 3)
print not_equal(4, 0)

这些,将它们放入您的 if 声明中;

(y+1)/(x+1)= 1/4 and 1/4 != 1.
(y+1)/(x+1)= 5/1 and 5 != 1. 

所以您的 if 语句永远不会被处理,除非 x 和 y = 0。

当您提供 0 作为 x 或 y 时,将触发此代码:

if x == 0 or y == 0: #avoid error message for dividing by 0
     if ((y+1)/(x+1)) == 1:
         equal = False

现在,对于 (0, 4),Python 检查 (4+1)/(0+1) 是否等于 1,因为不等于,所以它永远不会设置 equal任何事情。

为什么要做这么复杂的事情?!毕竟假设是!=消失了,但是我没看到==,所以它应该还在!-)

def not_equal(a, b):
    return not (a==b)

该错误可能是由于在声明相等变量时出错。在使用它之前显式声明变量 equal,即 equal = None.

或者,这里有一个函数可以实现相同的目标(因为 == 仍然被您的任务所允许):

def not_equal(x, y):
    if x == y:
        equal = False
    else:
        equal = True
    return equal