如何编写这段Python代码

-3 投票
5 回答
1487 浏览
提问于 2025-04-16 13:11

写一个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

在这个例子中,你基本上是在实现一种简单的自动换行。

这是我会用的一个粗糙且不太优雅的方法:

  1. 先创建一个变量,用来存放一行的内容。
  2. 只要这个变量的长度小于或等于最大行长度,就从单词列表中取出第一个单词,放到这个变量里。
  3. 当这个条件不成立时(在取出单词之前先检查一下),就打印这一行,然后重新开始。

我不会直接给你做,但这就是我会开始的方式。

3

可以看看这个 textwrap 模块。

import textwrap

words = 'some words to print out'
width = 10

for line in textwrap.wrap(words, width):
    print line

撰写回答