好多天没写了,今天用Python玩一个乱点鸳鸯谱生成七言绝句的游戏。
其实这个想法有好久了,以前一直觉得好多古诗是可以乱入的。前一段时间想突击学习Python,妄想着编一个EVE的内置商业助手。正好学到了列表一章,看到教材中的练习题,就编写了这样一个游戏。
一、效果
直接把生成的一些“大作”发出来搏诸君一笑:
二、如何实现目标
新建一个python程序
调用random库,为生成随机数据做装备
建立一个while循环,用变量on接收键盘输入值,输入Y就开始乱点鸳鸯谱生成随机七言绝句,输入N则退出程序。
生成各个韵调的七言诗句,然后拼合在一起,排序生成新的序列。
在多个韵调中随机抽取一个,第一、二、四句诗从这个系列中随机抽取。
每抽一句,则从序列中删除这一句,避免重复抽取。
四句合并,就形成了气死李杜的混搭七言绝句了。
三、主要代码
#这是一个古诗乱点鸳鸯谱程序
import random as rd
print("================随机七言绝句生成器================")
while True:
#明确开关值
on=str(input("请输入Y开始生成随机七言绝句,输入N退出程序:"))
if on=="Y" or on=="y":
#生成各个韶母的诗句库
ang=['君去试看汾水上','征马长思青海上','绿树浓阴夏日长','满架蔷薇一院香','丁丁漏永夜何长','漫漫轻云漏月光'] #其他自己去加
an=['岐王府里寻常见','故园东望路漫漫','双袖龙钟泪不干','凭君寄语报平安','走马西来欲到天','辞家见月二回圆'] #其他自己去加
en=['落花时节又逢君','崔九堂前几度闻','正是江南好风景','半入江风半入云','锦城丝管日纷纷','人间哪得几回闻'] #其他自己去加
yi=['黄四娘家花满蹊','千朵万朵压枝低','自在娇莺恰恰啼','马上相逢无纸笔','残雪压枝犹有橘','东去长安万里余'] #其他自己去加
wu=['留连戏蝶时时舞','今夜不知何处宿','也知乡信日亦疏','为报家人数寄书','故人何惜一纸书','况复明朝是岁除'] #其他自己去加
ou=['此曲只应天上有','西原驿路挂城头','客散江亭雨未收','白云尤似汉时秋','羌笛何须怨杨柳','泽国江山入战图'] #其他自己去加
a=['梁园日暮乱飞鸦','极目萧条三两家','春来还发旧时花','别梦依依到谢家','犹为离人照落花','更深月色半人家'] #其他自己去加
o=['借问梅花何处落','愿将此身长报国','淮南木落楚山多','顾影无如白发何','愧君犹遣慎风波','野芳虽晚不须嗟','江上月明胡雁过'] #其他自己去加
ei=['葡桃美酒夜光杯','欲饮琵琶马上催','古来征战几人回','不知马骨伤寒水','碧窗斜月霭深晖','不知何路向金微'] #其他自己去加
e=['枯桐叶落枝梢折','海畔风吹冻泥裂','红旗直上天山雪','小廊回合曲阑斜','多情只有春庭月','北斗栏干南斗斜'] #其他自己去加
ao=['醉卧沙场君莫笑','三戌渔洋再度辽','骍弓在臂剑横腰','休傍阴山更射雕','花径不曾缘客扫','生涯岂料承优诏','今日龙钟人共老'] #其他自己去加
ai=['池塘倒影入楼台','同来玩月人何在','梦里分明见关塞','水碧沙明两岸苔','不胜清怨却飞来','青山霁后云犹在'] #其他自己去加
ong=['人面桃花相映红','去年今日此门中','桃花依旧笑春风','泊舟微径度深松','画出东南四五峰','溪上遥闻精舍钟'] #其他自己去加
temp=sorted(ang+an+en+yi+wu+ou+a+o+ei+e+ao+a+ong) #合并生成新序列
#挑选韶调,eval函数很强大的哦
index=['ang','an','en','yi','wu','ou','a','o','ei','e','ao','a','ong']
xxx=eval(index[rd.randint(0,len(index)-1)])
print("-"*50)
print("\n已乱点鸳鸯谱生成七言绝句如下,请欣赏:\n")
str1=xxx[rd.randint(0,len(xxx)-1)] #生成第一句诗
xxx.remove(str1) #从列表中删除第一句诗句
temp.remove(str1)
print(" "*10,str1,",\n")
str2=xxx[rd.randint(0,len(xxx)-1)] #生成第二句诗
xxx.remove(str2) #从列表中删除第二句诗句
temp.remove(str2)
print(" "*10,str2,"。\n")
str3=temp[rd.randint(0,len(temp)-1)] #生成第三句诗
if xxx.count(str3)>0:xxx.remove(str3) #从列表中删除第三句诗句
temp.remove(str3)
print(" "*10,str3,",\n")
str4=xxx[rd.randint(0,len(xxx)-1)] #生成第四句诗
xxx.remove(str4) #从列表中删除第四句诗句
temp.remove(str4)
print(" "*10,str4,"。\n")
print("-"*50)
elif on=="N" or on=="n":
print("退出程序!再见!")
break
else:
print("只能输入Y或者N,请重来!\n\n\n")
(好吧,无论网游戏也好,编程也好,生活也好,于我们来说其实都不过是一场游戏。洞悉世界的本质之后你会发现一切都不过是0与1的集合。)
想要了解和学习更多的话,欢迎大家的加入:Python学习