20223305 高赫彬 2023-2024-2 《Python程序设计》实验四报告
课程:《Python程序设计》
班级: 2233
姓名: 高赫彬
学号:20223305
实验教师:王志强
实验日期:2024年5月15日
必修/选修: 公选课
1.实验目的:
Python综合应用:爬虫、数据处理、可视化、机器学习、神经网络、游戏、网络安全等。
1、编写从社交网络爬取数据,实现可视化舆情监控或者情感分析。
2、利用公开数据集,开展图像分类、恶意软件检测等
3、利用Python库,基于OCR技术实现自动化提取图片中数据,并填入excel中。
4、爬取天气数据,实现自动化微信提醒
5、利用爬虫,实现自动化下载网站视频、文件等。
6、编写小游戏:坦克大战、贪吃蛇、扫雷等等
2.实验内容:
设计的是一款功能较为简易的CPS检测器。采用的是pygame模块。
3.实验过程及结果:
此小程序设计的思路为:有三个界面,分别是开始界面,测试界面,结算界面;测试CPS是通过每秒点击鼠标次数实现的,故采用pygame中的clock模块配合变量自增计时;
同时鼠标点击按钮使用按钮的碰撞箱与鼠标重合与否和鼠标是否点下时间双重判定。
检测过程中,鼠标点击检测采用了前后状态判别。当前一时刻状态为0,后一时刻状态为1时才能判定为按下一次。
于是写出的代码如下:
import pygame
import sys
import random
def background():
screen.fill((0,0,0))
screen.blit(back,(0,0))
def startfont():
screen.blit(font.render('welcome to the cps detector!',1,(255,255,255)),(100,50))
screen.blit(font.render('click on the diamond block to begin!',1,(255,255,255)),(200,100))
screen.blit(db,((wid-db_w)/2,(hig-db_h)/2))
def detecting(m_sta_p,m_sta_n,score,tim):
m_sta_p = m_sta_n
screen.blit(font.render('now click as fast as you can!',1,(255,255,255)),(wid/2-200,hig/4))
if(event.type == pygame.MOUSEBUTTONDOWN):
m_sta_n = 1
else:
m_sta_n = 0
if(m_sta_p == 0 and m_sta_n == 1):
score = score + 1
screen.blit(font.render('click!',1,(255,255,255)),(random.randint(0,wid),random.randint(0,hig)))
screen.blit(font.render('your score:'+str(score),1,(255,255,255)),(wid/2-200,hig/4+100))
tim = tim + 1
screen.blit(font.render('time left:'+str("{:.3f}".format(5-tim/1000)),1,(255,255,255)),(wid/2-200,hig*3/4))
return (m_sta_p,m_sta_n,score,tim)
def saa(score):
screen.blit(font.render('you have clicked '+str(score)+' times in 5 seconds!',1,(255,255,255)),(wid/2-300,hig/3))
screen.blit(font.render('your cps is: '+str(score/5),1,(255,255,255)),(wid/2-200,hig/2))
screen.blit(font.render('click the grassblock to return to the title',1,(255,255,255)),(100,540))
screen.blit(gb,(1080-db_w/2,540-db_h/2))
pygame.init()
pygame.font.init()
size = wid , hig = 1280,640
font = pygame.font.SysFont("Minecraft",50)
clock =pygame.time.Clock()
screen=pygame.display.set_mode(size)
back = pygame.image.load("back1.png")
back = pygame.transform.scale(back,size)
db = pygame.image.load("diamond_block.png")
db_size = db_w , db_h = pygame.Surface.get_size(db)
db_pos = db.get_rect(center = (wid/2,hig/2))
gb = pygame.image.load("grass_block.png")
gb = pygame.transform.scale(gb,db_size)
gb_w , gb_h = pygame.Surface.get_size(gb)
gb_pos = gb.get_rect(center = (1080,540))
score = 0
sta1 , end1=0,0
m_sta_n,m_sta_p=0,0
tim = 0
while True:
clock.tick(1000)
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
background()
if(sta1 == 0 and end1 == 0):
startfont()
m_pos = pygame.mouse.get_pos()
if(db_pos.collidepoint(*m_pos)):
if event.type == pygame.MOUSEBUTTONDOWN:
sta1 = 1
elif(sta1 == 1 and end1 == 0):
m_sta_p,m_sta_n,score,tim = detecting(m_sta_p,m_sta_n,score,tim)
if(tim >= 5000):
end1 = 1
elif(sta1 == 1 and end1 == 1):
saa(score)
m_pos = pygame.mouse.get_pos()
if(gb_pos.collidepoint(*m_pos)):
if event.type == pygame.MOUSEBUTTONDOWN:
sta1 , end1 = 0,0
m_sta_p,m_sta_n,score,tim = 0,0,0,0
pygame.display.flip()
最后得到的结果是这样的:
4.实验遇到的问题:
- q1:图片导入显示不存在
- a1:检查了好久之后才发现,vscode终端默认运行文件夹为打开的文件夹,因此必须在终端中输入进入文件夹的指令才能够使用。
- q2:开关使用失灵
- a2:后发现,是开关写错了
5.实验感想:
从这个实验同样能够看出python与c程序中存在的不同。如&&不等于&,事实上这一点在c语言中也是同样的。c语言中的&&在Python中对应为and。
python让我又一次感到数字与代码的庞大。每一个网站,每一张图片,每一个游戏,背后都是无数的数据,无数的代码。切身感受到了自我创造的快乐。
6.课程总结:
作为一门面向对象的编程,python较c语言也许更为浅显易懂,但二者仍存在许多共同点。python从最基本的变量,到关键字,到列表元组字典集合,再到函数模块,乃至爬虫等技术,无一不有着巨大的运用空间。真的是“人生苦短,我用python”了。四个实验更是一步一个台阶,循序渐进地让我看到了数字世界的魅力。只要想,每个人都可以拥有一个属于自己的网站,成为互联网中的一部分,那该是多么美好啊:D
这门课的课堂诙谐有趣,我个人认为是一门不可或缺的好课。唯一的缺点感觉在于人太多了,电源没电。事实上我很喜欢这种理论与实践相结合的课堂。谢谢老师,谢谢python。
相关推荐
政府科技管理者如何提升科技成果转化项目进场交易的备案效率?.docx
政府科技管理者如何提升科技成果转化项目进场交易的备案效率?
山区道路边坡落石隐患检测数据集VOC+YOLO格式241张1类别.md
【重要提示】本页面仅为资源介绍,不含外部下载地址 亲爱的 CSDN 用户: 感谢你浏览本资源页面,在这里提前向大家说明相关情况,避免后续产生误解。本资源我设置的初衷是 0 积分免费分享文档介绍,希望可以无偿给到有需要的朋友。但 CSDN 平台存在自动调控机制,系统会根据资源下载热度、文件体积、平台规则等因素,自动修改资源所需下载积分,页面显示为 1 积分、2 积分或更高积分都属于平台自动调整结果,并非我手动修改设置,我没有权限自主锁定积分数值。 如果你打开页面后,发现下载所需积分不为 0,请务必谨慎考虑是否下载。一旦你支付积分完成下载,后续遇到资源内容和描述不符、文件损坏等问题,我无法承担对应的积分损失,也没有渠道为你办理积分退还。在此强烈建议,只有页面明确显示 0 积分的时候,再进行下载操作。 同时特别说明:这份资源介绍文案里,没有附带任何外部下载地址。资源本身是通过 CSDN 官方上传通道上传的附件,正常情况下直接点击页面自带的下载按钮即可获取文件。页面找不到外部下载链接属于正常情况,并非资源缺失。 如果因为平台积分显示异常,导致你被扣取积分,积分退款、积分异常相关问题,请直接联系 CSDN 官方客服咨询处理。平台规则由官方制定,我无法干预积分变动,望各位理解。
高空作业栏杆检测数据集VOC+YOLO格式230张3类别.md
【重要提示】本页面仅为资源介绍,不含外部下载地址 亲爱的 CSDN 用户: 感谢你浏览本资源页面,在这里提前向大家说明相关情况,避免后续产生误解。本资源我设置的初衷是 0 积分免费分享文档介绍,希望可以无偿给到有需要的朋友。但 CSDN 平台存在自动调控机制,系统会根据资源下载热度、文件体积、平台规则等因素,自动修改资源所需下载积分,页面显示为 1 积分、2 积分或更高积分都属于平台自动调整结果,并非我手动修改设置,我没有权限自主锁定积分数值。 如果你打开页面后,发现下载所需积分不为 0,请务必谨慎考虑是否下载。一旦你支付积分完成下载,后续遇到资源内容和描述不符、文件损坏等问题,我无法承担对应的积分损失,也没有渠道为你办理积分退还。在此强烈建议,只有页面明确显示 0 积分的时候,再进行下载操作。 同时特别说明:这份资源介绍文案里,没有附带任何外部下载地址。资源本身是通过 CSDN 官方上传通道上传的附件,正常情况下直接点击页面自带的下载按钮即可获取文件。页面找不到外部下载链接属于正常情况,并非资源缺失。 如果因为平台积分显示异常,导致你被扣取积分,积分退款、积分异常相关问题,请直接联系 CSDN 官方客服咨询处理。平台规则由官方制定,我无法干预积分变动,望各位理解。
ti-cgt-c2000-22.6.0.LTS-windows-x64-installer
ti-cgt-c2000-22.6.0.LTS-windows-x64-installer
光伏板太阳能板尘土灰尘脏污检测数据集VOC+YOLO格式1006张3类别.md
【重要提示】本页面仅为资源介绍,不含外部下载地址 亲爱的 CSDN 用户: 感谢你浏览本资源页面,在这里提前向大家说明相关情况,避免后续产生误解。本资源我设置的初衷是 0 积分免费分享文档介绍,希望可以无偿给到有需要的朋友。但 CSDN 平台存在自动调控机制,系统会根据资源下载热度、文件体积、平台规则等因素,自动修改资源所需下载积分,页面显示为 1 积分、2 积分或更高积分都属于平台自动调整结果,并非我手动修改设置,我没有权限自主锁定积分数值。 如果你打开页面后,发现下载所需积分不为 0,请务必谨慎考虑是否下载。一旦你支付积分完成下载,后续遇到资源内容和描述不符、文件损坏等问题,我无法承担对应的积分损失,也没有渠道为你办理积分退还。在此强烈建议,只有页面明确显示 0 积分的时候,再进行下载操作。 同时特别说明:这份资源介绍文案里,没有附带任何外部下载地址。资源本身是通过 CSDN 官方上传通道上传的附件,正常情况下直接点击页面自带的下载按钮即可获取文件。页面找不到外部下载链接属于正常情况,并非资源缺失。 如果因为平台积分显示异常,导致你被扣取积分,积分退款、积分异常相关问题,请直接联系 CSDN 官方客服咨询处理。平台规则由官方制定,我无法干预积分变动,望各位理解。



