如何编写这段Python代码
写一个Python代码片段,把单词按行整理,每行的字符数不能超过指定的宽度。你可以假设有一个单词的列表,按照顺序排列,宽度是每行最多可以有多少个字符。每当你不能再往当前行添加单词而不超过字符限制时,就打印这一行。
5 个回答
0
也许你应该把创建线的部分分开。
def wrap(words, maxWidth):
res = []
line = []
cur_len = 0
for word in words:
if cur_len + len(word) <= maxWidth:
line.append(word)
cur_len += len(word)
else:
res.append(line)
line = [word]
cur_len = len(word)
res.append(line)
return res
words = "quick brown fox jumps over the lazy dog".split(" ")
print '\n'.join(map(lambda line: ' '.join(line), process(words, 12)))
0
在这个例子中,你基本上是在实现一种简单的自动换行。
这是我会用的一个粗糙且不太优雅的方法:
- 先创建一个变量,用来存放一行的内容。
- 只要这个变量的长度小于或等于最大行长度,就从单词列表中取出第一个单词,放到这个变量里。
- 当这个条件不成立时(在取出单词之前先检查一下),就打印这一行,然后重新开始。
我不会直接给你做,但这就是我会开始的方式。
3
可以看看这个 textwrap 模块。
import textwrap
words = 'some words to print out'
width = 10
for line in textwrap.wrap(words, width):
print line