尝试确定列表的插入性时出现无限循环

时间:2018-12-28 18:01:24

标签: python loops

对于学校作业,我们必须创建一个函数,该函数确定列表是否为单射的,并返回True或False。推荐两种完成工作的方法:使用“ for”循环和“ while”循环。我设法使用“ for”循环进行编程,但是由于“ while”循环存在问题,因为我无法弄清楚为什么我的无限。

我将我的代码放在下面。我已经尝试摆脱一些不必要的变量,并且在循环中修改“ a”的值时,在我看来,这在纸上没什么问题。

def injective(x):  
      i=0
      k=i+1
      a=True
      while i<len(L)-1 :  #L is the name of the list
           while k<len(L) :
                if L[i]==L[k] :
                    a=False
                else :
                    a=True
                    i+=1
      return a

我希望列表为内射时为True,否则为

1 个答案:

答案 0 :(得分:1)

这是因为内部循环中k的值没有变化,我认为您在某处缺少k+=1

代码

def injective(x):  
  i=0
  k=i+1
  while i<len(L)-1 :  #L is the name of the list
       while k<len(L) :
            if L[i]==L[k] :
                return False
            k+=1
       i+=1
  return True

我已经自由地对代码进行了一些优化(对于非内射函数,它将大大减少迭代)。您可以通过for循环在其他程序中使用相同的代码。