python基础程序练习

标签 python list

我正在学习 udacity 类(class),但我陷入了一项练习中。我已经改变了我的代码一千次,但我认为我还没有接近正确的答案。练习是这样的: 定义一个过程,该过程接受 1-9 之间的数字字符串并 输出具有以下参数的列表: 字符串中的每个数字都应插入到列表中。 如果字符串中的数字 x 小于或等于 对于前面的数字 y,应插入数字 x 到一个子列表中。继续将以下数字添加到 子列表直到达到数字 z 大于数字 y。 然后将此数字 z 添加到正常列表中并继续。因此,如果字符串为“543987”,则输出应为 [5,[4,3],9,[8,7]]。

我的代码是:

string = '543987'

def numbers_in_lists(string):
    result = []
    sublist = []
    counter = 0
    ref = 0
    for e in string:

      if e == string[0]:
        result.append(int(e))

      if int(e) < ref:
        sublist.append(int(e))

      else:
        result.append(sublist)
        sublist = []
        result.append(int(e))
        counter = counter + string.find(e)

      ref = int(string[counter])

    return result

print numbers_in_lists(string)
# [5, [], 5, [4, 3], 9]  which is not what i expected ([5,[4,3],9,[8,7]])

这也太惨了吧??希望可以有人帮帮我。 谢谢!!

最佳答案

字符串中的每个字母只有两个选项

if int(letter) > last_letter:
    if sublist: # if we have any entries in our sublist 
       result.append(sublist) # append them before appending this letter
    sublist = [] # clear sublist
    result.append(int(letter)) # append our letter
else: # it must be lessthan or equal
    sublist.append(int(letter)) # so append to sublist
last_letter = int(letter) # update last_letter

然后在返回结果之前最后进行相同的检查

if sublist: result.append(sublist)
return result

关于python基础程序练习,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45664771/

相关文章:

python - 在 Bottle 中设置 HTTP 状态码?

python - miniconda 和 Travis,hash -r 是做什么的?

java - ArrayList 与递归方法的比较

java - 获取一系列List<Object>列表

c# - 从 C# 集合 List 对象中删除一个项目

python - 如何查找 bs4 的所有字符串?

python - SQLALCHEMY:没有唯一约束与引用表的给定键匹配

python - 如何减慢异步 API 调用以匹配 API 限制?

Python 列表听写

python - 读取Excel文件并将数据写入字典