python实践报告标题_20192111 实验四《Python综合实践》实验报告

20192111 2019-2020-2 《Python程序设计》实验四报告

课程:《Python程序设计》

班级: 1921

姓名: 蒋龙腾

学号:20192111

实验教师:王志强

实验日期:2020年5月28日

必修/选修: 公选课

1.实验内容

1.解析某网站的hxml,得到了一些关于《明日方舟》游戏内容的资料

2.将资料总结整理并且修改

3.仿照游戏内的抽卡内容,制作了一个抽卡的游戏小软件

2. 实验过程及结果

from bs4 import BeautifulSoup

import os

from tkinter import *

import tkinter.messagebox

from time import sleep

import random

import webbrowser

# dir_path = os.path.dirname(os.path.abspath(__file__))

# os.chdir(dir_path)

file = open('Kokodayo ArknightsData kkdy 一个平平无奇的明日方舟数据库 1.0 Wiki 维基 数据.html','rb')

html = file.read()

soup = BeautifulSoup(html,"html.parser")

sp = soup.find_all(class_ ='profile-container')

str1 = str(sp[0])

# print(str1)

listurl = []

listname = []

sp2 = soup.find_all(class_ ='profile-item-inner-wrapper')

for y in sp2:

str2 = str(y)

pattern2 = re.compile(r'href="(.*?)"')

result2 = pattern2.findall(str2)

listurl.append(result2[0])

# print(result2[0])

# print(listurl)

sp3 = soup.find_all(class_ ='image-inner')

for x in sp3:

str3 = str(x)

pattern3 = re.compile(r'alt="(.*?)"')

result3 = pattern3.findall(str3)

listname.append(result3[0])

# print(result3[0])

# print(listname)

lista = listname.copy()

for z1 in range(0,2):

listname.append(listname[2])

listname.append(listname[5])

listname.append(listname[6])

listname.append(listname[10])

listname.append(listname[11])

listname.append(listname[15])

listname.append(listname[18])

listname.append(listname[19])

listname.append(listname[21])

listname.append(listname[23])

listname.append(listname[24])

listname.append(listname[26])

listname.append(listname[27])

listname.append(listname[29])

listname.append(listname[32])

listname.append(listname[33])

listname.append(listname[37])

listname.append(listname[40])

listname.append(listname[41])

listname.append(listname[44])

listname.append(listname[49])

listname.append(listname[65])

listname.append(listname[66])

listname.append(listname[67])

listname.append(listname[68])

listname.append(listname[69])

listname.append(listname[70])

listname.append(listname[71])

listname.append(listname[72])

listname.append(listname[73])

listname.append(listname[74])

listname.append(listname[75])

listname.append(listname[76])

listname.append(listname[77])

listname.append(listname[78])

listname.append(listname[79])

listname.append(listname[80])

listname.append(listname[81])

listname.append(listname[82])

listname.append(listname[83])

listname.append(listname[84])

listname.append(listname[85])

listname.append(listname[86])

listname.append(listname[87])

listname.append(listname[89])

listname.append(listname[90])

listname.append(listname[91])

listname.append(listname[92])

for z2 in range(0,9):

listname.append(listname[7])

listname.append(listname[8])

listname.append(listname[12])

listname.append(listname[13])

listname.append(listname[22])

listname.append(listname[28])

listname.append(listname[30])

listname.append(listname[34])

listname.append(listname[35])

listname.append(listname[38])

listname.append(listname[42])

listname.append(listname[45])

listname.append(listname[51])

listname.append(listname[93])

listname.append(listname[94])

listname.append(listname[95])

listname.append(listname[96])

listname.append(listname[97])

listname.append(listname[98])

listname.append(listname[99])

listname.append(listname[100])

listname.append(listname[101])

listname.append(listname[102])

listname.append(listname[103])

listname.append(listname[104])

listname.append(listname[105])

listname.append(listname[106])

listname.append(listname[107])

listname.append(listname[108])

listname.append(listname[109])

listname.append(listname[110])

listname.append(listname[111])

listname.append(listname[112])

listname.append(listname[113])

listname.append(listname[114])

listname.append(listname[115])

listname.append(listname[116])

for z3 in range(0,14):

listname.append(listname[46])

listname.append(listname[47])

listname.append(listname[52])

listname.append(listname[53])

listname.append(listname[117])

listname.append(listname[118])

listname.append(listname[119])

listname.append(listname[120])

listname.append(listname[121])

listname.append(listname[122])

listname.append(listname[123])

listname.append(listname[124])

listname.append(listname[125])

