用python可以做什么有趣的事作文_让Python给你讲笑话、段子,一个有趣的Python案例...

1 from tkinter import *

2 importtime3 importrequests4 from bs4 importBeautifulSoup5 importbs46 importrandom7 importre8 defgetHTMLText(url):9 try:10 r = requests.get(url, timeout=30)11 r.raise_for_status()12 #r.encoding = r.apparent_encoding

13 returnr.text14 except:15 print("faile")16 return ""

17 ​18 deffillUnivList(ulist, html):19 soup = BeautifulSoup(html, "html.parser")20 for tr in soup.find_all('article'):21 ifisinstance(tr, bs4.element.Tag):22 tds = tr('a')23 ulist.append([tds[0].string, tds[1].string, tds[2].string])24 defprintUnivList(ulist,k):25 returnulist[k][0]26 ​27 defgetduanzi():28 uinfo =[]29 k=1

30 u = 'http://duanziwang.com/category/%E4%B8%80%E5%8F%A5%E8%AF%9D%E6%AE%B5%E5%AD%90/'

31 i=random.randint(1,49)32 url=u+str(i)+'/'

33 html =getHTMLText(url)34 fillUnivList(uinfo, html)35 k=random.randint(0,9)36 returnprintUnivList(uinfo,k)37 deffill2(ulist,html):38 soup = BeautifulSoup(html, "html.parser")39 for tr in soup.find_all('div','article block untagged mb15 typs_hot'):40 ifisinstance(tr, bs4.element.Tag):41 tds = tr.find('div','content')42 tdss=tds('span')43 reg = re.compile('<[^>]*>')44 text=reg.sub('',str(tdss))45 regg = re.compile('\[|\]|\n')46 text=regg.sub('',text)47 ulist.append(text)48 defgetjoke():49 ulist=[]50 u='https://www.qiushibaike.com/text/page/'

51 i=random.randint(1,13)52 url=u+str(i)+'/'

53 html=getHTMLText(url)54 fill2(ulist,html)55 k=random.randint(0,16)56 #print(str(ulist[k]))

57 returnstr(ulist[k])58 defgetHTMLText2(url):59 try:60 r = requests.get(url, timeout=30)61 r.raise_for_status()62 r.encoding =r.apparent_encoding63 returnr.text64 except:65 return ""

66 defgeturl(url,text):67 html=getHTMLText2(url)68 soup = BeautifulSoup(html, "html.parser")69 for tds in soup.find_all('a'):70 #print(tds.string)

71 if str(tds.string) intext:72 #print(tds.attrs['href'])

73 return tds.attrs['href']74 return ''

75 defgetmoreurl(url):76 html=getHTMLText2(url)77 soup = BeautifulSoup(html, "html.parser")78 try:79 li=soup.find_all('li',attrs={'class':'articleTitle fl'})80 k=random.randint(0,len(li)-1)81 return li[k]('a')[0].attrs['href']82 except:83 return ''

