2012-11-22 74 views
0

我遇到問題,我只想獲取每次運行時最多包含30個字符的字符串。每次從列表中獲取30個字符的字符串

import random 
test=["test1 up to 30 characters", 
     "test2 passing 30 characters easy", 
     "test3 up to 30 characters", 
     "test4 passing 30 characters easy"] 
random.shuffle(test) 
if len(test[0]) <= 30: 
    print test[0] 
elif len(test[0]) >= 30: 
    print "Shit" 
    print len(test[0]) 

修改:**************************************** ************************************

在測試中,我將有一個變量會是這個樣子:

import random 
test=["test1 up to "+variable+" characters", 
     "test2 passing "+variable+" characters easy", 
     "test3 up to "+variable+" characters", 
     "test4 passing "+variable+" characters easy"] 
random.shuffle(test) 
if len(test[0]) <= 30: 
    print test[0] 
elif len(test[0]) >= 30: 
    print "Shit" 
    print len(test[0]) 

該變量將是5個字符最多我不知道的混合數,比方說10

我想要的程序從列表中選擇總共包含最多30個字符的字符串。您的解決方案只打印出包含字符串的字符長達30個字符,就是這樣。我希望它返回並在列表中找到每次會爲每個變量提供總共30個字符的字符串。我真的希望你明白,我無法理解我自己。

已修改******************************************** ***********************************

好吧,我這樣做:

import random 
test=["test1 up to 30 characters", 
     "test2 passing 30 characters easy", 
     "test3 up to 30 characters", 
     "test4 passing 30 characters easy"] 
random.shuffle(test) 
print [x for x in test[0:1] if len(x) < 30] 

據我想要做什麼,但仍然得到空白,像空[]

+1

你的編輯都沒有區別 - 你已經被賦予仍然可以工作,你仍然落得一個字符串列表的解決方案,其中每一個仍然具有長度(其中將包括變量的長度) –

+0

我明白了,我給它一個測試...非常感謝。 –

回答

1

你不能有壞都<=好和>=,即你不能有=爲兩個。本質上,第二個if應該只是else,因爲如果它不小於或等於30,剩下的是什麼?

2

使用列表理解:

print [x for x in test if len(x) < 30] 
+0

+1,但您可能想[解釋列表理解是什麼](http://www.youtube.com/watch?v=pShL9DCSIUw)。 –

+1

這個解決方案是正確的,你只需要將列表理解保存在某處而不是打印出來。 – EnricoGiampieri

+0

謝謝,我會試一下。 –

相關問題