📅  最后修改于: 2023-12-03 15:42:22.244000             🧑  作者: Mango
这是一道来自“门|门CS 2008”的第59题。该题目要求编写一个程序,通过给定的数据,计算出横版诗句(4行7个字),每一行都要求字数相同,且不能有相同的词语出现。
首先,我们需要准备一个包含了所有汉字的列表,用于后续的随机抽取。
其次,我们需要使用Python中的random.sample()
函数来随机抽取四行各7个字,这样可以保证每行的字符数相等,并确保四行文字不同。
接着,我们需要检查每一行是否有相同的词语出现。这可以通过对每一行进行拆分为词语列表,并使用Python的set()
函数来去重实现。如果列表的长度不等于原来的长度,则说明出现了相同的词语,需要重新抽取。
最后,我们将四行文字拼接在一起,形成一个完整的横版诗句。
import random
汉字列表 = ['一', '丁', '七', '万', '丈', '三', '上', '下', '不', '与', '丑', '专', '且', '丕', '世', '丘', '丙', '业', '丛', '东', '丝', '丞', '丢', '两', '严', '丧', '个', '丫', '中', '丰', '串', '临', '丸', '丹', '为', '主', '丽', '举', '乃', '久', '么', '义', '之', '乌', '乍', '乎', '乏', '乐', '乒', '乓', '乖', '乘', '乙', '九', '也', '习', '乡', '书', '买', '乱', '乳', '乾', '了', '予', '争', '事', '二', '于', '亏', '云', '互', '五', '井', '亚', '些', '亡', '亢', '交', '亥', '亦', '产', '亨', '亩', '享', '京', '亭', '亮', '亲', '人', '亿', '什', '仁', '仅', '仆', '仇', '今', '介', '仍', '从', '仑', '仓', '仔', '他', '仙', '仝', '仞', '仟', '仡', '令', '以', '仨', '仪', '仫', '们', '仰', '仲', '仳', '仵', '件', '价', '任', '份', '仿', '企', '伉', '伊', '伋', '伍', '伎', '伏', '伐', '休', '众', '优', '伙', '会', '伞', '伟', '传', '伢', '伤', '伥', '伦', '伪', '伫', '伯', '估', '伲', '伴', '伶', '伸', '伺', '似', '伽', '佃', '但', '佈', '位', '低', '住', '佐', '佑', '体', '何', '佗', '佘', '余', '佚', '佛', '作', '佝', '佞', '你', '佣', '佩', '佬', '佯', '佰', '佳', '佶', '佻', '佼', '佾', '使', '侃', '侄', '來', '侈', '例', '侍', '侏', '侑', '侔', '依', '侠', '侣', '侥', '侦', '侧', '侨', '侩', '侪', '侬', '侮', '侯', '侵', '便', '促', '俄', '俅', '俊', '俏', '俐', '俑', '俗', '俘', '保', '俞', '信', '俣', '俦', '俨', '俩', '俪', '俭', '修', '俯', '俱', '俺', '俸', '倌', '倍', '倏', '倒', '倔', '倘', '候', '倚', '倜', '借', '倡', '倥', '倦', '倨', '倪', '倬', '倭', '倲', '倾', '偃', '假', '偈', '偏', '偕', '做', '停', '健', '偬', '偶', '偷', '偿', '傀', '傅', '傈', '傍', '傣', '傥', '傧', '储', '傩', '催', '傲', '傻', '像', '僚', '僧', '僳', '僵', '僻', '儆', '儇', '儒', '儡', '儿', '允', '元', '兄', '充', '兆', '先', '光', '克', '免', '兑', '兖', '党', '兜', '兢', '入', '內', '全', '八', '公', '六', '兮', '兰', '共', '关', '兴', ...]
poem = [] #存放四行文字的列表
while True:
# 随机抽取四行七个字
line1 = random.sample(汉字列表, 7)
line2 = random.sample(汉字列表, 7)
line3 = random.sample(汉字列表, 7)
line4 = random.sample(汉字列表, 7)
# 检查每一行是否有相同的字
if len(set(line1)) == 7 and len(set(line2)) == 7 and len(set(line3)) == 7 and len(set(line4)) == 7 \
and len(set(line1) & set(line2) & set(line3) & set(line4)) == 0:
poem.append(''.join(line1))
poem.append(''.join(line2))
poem.append(''.join(line3))
poem.append(''.join(line4))
break
# 输出横版诗句
print(poem[0])
print(poem[1])
print(poem[2])
print(poem[3])
以上代码实现了题目的要求,生成了一个随机的横版诗句。