0

我正在做 python 练习,但我被困在其中之一。

一个字符串分为两部分(两个新字符串):part1 和 part2。

如果字符串的长度相等,那么这两个部分也必须相等。

例如'Help' = 'He' and 'lp'

如果字符串的长度不相等,则将多余的字母分配给 part1。

例如'Hello' = 'Hel' and 'lo'

我正在进行的练习包含两个字符串。我需要剪切这两个字符串,然后以下列方式连接它们:

<String1 Part1> + <String2 Part2>

<String2 Part1> + <String1 Part2>

所以如果我们有这些词cardplan它们就变成caanplrd

到目前为止,我能想到的只有:

def divide_strings(word1, word2):
    if len(word1)%2 > 0 or len(word2) %2 > 0:

    else len(word1) %2 == 0 or len(word2) %2 == 0:

我知道我还远未完成,但我真的可以在正确的方向上使用一些提示。我的大脑被卡住了。

提前致谢!

4

3 回答 3

2

你说提示——所以

分割字符串的重要一点是试图找出在哪里剪断这个字符串。

考虑这个任务

x = len(s) // 2

if len(s) is 0 or 1, x will be 0
if len(s) is 2 or 3, x will be 1
if len(s) is 4 or 5, x will be 2

在所有情况下,x 都是您要分配给 part2 的字符数

查找字符串切片并注意它可能需要一个负索引从字符串的末尾开始计数

添加

另外,我注意到您的示例似乎与您的问题陈述不符。

即,如果原始字符串是“card”,我希望根据您的问题陈述得到以下结果。显然,您展示了不同的预期结果——仔细检查可能是个好主意。

a/ca b/rd

于 2014-03-01T00:25:51.277 回答
0

以下内容应该可以帮助您做您想做的事。我没有安装 python 解释器,所以我实际上无法测试它。

def splitword(w):
    split = -((-len(w))//2)
    return w[:split], w[split:]

part1a, part2a = splitword('card')
part1b, part2b = splitword('plan')

newword1 = part1a + part2b
newword2 = part1b + part2a
于 2014-03-01T00:40:58.420 回答
0

你想要的是天花板分割:

>>> w = 'hello'
>>> split = -( ( -len(w) )//2 )
>>> split
3
>>> p1, p2 = w[:split], w[split:]
>>> p1
'hel'
>>> p2
'lo'

这就是拆分:

  1. 取词之长 (5)
  2. 取它的负数(-5)
  3. 做 Python 的正常楼层划分,(-5//2 == -3)
  4. 然后取该结果的负数,(3)

所以一定要把它放在一个函数中:

def splitword(w):
    split = -((-len(w))//2)
    return w[:split], w[split:]

>>> splitword('help')
('he', 'lp')
>>> splitword('hello')
('hel', 'lo')
于 2014-03-01T00:29:06.687 回答