2015-11-09 41 views
-1

我試圖寫一個名爲printChunks功能,這需要3個參數打印塊

def printChunks(filename, chunkSize, numChunks) 

printChunks打印的順序從創建最numChunks「塊」由文件名給出的文本文件中的單詞。 塊是通過連接由單個空格分隔的單詞的最大序列形成的字符串,其長度不超過塊大小。爲了簡單起見,長度大於chunkSize的單個單詞應視爲單個「超大」塊並打印。 到目前爲止,我想出了這一點:

wordList = wordListFromFile(filename) 
string = '' 
i = 0 
output = ' '.join(list(string)) 

for i in range(numChunks): 
    while output <= chunkSize: 
     for word in wordList: 
      string.append(word) 
return 'chunk' + str(i) + '(' + str(len(output)) 

請幫助我是新來的蟒蛇

+1

在這段代碼中有很多根本錯誤的東西,我想你應該刷上變量賦值和循環使用 –

+1

歡迎來到StackOverflow。請閱讀並遵守幫助文檔中的發佈準則。 [最小,完整,可驗證的示例](http://stackoverflow.com/help/mcve)適用於此處。在您發佈代碼並準確描述問題之前,我們無法有效幫助您。 「請協助」不是問題描述。很明顯,你還沒有試圖運行和調試你的代碼。我們甚至無法爲您嘗試,因爲您尚未發佈代碼的其餘部分,以支持此代碼段。 – Prune

+1

我強烈建議您採用漸進式方法。寫幾行,讓他們工作;然後繼續下幾個。例如,閱讀你的文件的行並打印出來。接下來,看看你是否可以將整個文件連接成一個字符串。在這個特定的代碼中,嘗試在第一個** for循環之前打印出所有變量;我想你會得到一些驚喜。 – Prune

回答

0

這樣的事情,應該讓你去。

long_text = """Bacon ipsum dolor amet ham picanha corned beef shank 
swine cow pancetta. Tongue flank jerky pork loin, salami boudin 
brisket pastrami venison capicola pig turkey cow chuck. Capicola pork 
belly andouille ribeye pancetta kevin pork chop ball tip turducken 
doner kielbasa. Shankle pig cow jowl leberkas spare ribs doner 
kielbasa shoulder capicola prosciutto corned beef chicken. Corned beef 
pig porchetta, kevin tail ham beef ribs ham hock shankle sausage 
venison sirloin ball tip. 
""" 

def get_chunks(text, chunk_size, num_chunks): 
    words = text.split(' ') 
    chunks = [] 
    chunk = '' 
    for word in words: 
     if len(chunk) < chunk_size: 
      chunk += word + ' ' 
     else: 
      chunks.append(chunk) 
      chunk = '' 
     if num_chunks == len(chunks): 
      return ' '.join(chunks) 

print(get_chunks(long_text, 20, 2)) 

所以基本上,我們先把這些文字列出來,然後列出一個列表。然後創建一個空的列表來填充。然後,我們遍歷單詞列表,追加到塊字符串直到滿,然後追加到塊列表並重置塊。

我在塊之間獲得了額外的空間,但是您可以對此進行排序。