python - 尝试确定列表的注入性时的无限循环
问题描述
对于学校作业,我们必须创建一个函数来确定列表是否是单射的,它返回 True 或 False。建议使用 2 种方法:使用“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 ,当不是单射时得到 False
解决方案
这是因为内部循环中 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 循环。
推荐阅读
- python - 表格操作/拆分到不同的文件
- excel - 如何以小写形式存储数组的值?
- javascript - JS 自动滚动调整
- kendo-ui - 当数据源为数组时,kendoDropDownList 不会滚动到当前值
- javascript - 在生产中调试和检查哪些变量等于
- java - 运行函数,直到另一个完成 Android
- javascript - jsx文件中控制台记录事件和event.target时的差异
- django - 我可以从 pythonanywhere 创建一个 sitemap.xml 吗?
- python - 将均匀网格拟合到具有随机误差的坐标
- sql - 有用的 Amazon Redshift SQL 用户定义函数的任何示例?