赞
踩
在看到网上的狗屁不通生成器之后,我觉得挺有意思,于是也想用python写一个。
思路:
用到的模块:
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: 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')
为了丰富我们生成的文章的内容,尽量减少重复,我们要对素材库——texts.json,进行扩充。因为存储的是json格式所以需要转码,直接复制粘贴就行不通了,所以我们需要一个训练工具。
思路:
用到的模块
import json as j
上代码
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/N\n') 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)
废话不多(也没有可bb的了),上代码
def example():
"""帮助函数"""
print('举例:输入1\n1\n说些什么吧,我会记住的哦~(输入q退出训练)')
print('坚持就是胜利。\n这是名人名言吗? Y/N\nN')
print('说些什么吧,我会记住的哦~(输入q退出训练)\nq\n')
print('举例:输入2\n2\n请输入主题:学习')
print('请指定几句话(默认为100):120\n完成\n')
为了将以上所编写的函数组织起来,再编写一个简易的函数
废话不多,上代码
def run(): """运行函数""" c='' while c!='q'or'Q': c=input('请选择模式:\t0.帮助\t1.训练\t2.写作\t3.退出\n') try: c=int(c) except: print('请重新输入。\n') else: if c == 1: train() continue elif c == 2: random_summon() continue elif c == 0: example() continue elif c == 3: print('拜拜~') break else: print('请重新输入。\n') continue
import random as r import json as j #为了方便调用,我们把filename(素材库的变量名)定义在外面 global filename#这里不声明全局变量也可以 filename='texts.json' def random_summon(): """生成函数""" #指定主题 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: 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') def train(): """训练函数""" 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/N\n') 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('举例:输入1\n1\n说些什么吧,我会记住的哦~(输入q退出训练)') print('坚持就是胜利。\n这是名人名言吗? Y/N\nN') print('说些什么吧,我会记住的哦~(输入q退出训练)\nq\n') print('举例:输入2\n2\n请输入主题:学习') print('请指定几句话(默认为100):120\n完成\n') def run(): """运行函数""" c='' while c!='q'or'Q': c=input('请选择模式:\t0.帮助\t1.训练\t2.写作\t3.退出\n') try: c=int(c) except: print('请重新输入。\n') else: if c == 1: train() continue elif c == 2: random_summon() continue elif c == 0: example() continue elif c == 3: print('拜拜~') break else: print('请重新输入。\n') continue run()
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。