我真的不知道如何弄清楚它!如何删除python中的字符串中的中间字符
remove_middle_character("apple")
'aple'
remove_middle_character("banana")
'bana'
remove_middle_character("discount")
‘disunt‘
”“”
我真的不知道如何弄清楚它!如何删除python中的字符串中的中间字符
remove_middle_character("apple")
'aple'
remove_middle_character("banana")
'bana'
remove_middle_character("discount")
‘disunt‘
”“”
,因为它可能是课堂作业,我不会给你的代码(你会使用无论如何,因为你的学校也许知道堆栈溢出,并会赶你出去剽窃是不明智的)。相反,我会提供你需要知道的指导。
如果字符串或大小为2或更小(我们处理这个问题以便我们不必担心以下步骤中的边界情况),只需返回一个空字符串。
否则,如果该字符串的长度为奇数,得到长度x
,并返回第一x // 2
(所述//
运算符是整数除法)与起始于x // 2 + 1
字符级联字符。
否则,请返回第一个x // 2 - 1
字符,并与起始于x // 2 + 1
的字符连接。
在转弯到这码方面:
x
与len(x)
的长度;x[:n]
获得第一个n
个字符;m
开始的字符x[m:]
;+
;和p
是否甚至使用if (p % 2) == 0
(当然,奇数会导致(p % 2) == 1
评估为true)。这应该是全部你需要自己编写代码。
使用上面提到的所有优秀建议,我提出了一种重构方法,其中paxdiablo提到的边缘条件和mhawke增强的边缘条件都可以满足,但不需要使用if-else语句。
从paxdiablo可以看出,如果字符串长度是奇数(模数函数返回1),则该字符串的第一部分为: x // 2(相减0)。
如果字符串长度是偶数(模数函数返回0),则该字符串的第一部分为: x // 2 - 1(减1)。
在两种情况下(奇数和偶数的长度),该字符串的第二部分是: X // 2 + 1
因此,我们需要减去的反向什么字符串长度的模2将给我们。我们可以通过使偶数长度为奇数和奇数长度来做到这一点。一种可能的方式是:mod =(len(s)+ 1)%2.所以一种可能的解决方案可能看起来像:
def remove_middle_character(s):
h = len(s)//2
mod = (len(s) + 1) % 2
return s[:h - mod] + s[h + 1:]
if __name__ == "__main__":
print(remove_middle_character(""))
print(remove_middle_character("x"))
print(remove_middle_character("xy"))
print(remove_middle_character("apple"))
print(remove_middle_character("banana"))
print(remove_middle_character("discount"))
有一个原因是为什么其他建议没有给出代码。如果可能,请删除此代码部分。 –
非常感谢你,我也试过这种方式。它正在工作。 new_string1 =“” new_string2 =“” for char in s: if len(s)%2 == 0: new_string1 = s [:len(s)/ 2-1] new_string2 = s [len(s )/ 2 + 1:] 否则: new_string1 = S [:(LEN(S)+1)/ 2-1] new_string2 = S [长度(S)/ 2 + 1:] 返回new_string1 + new_string2 –
嗨,欢迎来到SO!请发布您迄今为止尝试的内容。我们很乐意帮助您找出问题,但重要的是不要让其他人为您编写所有代码; )。请参阅[本](http://stackoverflow.com/help/how-to-ask)文章,了解如何提出更好的问题,这将有助于人们给你更好的答案。 –
您可能想要多样化函数名称,即'remove_middle_characters()',因为对于偶数长度字符串可以删除2个字符,例如, '折扣 - >分散' – mhawke