【发布时间】:2016-01-08 07:09:00
【问题描述】:
我正在从事一个个人项目,以帮助我理解 python 3.4.2 循环和连接来自多个来源的字符串。
我的目标是使用“字符串”连接并在内部调用__len__() 来构建一个字符串,它会乘以我的结果。我希望长度为 5,然后是 10,然后是 15。现在它会出现 5,然后是 25,然后是 105。如果我继续下去,我会得到 425、1705、6825 等...
我希望我遗漏了一些简单的东西,但任何帮助都会很棒。我也在尝试有效地进行连接(我知道打印不是,那些是出于调试目的。)
我在网上使用了一个可视化的 python 工具来单步执行它,看看我是否能弄清楚。我只是错过了一些东西。 http://www.pythontutor.com/visualize.html#mode=edit
提前谢谢你!
import random
def main():
#String values will be pulled from
string = 'valuehereisheldbythebeholderwhomrolledadtwentyandcriticalmissed'
#Initial string creation
strTest = ''
print('strTest Blank: ' + strTest)
#first round string generation
strTest = strTest.join([string[randomIndex(string.__len__())] for i in range(randomLength())])
print('strTest 1: ' + strTest)
print('strTest 1 length: ' + str(strTest.__len__()))
#second round string generation
strTest = strTest.join([string[randomIndex(string.__len__())] for i in range(randomLength())])
print('strTest 2: ' + strTest)
print('strTest 2 length: ' + str(strTest.__len__()))
#final round string generation
strTest = strTest.join([string[randomIndex(string.__len__())] for i in range(randomLength())])
print('strTest 3: ' + strTest)
print('strTest 3 length: ' + str(strTest.__len__()))
def randomIndex(index):
#create random value between position 0 and total string length to generate string
return random.randint(0,index)
def randomLength():
#return random length for string creation, static for testing
return 5
#return random.randint(10,100)
main()
# output desired is
# strTest 1 length: 5
# strTest 2 length: 10
# strTest 3 length: 15
【问题讨论】:
-
您认为
join会做什么?因为s.join(strings)不只是将strings粘贴在s的末尾。 -
啊,你是对的。我测试了 string = 'abcd' test = ''.join(string) test = test.join(string) test = test.join(string) 并得到了 4,16,52。我明白你的意思,这不仅仅是将它们放在字符串的末尾。我需要更多地查看 join ,看看我是否能弄清楚如何维护索引和增长字符串。可能会更容易将所有这些都放在一个数组中,然后在我需要使用它时将其拉出。
标签: python string python-3.x random concatenation