你是否曾好奇,仅需输入几个关键字,便可以轻而易举地制作出一篇看似“言之有物”的文章?这种所谓的“狗屁不通生成器”拥有这样的神奇功能,现在就让我们揭开它的神秘面纱!
发现生成器乐趣
我在网络上不经意间发现了一个令人啼笑皆非的生成器,立刻引起了我的兴趣。这个工具能迅速制造出看似颇有道理的文章。出于好奇,我萌生了自己编写一个类似有趣程序的念头。想象着自己能按照自己的想法创作文章,那种感觉一定很美妙。
import random as r
import json as j
构建生成器基础
def random_summon():
"""生成函数"""
filename='texts.json'
#指定主题
topic=input('请输入主题:')
#指定篇幅
n=input('请指定几句话(默认为100):')
try:
n=int(t)
except:
n=100
#文档的标题
t=r.randint(0,1)
if t==1:
f_name='%s%s%s'%('谈',topic,'.txt')
else:
f_name='%s%s%s'%('论',topic,'.txt')
#加载文本的句子素材
try:
with open(filename) as f:
sentences=j.load(f)
l1=sentences[0]
l2=sentences[1]
except:
with open(filename,'w') as f:
txt=[['加油,奥利给!'],['马克思说过:“生活就像海洋,只'
'有意志坚强的人,才能到达彼岸。”']]
j.dump(txt,f)
with open(filename) as f:
sentences=j.load(f)
l1=sentences[0]
l2=sentences[1]
#新建文档
article=open(f_name,'w')
#写作的主体循环
i=0#控制循环次数
ii=0#控制分段
n_p=r.randint(8,18)#每段的句子数量
while i<=n:
ii+=1
#从哪个素材库里面选句子
#l1是其他的话,l2是名人名言
zerone=r.randint(0,1)
if zerone == 0:
s_n=r.randint(0,len(l1)-1)
sentence=l1[s_n].replace('a',topic)
#这里,所有的a都被topic替换掉
#因为录入素材的时候用的是a作为替换内容
else:
s_n=r.randint(0,len(l2)-1)
sentence=l2[s_n].replace('a',topic)
#分段及换行
if ii == 1:
![图片[1]-用Python写文章目录狗屁不通生成器:究竟能产出怎样奇特的内容?:模块、训练工具与代码示例-东山笔记](data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20543%20444'%3E%3C/svg%3E)
sentence='%s%s'%('t',sentence)
elif ii == n_p:
sentence='%s%s'%(sentence,'n')
n_p=r.randint(8,18)#每段的句子数量
ii=0
#写进文章
article.write(sentence)
i+=1
article.close()
print('完成n')
为了构建这个生成器,我们需要依赖一些特定的组件。例如,Python中的基础组件是必不可少的,它们能够协助我们处理文本信息以及执行基础操作。借助这些组件,我们可以更加便捷地构建生成器的架构,并逐步提升其生成文章的能力。这些组件的支持使得我们距离成功更加接近。
训练工具登场
仅凭现有资源,所撰写的文章往往缺乏多样性。为了提升文章的丰富性和降低重复率,我们应当对存放文章素材的texts.json库进行扩展。然而,鉴于其采用json格式存储,我们无法直接进行内容粘贴,借助特定的工具进行更新。因此,相应的训练工具便应运而生。
import json as j
训练工具模块支撑
训练工具的运作离不开一些核心模块的支持。这些模块能够顺畅地处理json文件的读写及编辑等任务。它们协同工作,各司其职,使得训练工具在丰富素材库的过程中能更加高效,从而为生成后续文章提供更丰富的内容来源。
def train():
"""训练函数"""
filename='texts.json'
while True:
try:
f=open(filename,'r')
except:
#素材库不在,就创建一个
f=open(filename,'w')
txt=[['加油,奥利给!'],['马克思说过:“生活就像海洋,只'
'有意志坚强的人,才能到达彼岸。”']]
j.dump(txt,f)
f.close()
else:
sentence=input('说些什么吧,我会记住的哦~(输入q退出训练)n')
sentences=j.load(f)
if sentence == 'q':
break
else:
yn=input('这是名人名言吗? Y/Nn')
if yn == 'y' or 'Y':
sentences[1].append(sentence)
else:
sentences[0].append(sentence)
f.close()
with open(filename,'w') as texts:
j.dump(sentences,texts)
帮助函数可选配置
在制作生成器的过程中,我们会用到这样一个辅助函数。这个函数并非不可或缺,但它的存在确实能带来便利。它可以帮助核心功能更加顺畅地运行。在编写过程中,我们将一些辅助性的小功能整合进这个函数中,这样一来,主函数就能变得更加简洁。尽管这个函数并非,但加入它之后,代码的逻辑性会得到提升。
运行整合核心逻辑
def example():
"""帮助函数"""
print('举例:输入1n1n说些什么吧,我会记住的哦~(输入q退出训练)')
print('坚持就是胜利。n这是名人名言吗? Y/NnN')
print('说些什么吧,我会记住的哦~(输入q退出训练)nqn')
print('举例:输入2n2n请输入主题:学习')
print('请指定几句话(默认为100):120n完成n')
将之前编写的函数进行整合,编写一个执行函数。这个执行函数就如同一位指挥官,其任务是调度各个“士兵”。它依照既定的规则和顺序,依次调用先前定义好的函数,确保整个生成器系统能够有序运作。执行函数在整合与协调方面发挥着至关重要的作用。
你认为这个狗屁不通生成器在将来会有怎样的成长空间?若你觉得这篇内容对你有帮助,请记得点赞并转发!