Python 试图确定列表的内射性时的无限循环
对于学校作业,我们必须创建一个函数来确定列表是内射的,它返回True还是False。建议使用两种方法执行此操作:使用“for”循环和“while”循环。我设法用“for”循环编程,但我遇到了“while”循环的问题,因为我不明白为什么我的循环是无限的 我会把我的代码放在下面。我已经试着去掉了一些不必要的变量,当我修改循环中“a”的值时,在我看来,纸面上没有什么错误Python 试图确定列表的内射性时的无限循环,python,loops,Python,Loops,对于学校作业,我们必须创建一个函数来确定列表是内射的,它返回True还是False。建议使用两种方法执行此操作:使用“for”循环和“while”循环。我设法用“for”循环编程,但我遇到了“while”循环的问题,因为我不明白为什么我的循环是无限的 我会把我的代码放在下面。我已经试着去掉了一些不必要的变量,当我修改循环中“a”的值时,在我看来,纸面上没有什么错误 def injective(x): i=0 k=i+1 a=True while
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,而kL
是x
或其他东西时?如果你有这样的功能,将for
循环转换为while
循环会更容易。无论如何,最里面的循环永远不会修改k
的值,因此条件永远不会变为false。作为提示,如果您可以在for
循环中执行此操作,请确保通过在正确的级别重置和递增,将每个for循环转换为,
循环。感谢您的帮助,我看到了我忘记的内容。您问题的标题对于任何搜索类似问题答案的人来说都不太有用。问题不在于列表的内射性,而在于如何将for循环转换为while循环。这已经有了答案,例如,这与我的for循环类似,谢谢你的帮助还有一件事,我不知道为什么你需要在外循环中使用'len(L)-1',我想你也需要检查最后一个元素。(但不确定)第一次迭代中没有检查最后一个元素吗?