在 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
所以任务是假设 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