在Python中定义not_equal函数

在Python中定义not_equal函数,python,function,return,nonetype,Python,Function,Return,Nonetype,因此,任务是想象python没有!=内置,并编写一个不等于的函数,该函数接受两个参数并给出与相同的结果!=接线员 我编写了以下代码: 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 = F

因此,任务是想象python没有!=内置,并编写一个不等于的函数,该函数接受两个参数并给出与相同的结果!=接线员

我编写了以下代码:

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
回溯(最近一次呼叫最后一次):
文件“/Users/dvanderknap/Desktop/My Python Programs/hw2.py”,第73行,在
打印不相等(0,3)
文件“/Users/dvanderknap/Desktop/My Python Programs/hw2.py”,第67行,格式不相等
回报相等
UnboundLocalError:赋值前引用的局部变量“equal”
为什么?

这些,把它们放在你的
if
语句中

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

因此,除非x和y=0,否则您的
if
语句永远不会被处理。

当您将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,因为它不等于1,所以它从不将
设置为等于任何值。

为什么要做如此复杂的事情?!毕竟,假设是
=消失了,但我看不到关于
==
的任何信息,所以它应该仍然存在


该错误可能是由于声明相等变量时出错引起的。在使用变量之前明确声明变量
equal
,即
equal=None

或者,这里有一个实现相同目标的函数(因为您的作业仍然允许
=
):


看看嵌套的if,在那里插入数字并检查它们产生的结果。想想x=-1,y=0。另外,在这里要小心——在python2.x上(你的print语句似乎正在使用它),
3/2==1\True
,但是在这种情况下,
not_equal
可能会说
False
:)。那太容易了。@jgritty,有些人天生简单,有些人实现了简单,有些人把简单强加在他们身上。。。我属于后一类我想OP应该解释为什么最简单的答案是不够的。我想他们不使用这种方法肯定是有原因的。我们应该使用条件语句,很抱歉没有发布全部内容assignment@numbersloth,对于条件语句,
如果a==b:returntrue
当然
否则:returnfalse
也会很好地工作!)啊,所以我在第一个if循环中添加了一个else条件,如果它不等于1,它将返回True。伟大的谢谢完全正确。:)祝你的项目好运!公平地说,@JoelHinz提供的答案(IMHO)更容易理解。当我读到他的答案时,我可以清楚地看到问题所在,特别是在某些情况下,
equal
没有被设置好——在你的解释中,要准确地辨别你想说什么要困难得多(即使最终你是在试图说同样的话)。
if x == 0 or y == 0: #avoid error message for dividing by 0
     if ((y+1)/(x+1)) == 1:
         equal = False
def not_equal(a, b):
    return not (a==b)
def not_equal(x, y):
    if x == y:
        equal = False
    else:
        equal = True
    return equal