如何创建 3 个简单的函数来返回孤立的字符、返回重复的字符并返回删除了#comment 的字符串?
Posted
技术标签:
【中文标题】如何创建 3 个简单的函数来返回孤立的字符、返回重复的字符并返回删除了#comment 的字符串?【英文标题】:How to create 3 simple functions to return isolated chars, to return duplicated chars and to return string with #comment removed? 【发布时间】:2021-07-19 07:06:58 【问题描述】:函数 1:remove_all_dup('abbcdddeabcc')
应该返回 'aceab'
函数 2:remove_no_rep('abbcdddeabcc')
应该返回 'bbdddcc'
函数 3:remove_py_com('"abbc#d: " not fun#ction')
应该返回 '"abbc#d: " not fun'
(请注意,#
仅在 "" 内时不会被删除,并且它们必须并且通常成对使用。)
这种练习真的让我很生气,因为他们已经在绝望中度过了好几个月。即使在while循环中提供了一个while循环的解决方案,我的逻辑也无法遵循。但是,如果我看到解决这些问题的不同方法,也许一切都会有意义。
请帮帮我。
这是我迄今为止为最后一个函数所做的:
def remove_py_com(txt):
for letter in txt:
if '"' not in txt or txt.find("#")<txt.find('"'):
return txt[:txt.find("#")]
elif "#" not in txt:
return txt
elif "#" in txt and '"' in txt:
after=txt[txt.find("#"):]
for letter in after:
if after[1:].find("#")<after.find('"'):
return txt
for bullshit in after[after.find('"'):]:
txt=after[after.find('"'):] # so python go to top and check tail-txts again and again... but problem is "after" is not going for what's coming after the "quote"
# Maybe I can create 2 functions for this in a function to make it all clear for the mentally retarded like myself
【问题讨论】:
到目前为止你尝试了什么? def remove_py_com(txt): for letter in txt: if '"' not in txt or txt.find("#")对于函数 1 和 2,您可以考虑定义函数来计算字符串中的每个字符是否有重复的邻居。
def find_duplicates(s):
# compare each element with the next element
comparisons = [i==j for i, j in zip(s[1:], s[:-1])]
# a character is a duplicate if it is equal to one of it's neighbours
is_duplicate = [i or j for i, j in zip([False] + comparisons, comparisons + [False])]
return is_duplicate
这应该返回一个带有True
或False
的列表。例如:
>>> find_duplicates("abbcdddeabcc")
[False, True, True, False, True, True, True, False, False, False, True, True]
然后你可以使用这个函数来过滤你的原始字符串。
def remove_all_dup(s):
is_duplicate = find_duplicates(s)
return "".join([ch for i, ch in enumerate(s) if not is_duplicate[i]])
def remove_no_rep(s):
is_duplicate = find_duplicates(s)
return "".join([ch for i, ch in enumerate(s) if is_duplicate[i]])
这应该返回:
>>> remove_all_dup('abbcdddeabcc')
'aceab'
>>> remove_no_rep('abbcdddeabcc')
'bbdddcc'
【讨论】:
以上是关于如何创建 3 个简单的函数来返回孤立的字符、返回重复的字符并返回删除了#comment 的字符串?的主要内容,如果未能解决你的问题,请参考以下文章
如何根据输入为字符串或未定义来创建返回字符串或未定义的打字稿函数?
简单介绍如何使用PowerMock和Mockito来mock 1. 构造函数 2. 静态函数 3. 枚举实现的单例 4. 选择参数值做为函数的返回值(转)