题目:小A最近在努力学习英语,小A有一本生词本,专门用来记录见到的生词,每次小A看到一个自己不认识的单词时,就会把这个生词抄写到生词本上,经过几个月的学习之后,小A想对这个生词本上的单词进行整理,由于小A并不能保证生词抄写一遍后就记下来,因此小A可能会把一个已经记录在生词本上的单词当作不认识的往上写(即一个单词可能在生词本上出现多次)。小A希望把生词本上的单词去重,并且按照字典序排序,然后排好版打印出来。打印排版的要求是:单词去重后按照字典序从小到大的顺序排,相邻的两个单词用一个空格隔开,尽量写在一行,且每一行最多只能有50个字符(包含空格),一个单词不能隔行写,即如果写下某个单词会超出一行的字符数限制,那么必须将这个单词整个写在下一行的开头,现在将小A若干天以来记录的生词给你,请你帮他按照要求进行整理和排版。
样例输入:
2
abandon huhuhuh muhah lalala english language study learn
abandon learn
样例输出:
abandon english huhuhuh lalala language learn
muhah study
代码实现:
days = input("input days:")
words = ''
for x in range(int(days)):
word = input(f"day {x+1} words:")
if x == 0:
words = words + word
else:
words = words + ' ' + word
# 去重
new_words = list(set(words.split(' ')))
new_words.sort()
# 按长度为50的截取
length = 0
new_words_1 = ''
for y in new_words:
if y != new_words[-1]:
length = length + len(y) + 1
else:
length = length + len(y)
if length <= 50:
new_words_1 = new_words_1 + y + ' '
else:
new_words_1 = new_words_1 + '\n' + y + ' '
length = 0
new_words_2 = []
for b in new_words_1.split('\n'):
temp = b.strip().split(' ')
new_words_2.append(temp)
# 输出
for z in new_words_2:
print(' '.join(z))
运行结果: