蛤? 我测试了下我的代码,貌似并没有问题
代码完全没问题呀!只是我的理解跟不上的问题,哈哈哈。
感谢大佬。
本帖最后由 丨游戏灬需要 于 2021-4-13 21:19 编辑
cy 本帖最后由 丨游戏灬需要 于 2021-4-14 02:39 编辑
这次应该对了 .listData3 我就不验算了 ,逻辑在try_know那
确实难(也确实因为我本身就没干过编程) .花了我一整天才想出.....所以我确菜了
class A():
class Simulation():
def __init__(self):
self.listResult =[]
self.listHead =[]
def try_know(self):
return '''例如:['# a', '## b', '### c' ,'## d' ,'### e' ,'# f' ,'### g']
相当于:
# a
## b
### c
## d
### e
# f
### g
操作的话:
进入 ,创建
进入 ,创建
进入 ,创建
后退 ,创建
进入 ,创建
退后 ,退后 ,创建
进入 ,进入 ,创建
结果的话:
['1' ,'a']
['1.1' ,'b']
['1.1.1' ,'c']
['1.2' ,'d']
['1.2.1' ,'e']
['2' ,'f']
所以 :
当前层最高 :listHead[-1] +=1
进入 :listHead.append(1)
后退 :listHead.pop()
创建 :listResult.append(['.'.join(map(str,listHead)) ,value])
如果要进入: 进入*n ,创建
如果要返回: 返回*n ,当前 ,创建
如果同层:当前 ,创建
'''
def peer(self):
'''指向当前最高层'''
self.listHead[-1] +=1
def entry(self):
'''进入'''
self.listHead.append(1)
def back(self):
'''后退'''
self.listHead.pop()
def create(self ,value):
'''创建'''
self.listResult.append(['.'.join(map(str ,self.listHead)) ,value])
def get_rsult(self):
return self.listResult
def __init__(self):
self.listData1 =['#a' ,'##b' ,'##c' ,'###d' ,'#e']
self.listData2 =['# a', '## b', '### c' ,'## d' ,'### e']
self.listData3 =['# a', '## b', '### c' ,'## d' ,'### e' ,'# f' ,'### g']
self.listData4 =['# a', '## b', '## c', '### d', '### e', '### f', '## g','### h','# i', '## j', '## k', '### l', '#### m','#### n', '### o', '# p','## q', '### r', '### s','## t', '### u', '# v', '## w', '### x','### y','## z']
def try_knowSimulation(self):
self.Simulation().try_know()
def try_know(self):
return '''
对比#数量 ,
如果现在的比上一个的数量多几个 ,说明是进入几个
如果现在的比上一个的数量少几个 ,说明是后退几个
如果数量相等 ,说明是同层建立
'''
def test(self ,listChooseData):
oldHead =''
temp =self.Simulation()
for info in listChooseData:
newHead ,value =self.split(info)
newHeadNum =newHead.count('#')
oldHeadNum =oldHead.count('#')
if newHeadNum >oldHeadNum:
for time in range(newHeadNum -oldHeadNum):
temp.entry()
temp.create(value)
oldHead =newHead
elif newHeadNum <oldHeadNum:
for time in range(oldHeadNum -newHeadNum):
temp.back()
temp.peer()
temp.create(value)
oldHead =newHead
elif newHeadNum ==oldHeadNum:
temp.peer()
temp.create(value)
oldHead =newHead
return temp.get_rsult()
def split(self ,strObj):
'''分割#和value'''
flag_ ,value =strObj.rsplit('#' ,1)
flag =flag_ +'#'
return
a =A()
# print(a.try_know())
print(a.test(a.listData1))
print(a.test(a.listData2))
print(a.test(a.listData3))
print(a.test(a.listData4)) def serialize(array):
levels_count = {1:0, 2:0, 3:0, 4:0, 5:0, 6:0}
last = 0
result = []
for each_box in array:
level, title = each_box.split(' ').count('#'), each_box.split(' ')
if level < last:
for after_index in range(level+1, 7):
levels_count = 0
last = level
levels_count += 1
string = '%d.%d.%d.%d.%d.%d' % (levels_count, levels_count, levels_count, levels_count, levels_count, levels_count)
result.append()
return result
# 测试效果
>>> serialize(["# a", "# b", "## c", "### d", "# e", "## f"])
[['1', 'a'], ['2', 'b'], ['2.1', 'c'], ['2.1.1', 'd'], ['3', 'e'], ['3.1', 'f']]
>>>
>>> serialize(["# a", "# b", "## c", "### d", "# e", "## f", "# g", "## h"])
[['1', 'a'], ['2', 'b'], ['2.1', 'c'], ['2.1.1', 'd'], ['3', 'e'], ['3.1', 'f'], ['4', 'g'], ['4.1', 'h']]
随便写了一下,流程图见此 qiuyouzhi 发表于 2021-4-11 22:11
草草撸了一个
明天用 Golang 写一个
羡慕{:10_254:}
页:
1
[2]