84 defgetsen(url):85 html=getHTMLText2(url)86 soup = BeautifulSoup(html, "html.parser")87 try:88 li=soup.find('p')89 reg = re.compile('

.*')90 l=reg.findall(str(li))91 #print(l)

92 k=random.randint(0,len(l)-1)93 text=re.findall('[u4e00-u9fa5]+',l[k])94 x=''

95 iflen(text):96 for t in text[:-2]:97 x=x+t+','

98 return x+text[-1]+'。'

99 else:100 return "不好意思,出了点小问题,请重试!"

101 except:102 return "抱歉,没找到你想要的"

103 defgetsentance(text):104 start_url = 'http://www.siandian.com'

105 urll='http://www.siandian.com/tags.html'

106 end1=geturl(urll,text)107 if end1=='':108 return "抱歉,没有找到你想要的。"

109 else:110 end2=getmoreurl(start_url+end1)111 if end2=='':112 return "抱歉,没有找到你想要的。"

113 else:114 #print(start_url+end2)

115 return getsen(start_url+end2)116 defxiaotang(s):117 sign=1;118 while(sign):119 if '段子' ins:120 while('段子' in s or '继续' in s or '再来' in s or s==''):121 returngetduanzi()122 elif '笑话' ins:123 while('笑话' in s or '继续' in s or '再来' in s or s==''):124 returngetjoke()125 elif '句' in s or '话' ins:126 returngetsentance(s)127 elif '傻子' in s or '草' in s or '日' ins:128 return '这是脏话不可以说哦'

129 elif '二' in s or '垃圾' in s or '傻逼' ins:130 t='你是魔鬼吗?'

131 x=''

132 for i in range(10):133 x=x+t+'!'+'n'

134 returnx135 else:136 return "我好像不明白n"

137 defmain():138 defstart():139 strMsg = '小糖:' + time.strftime("%Y-%m-%d %H:%M:%S",140 time.localtime()) + 'n'

141 txtget.insert(END, strMsg, 'redcolor')142 txtget.insert(END, '你好,请问有什么可以帮忙的?')143 def sendMsg():#发送消息

144 t=txtMsg.get('0.0', END)145 txtMsg.delete('0.0', END)146 strMsg = '我:' + time.strftime("%Y-%m-%d %H:%M:%S",147 time.localtime()) + 'n'

148 for i in range(int(txtget.index(END).split(".")[0])-int(txtMsgList.index(END).split(".")[0])+1):149 txtMsgList.insert(END, 'n')150 txtMsgList.insert(END, strMsg, 'greencolor')151 txtMsgList.insert(END, t)152 txtMsgList.see(END)153 for i in range(int(txtMsgList.index(END).split(".")[0])-int(txtget.index(END).split(".")[0])+1):154 txtget.insert(END, 'n')155 txtget.see(END)156 ​157 ​158 ​159 strMsg = '小糖:' + time.strftime("%Y-%m-%d %H:%M:%S",160 time.localtime()) + 'n'

161 for i in range(int(txtMsgList.index(END).split(".")[0])-int(txtget.index(END).split(".")[0])+1):162 txtget.insert(END, 'n')163 txtget.insert(END, strMsg, 'redcolor')164 txtget.insert(END, xiaotang(t))165 txtget.see(END)166 for i in range(int(txtget.index(END).split(".")[0])-int(txtMsgList.index(END).split(".")[0])+1):167 txtMsgList.insert(END, 'n')168 txtMsgList.see(END)169 ​170 ​171 def cancelMsg():#取消消息

172 txtMsg.delete('0.0', END)173 ​174 def sendMsgEvent(event): #发送消息事件

175 sendMsg()176 ​177 #创建窗口

178 t =Tk()179 t.title('小糖助手')180 ​181 #创建frame容器

182 frmLT = Frame(width=500, height=320, bg='#F19C8B')183 frmLC = Frame(width=500, height=150, bg='#F19C8B')184 frmLB = Frame(width=500, height=30,bg='white')185 frmRT = Frame(width=200, height=500,bg='#F19C8B')186 ​187 #创建控件

188 txtMsgList = Text(frmLT,width=40,bd=0)189 txtMsgList.tag_config('greencolor', foreground='#008C00')#创建tag

190 txtMsg =Text(frmLC)191 txtget = Text(frmLT,width=40,bd=0)192 txtget.tag_config('redcolor', foreground='#DC143C')#创建tag

193 start()194 #txtMsg.bind("", sendMsgEvent)

195 txtMsg.bind('',sendMsgEvent)196 btnSend = Button(frmLB, text='发 送', width = 8, command=sendMsg,bg='#E88384',bd=0)197 btnCancel = Button(frmLB, text='取消', width = 8, command=cancelMsg,bg='#F3ADA0',bd=0)198 scollor=Scrollbar(bg='white')199 scollor.config(command=txtget.yview)200 scollor.config(command=txtMsgList.yview)201 txtget.config(yscrollcommand=scollor.set)202 txtMsgList.config(yscrollcommand=scollor.set)203 imgInfo = PhotoImage(file = "aa.png")204 lblImage = Label(frmRT, image =imgInfo)205 lblImage.image =imgInfo206 ​207 #窗口布局

208 frmLT.grid(row=0, column=0, columnspan=2, padx=0, pady=0)209 frmLC.grid(row=1, column=0, columnspan=2, padx=0, pady=0)210 frmLB.grid(row=2, column=0, columnspan=2,padx=0)211 scollor.grid(row=0,column=2,sticky=N+S)212 frmRT.grid(row=0, column=3, rowspan=3, padx=0, pady=0)213 #固定大小

214 frmLT.grid_propagate(0)215 frmLC.grid_propagate(0)216 frmLB.grid_propagate(0)217 frmRT.grid_propagate(0)218 ​219 btnSend.grid(row=2, column=0)220 btnCancel.grid(row=2, column=1)221 lblImage.grid()222 txtget.grid(row=0,column=0)223 ​224 txtMsgList.grid(row=0,column=1)225 ​226 txtMsg.grid()227 ​228 #主事件循环

229 t.mainloop()230 ​231 if __name__ == '__main__':232 main()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值