Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 试图确定列表的内射性时的无限循环_Python_Loops - Fatal编程技术网

Python 试图确定列表的内射性时的无限循环

Python 试图确定列表的内射性时的无限循环,python,loops,Python,Loops,对于学校作业,我们必须创建一个函数来确定列表是内射的,它返回True还是False。建议使用两种方法执行此操作:使用“for”循环和“while”循环。我设法用“for”循环编程,但我遇到了“while”循环的问题,因为我不明白为什么我的循环是无限的 我会把我的代码放在下面。我已经试着去掉了一些不必要的变量,当我修改循环中“a”的值时,在我看来,纸面上没有什么错误 def injective(x): i=0 k=i+1 a=True while

对于学校作业,我们必须创建一个函数来确定列表是内射的,它返回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
def内射(x):
i=0
k=i+1
a=正确

虽然我这是因为内环中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
def内射(x):
i=0
k=i+1

当i在内部输入k+=1,而k
L
x
或其他东西时?如果你有这样的功能,将
for
循环转换为
while
循环会更容易。无论如何,最里面的循环永远不会修改
k
的值,因此条件永远不会变为false。作为提示,如果您可以在
for
循环中执行此操作,请确保通过在正确的级别重置和递增,将每个for循环转换为
循环。感谢您的帮助,我看到了我忘记的内容。您问题的标题对于任何搜索类似问题答案的人来说都不太有用。问题不在于列表的内射性,而在于如何将for循环转换为while循环。这已经有了答案,例如,这与我的for循环类似,谢谢你的帮助还有一件事,我不知道为什么你需要在外循环中使用'len(L)-1',我想你也需要检查最后一个元素。(但不确定)第一次迭代中没有检查最后一个元素吗?