单词整理问题(python实现)

题目:小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))

运行结果:
 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值