2014-03-01 219 views
0

我正在做python練習,但我被困在一個。如何將字符串分成兩部分?

一個字符串分爲兩部分(兩個新字符串):part1和part2。

如果字符串的長度相等,那麼這兩個部分也必須相等。

E.g. 'Help' = 'He' and 'lp'

如果字符串的長度不相等,則額外的字母將被分配給part1。

E.g. 'Hello' = 'Hel' and 'lo'

我正在做的練習需要兩個字符串。我需要削減這兩個字符串,然後將它們連接起來的方式如下:

<String1 Part1> + <String2 Part2>

<String2 Part1> + <String1 Part2>

所以,如果我們有話card和​​他們成爲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: 

我知道我還沒完成,但我真的可以在正確的方向上使用一些提示。 我的大腦被卡住了。

在此先感謝!

+0

您是否在尋找算法建議或關於如何連接/拆分字符串的建議? – Claris

+0

我的例子怎麼樣? –

回答

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

查找字符串的切片和注意,它可以採取消極的指數來計算的字符數字符串

的末尾添加

另外,我注意到你的例子似乎並不符合您的問題聲明。

即,如果原始字符串是「卡」,我期望根據您的問題陳述下面的結果。顯然,你展示了一個不同的預期結果 - 可能是一個好主意,再次檢查事情。

A/CA B/RD

+0

他的例子很準確。他採用兩個單詞,然後將第一個單詞的第一部分與第二個單詞的結尾連接起來。第二個單詞的第一部分與第一個單詞的第二部分相同。 – TheOneWhoPrograms

+0

謝謝 - 也許它是正確的。當我閱讀他的問題定義時,我想這似乎表明我所建議的可能是預期的結果,這就是爲什麼我建議「似乎是」不匹配,並且OP仔細檢查。也就是說,其中有些尚不清楚 - 雖然在編寫代碼或編寫代碼時總是一個很好的第一步。 –

+0

我試着讓他的解釋更清晰一些;)無論哪種方式,你的答案都應該有所幫助。 – TheOneWhoPrograms

0

你想要的是天花板師:

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

這是分裂的是什麼:

  1. 走字(5)
  2. 的LEN
  3. 取其負數(-5)
  4. 做Python的正常樓板劃分(-5 // 2 == -3)
  5. 然後取該結果的否定,(3)

所以不要把這個函數:

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

>>> splitword('help') 
('he', 'lp') 
>>> splitword('hello') 
('hel', 'lo') 
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