-1

我必须创建一个程序,向用户询问两个字符串,然后生成一个新字符串,将第一个字符串中的一个单词和第二个字符串中的一个单词交替出现,其中“单词”如上所述定义为空格或标点符号之间的任何内容。当一个字符串用完单词时,只需使用较长字符串的其余部分。(例如,'This.is.a, test' 和 'My mom made a mean pasta sauce' 将产生 'This My is mom a make test a mean pasta sauce')

任何输入将不胜感激我正在尝试学习如何编程,而我目前所拥有的根本不起作用。

4

2 回答 2

0

random模块是一个很棒的模块,它将对此有所帮助。

我使用该string模块删除所有标点符号。

import random
import string
sentence_one = raw_input('Enter the first sentence! ').translate(None, string.punctuation)
sentence_two = raw_input('Enter the second sentence! ').translate(None, string.punctuation)
mylist1 = sentence_one.split()
mylist2 = sentence_two.split()
mylist3 = mylist1 + mylist2
random.shuffle(mylist3)
randomsentence = ' '.join(mylist3)
print randomsentence

运行时:

Enter the first sentence! one, two, three
Enter the second sentence! four! five! six!
three two four six one five # Well it could be anything really, this is randomised.
于 2013-01-26T04:51:27.523 回答
0

查看 Python 的 itertools 模块的文档。特别是功能 itertools.izip_longest (解决您发布的确切问题)。

从文档:

itertools.izip_longest(*iterables[, fillvalue]) 创建一个迭代器,用于聚合来自每个可迭代对象的元素。如果可迭代的长度不均匀,则用 fillvalue 填充缺失值。迭代一直持续到最长的可迭代对象用完为止。

如果其中一个可迭代对象可能是无限的,那么 izip_longest() 函数应该用一些限制调用次数的东西来包装(例如 islice() 或 takewhile())。如果未指定,则 fillvalue 默认为 None。

于 2013-01-26T04:47:57.967 回答