我试着做一个codewar测试,需要输入一串文本,然后将驼峰案例分解,并将它们分成一个单词列表,我希望结果是
['break', 'Camel', 'Case', 'Ez']
但我不知道我的代码的哪一部分导致了这个问题
word_list = []
def solution(s):
global word_list
if any([char.isupper() for char in s][1:]):
# print([char.isupper() for char in s][1:])
for i, char in enumerate(s):
if i == 0:
continue
if char.isupper():
word_list.append(s[:i])
solution(s[i:])
else:
word_list.append(s)
return word_list
# print("breakCamelCaseEz")
print(solution("breakCamelCaseEz"))
我得到的结果是
['break', 'Camel', 'Case', 'Ez', 'CamelCase', 'Ez', 'breakCamel', 'Case', 'Ez', 'breakCamelCase', 'Ez']
也 当我试图在函数中添加一个计数器来查找问题时,我遇到了更多的问题
word_list = []
indexing = 0
def solution(s):
global word_list, indexing
indexing += 1
if any([char.isupper() for char in s][1:]):
print([char.isupper() for char in s][1:])
# break it down
for i, char in enumerate(s):
if i == 0:
continue
if char.isupper():
word_list.append(s[:i])
print("{}-{}".format("loop", indexing))
solution(s[i:])
else:
print("{}-{}-{}".format("else", indexing, s))
word_list.append(s)
return word_list
# print("breakCamelCaseEz")
print(solution("breakCamelCaseEz"))
我已经把代码读了好几遍了,但还是弄不明白
*编辑的第一部分
我也能做到
输出:
我使用filter从列表中删除空值,然后使用filter对象上的list将其转换回列表
相关问题 更多 >
编程相关推荐