2014-03-12 38 views
2

我正在使用名爲SingPath的網站學習Python。我需要寫的快速排序,但我給出的錯誤:SingPath Quicksort私人測試失敗

"Private Test Results: All the public tests passed but some private tests failed. You need to generalize your solution."

import random 
def qsort(l): 
    if len(l) <= 1: 
    return l 
    partition = l[random.randint(0,len(l)-1)] 
    xx = [x for x in l if x < partition] 
    yy = [x for x in l if x > partition] 
    p = [x for x in l if x == partition] 
    if type(l) != str: 
    return qsort(xx) + p + qsort(yy) 
    return ''.join(qsort(xx)+p+qsort(yy)) 

任何幫助上找出爲什麼這個代碼是不夠普遍將不勝感激。

兩條線索我一直在思考是:

  1. 他們提到的運行時檢查的問題描述
  2. 他們說,當qsort()被賦予一個字符串,而不是一個列表,應該必須的能力作爲列表返回或作爲字符串返回

回答

0

可能join需要連接的字符串列表,並且您已經給它連接了一個字符串。所以你做了「添加」字符串,你試圖避免單獨使用if。嘗試

''.join([qsort(xx), p, qsort(yy)])