首页 > 解决方案 > 一本书的词汇表

问题描述

我想根据输入打印一本书的标题和副标题,其中 1x'#' 表示标题,2x'#' 表示副标题

输入:

mylist=['# algorithm','blah basfafasfsa','## Sorting','xascxas',"#Data structrues","#BST"]

输出:

  1. 算法

1.1 排序

  1. 数据结构

这是我尝试过但无法获得所需输出的方法:

      def index(mylist):
        count=0
        count1=0
        for item in mylist:
                if item.startswith("#"):
                        count+=1
                        print(str(count+"."+item[2:]))
                elif item.startswith("##"):
                        count1+=1
                        print(str(count+"."+count1+"."+item[2:]))

标签: pythonstringlistslice

解决方案


您需要交换您的条件,因为startswith("#")字符串始终为真,#abc并且##abc在遇到新主题时重新初始化子主题计数器。此代码有效:

def index(mylist):
    count = 0
    count1 = 0
    for item in mylist:
        if item.startswith("##"):
            count1 += 1
            print(f"{count}.{count1}{item[2:]}")
        elif item.startswith("#"):
            count += 1
            count1 = 0
            print(f"{count}.{item[2:]}")
mylist=['# algorithm', 'blah basfafasfsa', '## Sorting', 'xascxas', "# Data structrues", "## Trees", "# BST"]

输出:

1. algorithm
1.1 Sorting
2. Data structrues
2.1 Trees
3. BST

推荐阅读