Python 索引器:列表索引错误和错误跟踪计数器

Python 索引器:列表索引错误和错误跟踪计数器,python,list,Python,List,该程序的目标是定义一个程序,该程序接收1-9之间的数字字符串,并输出一个包含以下参数的列表: 字符串中的每个数字都应插入列表中 如果字符串中的数字x小于或等于前面的数字y,则应将数字x插入子列表。继续将以下数字添加到子列表,直到达到大于数字y的数字z 然后将此数字z添加到正常列表并继续 #测试用例 字符串='543987' 列表中的数字(字符串) 结果=[5,4,3,9,8,7]] def列表中的数字(字符串): #将字符串序列转换为数字数组 i=0 conv_str_e=[] 当我conv_

该程序的目标是定义一个程序,该程序接收1-9之间的数字字符串,并输出一个包含以下参数的列表: 字符串中的每个数字都应插入列表中

如果字符串中的数字x小于或等于前面的数字y,则应将数字x插入子列表。继续将以下数字添加到子列表,直到达到大于数字y的数字z

然后将此数字z添加到正常列表并继续

#测试用例
字符串='543987'
列表中的数字(字符串)
结果=[5,4,3,9,8,7]]
def列表中的数字(字符串):
#将字符串序列转换为数字数组
i=0
conv_str_e=[]
当我conv_str_e[检查点]:
#如果小数值列表中的列表不是空的
如果列表中的小数值[0]!=[]:
#连接正常列表和小列表
普通列表=普通列表+小型列表[0]
#清除小数值列表中的列表
小数值列表[0]=[]
#将元素添加到“普通”列表中
正常列表。追加(e)
#更新我的跟踪器
e_pos+=1
以前的位置+=1
#(不确定这可能是错误)
检查点=e位置
#当前元素不大于具有
#检查_点作为索引位置
#因此,它进入子列表。
小数值[0]的列表。追加(e)
e_pos+=1
以前的位置+=1
返回列表

你做错的正是你在评论中指出的。您只是不断增加
e_pos
,因此
check_point
最终大于列表的长度

我冒昧地改变了一些事情来简化流程。简单的程序可以更容易地找出它们出了什么问题。确保你总是先考虑最简单的方法来解决你的问题!在这里,我使用
enumerate
替换了
e_pos
以前的e_pos
的需要:

string='543987'
#将字符串序列转换为数字数组
conv_str_e=[int(i)表示字符串中的i]
#官方代码从这里开始
正常列表=[]
小数值列表=[]
#这一个将用于决定元素是否应该进入
#普通列表或小型列表
检查点=0
对于枚举中的ind,e(conv_str_e):
#第一个元素和每个元素都比
#将_点作为索引进行检查
#只要列表在里面,就会被放入正常的列表中
#小数值列表为空
如果ind==0或e>conv_str_e[检查点]:
#如果小数值列表中的列表不是空的
如果列表中有小数值!=[]:
#连接正常列表和小列表
普通列表。追加(小列表)
#清除小数值列表中的列表
小数值列表=[]
#将元素添加到“普通”列表中
正常列表。追加(e)
#更新我的跟踪器
检查点=ind
其他:
#当前元素不大于具有
#检查_点作为索引位置
#因此,它进入子列表。
小数值列表。附加(e)
#如果还剩下什么,请将其添加到列表中
如果列表中有小数值!=[]:
普通列表。追加(小列表)
打印(正常列表)
结果:

[5, [4, 3], 9, [8, 7]]

我相信您可以从这里适当地更改它,将其放回函数中。

请提供字符串的名称。我在测试用例示例下检查了它。string='543987'如果能解决问题,请给出答案。非常感谢。因为你,我第一次体验堆栈溢出非常棒。@pq_bd没问题。如果你觉得这个答案有用,请接受并投票!