listname.append(listname[126])

listname.append(listname[127])

listname.append(listname[128])

listname.append(listname[129])

for z4 in range(0,19):

listname.append(listname[130])

listname.append(listname[131])

listname.append(listname[132])

listname.append(listname[133])

listname.append(listname[134])

window = Tk()

window.title('明日方舟模拟抽卡器')

window.geometry('997x766')

window.iconphoto(True, PhotoImage(file='kroos.png'))

var = StringVar()

photo = PhotoImage(file="BG.png")

l = Label(window, textvariable=var, image=photo,compound = CENTER, fg='black', font=('楷体', 36, 'bold'),justify=LEFT)

l.place(x=498.5, y=383, anchor='center')

on_hit = False

def hit_me():

global on_hit

if on_hit == False:

var.set("正在抽卡。。。")

sleep(1)

p = random.randint(0, len(listname)-1)

q = listname.index(listname[p])

if q in [2,5,6,10,11,15,18,19,21,23,24,26,27,29,32,33,37,40,41,44,49,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92]:

a = "恭喜!五星!你有一副欧洲人的面孔"

elif q in [7,8,12,13,22,28,30,34,35,38,42,45,51,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116]:

a = "可惜!四星!下一抽一定会出货"

elif q in [46,47,52,53,117,118,119,120,121,122,123,124,125,126,127,128,129]:

a = "惨!三星!你的肤色一定很健康"

elif q in [130,131,132,133,134]:

a = "二星。。。没救了,抬走吧"

else:

a = "WTF?!!!欧皇分我点欧气好吗,秋梨膏!"

tkinter.messagebox.showinfo(title='foo↑foo↑', message=a)

text = Text(window, width=50, height=1)

text.place(x=498.5, y=200, anchor='center')

text.insert(INSERT, listurl[q])

c = len(listurl[q])

text.tag_add('link', '1.0', str(1+c/100))

text.tag_config('link', foreground='black', underline=True)

def show_arrow_cursor(event):

text.config(cursor='arrow')

def show_xterm_cursor(event):

text.config(cursor='xterm')

def click(event):

webbrowser.open(listurl[q])

text.tag_bind('link', '', show_arrow_cursor)

text.tag_bind('link', '', show_xterm_cursor)

text.tag_bind('link', '', click)

var.set(listname[p])

b = Button(window, text='抽卡', font=('楷体', 24), width=10, height=1, command=hit_me)

b.place(x=498.5, y=600, anchor='center')

window.mainloop()

file.close()

结果展示:

fd89728d3ed1e3649d3c475ec4727651.png

8f0270a35caeae522cef0fca61d4be38.png

fdd4ae2530cd3d08f25f87fd18a38dda.png

码云链接:

应用下载:

提取码:6u1j

3. 实验过程中遇到的问题和解决过程

问题1:标签太杂太乱,需要的数据很难找到

问题1解决方案:打开原网页的界面用F12的开发者调试工具来找到对应数据的标签和属性

问题2:需要提取的数据内容在标签的属性中

问题2解决方案:利用正则表达式筛选整个字符串当中的herf属性,并将其中的数据保存到一个列表里方便调用

问题3:列表当中的数据都是平权的,我需要一个加权的功能,但是扩张列表之后要定位到原来的数据很困难

问题3:解决方案:利用copy函数在加权之前新建一个列表,并用index函数找到扩张列表中第一个被筛选出的数据的位置(即在原列表中的位置)

问题4:py文件需要转化成可执行文件使用

问题4:解决方案:安装pyinstaller,在命令行执行相应命令进行打包

问题5:更改窗口图标时,用iconbitmap函数无法准确定位ico图片所在路径

问题5:解决方案:改用iconphoto函数,默认是py文件所在的相对路径

其他(感悟、思考等)

感悟:

学习一门编程语言是很难的,在这短暂的一学期中深深体会到了这一点,特别是对于我们大一新生来说,连C语言都刚刚开始起步的我们更是难上加难。可是越是如此,越能狠下心来钻研,不懂的地方一定要弄懂,为此反复百度,查阅各种资料。等到当下的问题解决了之后,回过头才发现自己的水平更上一层楼,不仅仅是对问题的解答,更是对整个逻辑思维的更深入理解,对于我们计算机系的同学来说,这份理解是最最难得可贵的。感谢王老师一学期来的陪伴,收获颇丰,感激之情,溢于言表。课结了,但是python语言学习远远不止如此,没有人能在一学期内掌握一门语言,所以未来我也会更加努力,更深入的探究python的奥秘。

参考资料

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值