编写一个Python摘录,将单词汇集到不超过宽度的字符行中。您可以假定单词是一个单词列表,按顺序输出,宽度是一行可能具有的最大字符数。当你不能在线上添加另一个单词而不超过一行的字符限制时,打印每一行。
答案 0 :(得分:3)
查看textwrap模块。
import textwrap
words = 'some words to print out'
width = 10
for line in textwrap.wrap(words, width):
print line
答案 1 :(得分:0)
好的,我们假设您有一个这样的字符串:
string = 'the quick brown fox jumped over the lazy dog the quick brown fox jumped over the lazy dog the quick brown fox jumped over the lazy dog the quick brown fox jumped over the lazy dog'
这很长,所以有一些事情可以继续下去。我们称之为宽度w。
由于你正在进行单词,你可能希望将字符串拆分为空白字符''。这会给你一个单词列表。
您想要检查列表中每个单词的长度与行中剩余的可能字母数。因此,如果您的宽度为30,并且您打印'the',则剩余的金额为27.如果您可以从剩余字符数中减去字长并仍为正数,则打印该字。否则,请换上新的一行。
答案 2 :(得分:0)
在这个例子中,你基本上实现了天真的自动换行。
这是我做的粗糙而不雅的方式:
pop(-1)
是单词列表中的第一个元素,并将其附加到占位符字符串。我不是为你做的,但这是我开始的方式。
答案 3 :(得分: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)))
答案 4 :(得分:0)
我建议查看for循环和len()函数,这不应该超过10行代码。
之类的东西for word in wordList:
if((len(word)+len(currLine))<maxLen):
//more code here that I ain't giving you
你应该添加fie的字样(加上currLine的空格。一旦你没有足够的空间打印currLine并将currLine设置为word。希望这是足够的帮助,如果没有与你的教授交谈。