python - for循环不会显示结果
问题描述
我正在尝试解决这一问题。我认为我的方向是正确的,但是我遇到了这个奇怪的错误。我的任务是创建一个带有 2 个参数的 python 函数:一个列表和第二个整数。这是我的函数名:def fun(aList, broj):
. 参数 aList 应该是浮点数列表,它们必须由用户插入。即使用户按排序顺序插入列表,也需要对列表进行排序。之后,需要将第二个整数参数 broj 放入 aList 列表中,以免破坏顺序。
我就是这样做的 if aList[i-1] <= broj and aList[i] >= broj: aList.insert(i,broj)
。现在,当我测试程序并输入这些参数 aList=[1,4,3] 和 broj=2 时,我得到了一个无限循环。为什么?
这是我的所有代码:
def fun(aList,broj):
a=int(input("How many numbers do you want to put in the List? "))
i=0
while i<a:
x=int(input("Insert number(broj): "))
aList.append(x)
i+=1
aList.sort()
i=1
while i<len(aList):
if aList[i-1] <= broj and aList[i] >= broj:
aList.insert(i,broj)
i+=1
return aList
k=2
x=[]
print(fun(x,k))
解决方案
你进入了一个无限循环,因为当你插入broj
列表时,它变成了aList[i]
. 在循环的下一次迭代中,这是aList[i-1]
,所以aList[i-1] <= broj
是真的,因为它们是相同的数字。所以你再次插入broj
,每次迭代都会发生这种情况。
您应该在插入后跳出循环broj
,因为无需继续寻找更多插入位置。
您也可以使用for
循环而不是while
.
for i in range(1, len(aList)):
if aList[i-1] <= broj <= aList[i]:
aList.insert(i,broj)
break
else:
aList.append(broj)
return aList
如果您永远找不到插入位置broj
,则它必须大于任何数字,因此如果循环完成但未插入,则应附加它。
您可以通过链接比较来测试范围内的数字aList[i-1] <= broj <= aList[i]
推荐阅读
- django - Django:是否可以排除视图中的字段?
- java - Java中基于正则表达式的字符串拆分
- javascript - 使用 Webpack 4 在 Javascript 中导入 JSON 文件
- loops - 用循环让单词下去 - 飞镖编程语言
- asp.net-core - 有没有办法在 SignalR Core Hub 中实现事件?
- python - “python.exe 在...中找不到 '__main__' 模块”尝试在虚拟环境中运行 python 脚本 opencv_blink_detect.py 时出错,
- c# - 如何在 WIX 中的安装标题中显示版本号?
- javascript - 自定义下拉菜单的键盘选择
- linux - Ubuntu 上的基本 bash 命令: wc -l < file1.txt > file2.txt vs wc -l < file1.txt > file1.txt
- orchardcms - 如何解决 orchardcms 删除 html 标签例如一个标签?