0

我有一个问题,我只想在每次运行时获取最多包含 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]

它做了我想要的,但仍然是空白,比如空 []

4

2 回答 2

2

使用列表推导:

print [x for x in test if len(x) < 30]
于 2012-11-22T13:25:11.423 回答
1

你不能同时拥有<=好的和>=坏的,即你不能同时拥有=这两者。本质上,第二个if应该只是一个else,因为如果它不小于或等于 30,还剩下什么?

于 2012-11-22T13:24:33.340 回答