Python安装扩展库常用工具,Python安装matplotlib

本篇文章给大家谈谈Python安装第三方库的命令,以及Python安装扩展库常用工具,希望对各位有所帮助,不要忘了收藏本站喔。

大家好,小编为大家解答python报告的心得体会的问题。很多人还不知道python总结报告1000字,现在让我们一起来看看吧!

大家好,小编来为大家解答以下问题,一个有趣的事情,一个有趣的事情,今天让我们一起来看看吧!

20192416 实验四 《Python程序设计》 综合实践报告

课程:《Python程序设计》

班级:1924

姓名:不愿透露姓名的はんたくさん

学号:20192416

实验教师:王志强老师

实验日期:2020年6月11日

必修/选修: 公选课

1.实验分析

相较之下个人对游戏比较感兴趣,于是选择了趣味性较强且容易上手的pygame作为综合实践的内容。

通过观看嵩天教授的视频进行自学,在事件处理机制中学会了通过键盘、鼠标进行交互以及时间的计算方法火车采集器伪原创【php源码】快码论文。

于是想把所学到的结合起来,制作一个可以通过键盘与鼠标操纵、并根据通关时间结算最终得分的小游戏,恰好想起上次考科目三没过,于是以考试线路为地图进行制作。

2.实验设计

第一步:设计地图

这里以科目三考试线路为原型,最终得出了一个1400×900的地图

将障碍分为横竖两类,分别导入各自的位置上。

第二步:操纵小飞船

键盘上通过KEYDOWN、KEYUP事件实现小飞船的加速减速

鼠标通过MOUSEBUTTONDOWN、MOUSEBUTTONUP以及MOUSEMOTION事件使小飞船能在鼠标按下的时候随鼠标移动

这是小飞船:

第三步:判断失败及成功条件

失败条件判断:既小飞船与障碍重合时,可以通过循环分别判断各个障碍是否与小飞船有重合部分

成功条件判断:当小飞船完全进入右下方区域时成功

位置判断用.left .right 等属性进行分析

第四步:结果

成功与失败都有各自的图片出现在屏幕中央,点击图片退出游戏,退出前打印游戏结果

图片的点击利用MOUSEBUTTONDOWN事件的.button属性判断左键的按下。

.pos[]返回的鼠标位置在图片范围内来确定游戏的退出。

循环中递增的num值计算当前时间以计算得分。

3.实验内容

爬虫、数据处理、可视化、机器学习、神经网络、游戏、网络安全等。

我选择用pygame制作了一个飞船小游戏

4. 实验过程及结果

功能

飞船小游戏

能通过键盘和鼠标操控飞船

碰到障碍则失败,弹出失败图片,点击图片退出游戏

到达右下角的终点则成功,弹出成功图片,点击图片退出游戏

根据通关的时间决定分数

代码

import pygame,sys #将pygame库导入到python程序中

from pygame.locals import * #然后需要引入pygame中的所有常量

() #初始化

size = width,height = 1400,900

screen = pygame.display.set_mode(size) #定义窗口大小

pygame.display.set_caption("我的第一个pygame") #设置窗口标题

speed = [0,0] #初始速度

nspeed = [0,5]

WHITE = 255,255,255

num = 0

n = 0

n1 = 33 #障碍数

n2 = 39

still = False #以上均为对各变量的初始定义

car = (r'D:/abiancheng/. ')

lose = (r'D:/abiancheng/. ')

win = (r'D:/abiancheng/. ')

mod = {} #导入障碍物的图像

mod[0] = (r'D:/abiancheng/. python/tu/横障碍.png') #横障碍物

mod[1] = (r'D:/abiancheng/. python/tu/竖障碍.png') #竖障碍物

carrect = car.get_rect() #返回矩形图像

carrect = (10,420)

loserect = lose.get_rect()

loserect = (1000,1000)

winrect = win.get_rect()

winrect = (1000,1000)

fps = 50

fclock = .Clock()

HENG = {}

i=0

while i<=n1:

HENG[i] = mod[0].get_rect()

i+=1

SHU = {}

i=0

while i<=n2:

SHU[i] = mod[1].get_rect()

i+=1

i = 0

while i<=8:

HENG[i] = HENG[i].move((i+1)*100,0)

i+=1

while i<=13:

HENG[i] = HENG[i].move((i-6)*100,100)

i+=1

while i<=18:

HENG[i] = HENG[i].move((i-11)*100,200)

i+=1

HENG[19] = HENG[19].move(0,400)

HENG[20] = HENG[20].move(0,500)

i = 21

while i<=24:

HENG[i] = HENG[i].move((i-11)*100,700)

i+=1

while i<=30:

HENG[i] = HENG[i].move((i-17)*100,895)

i+=1

while i<=33:

HENG[i] = HENG[i].move((i-21)*100,800)

i+=1

i=0

while i<=3:

SHU[i] = SHU[i].move(100,i*100)

i+=1

while i<=7:

SHU[i] = SHU[i].move(100,(i+1)*100)

i+=1

while i<=13:

SHU[i] = SHU[i].move(200,(i-6)*100)

i+=1

while i<=20:

SHU[i] = SHU[i].move(300,(i-12)*100)

i+=1

while i<=27:

SHU[i] = SHU[i].move(800,(i-19)*100)

i+=1

while i<=32:

SHU[i] = SHU[i].move(900,(i-26)*100)

i+=1

while i<=39:

SHU[i] = SHU[i].move(1000,(i-33)*100)

i+=1

#以上均为各单位的初始位置设置

while True: #无限循环,直到游戏结束时退出

for event in (): #从pygame的事件队列中取出事件,并从队列中删除该事件

if == : 是pygame中定义的事件常量

() #用于退出结束游戏并退出

elif == pygame.KEYDOWN: #键盘的松放进行对应方向速度的增加

if == pygame.K_LEFT:

speed[0] = speed[0] - 1

elif == pygame.K_RIGHT:

speed[0] = speed[0] + 1

elif == pygame.K_UP:

speed[1] = speed[1] - 1

elif == pygame.K_DOWN:

speed[1] = speed[1] + 1

elif == pygame.KEYUP:

if == pygame.K_LEFT:

speed[0] = speed[0] - 1

elif == pygame.K_RIGHT:

speed[0] = speed[0] + 1

elif == pygame.K_UP:

speed[1] = speed[1] - 1

elif == pygame.K_DOWN:

speed[1] = speed[1] + 1

elif == pygame.MOUSEBUTTONDOWN: #鼠标控制小飞船移动

if event.button == 1:

still = True

elif == pygame.MOUSEBUTTONUP:

still = False

if event.button == 1:

carrect = ([0] - - 20,[1] - - 20)

elif == pygame.MOUSEMOTION:

if event.buttons[0] == 1:

carrect = ([0] - - 20,[1] - - 20)

num +=1

i = 0

while i <= n2: #判断是否碰到障碍

if SHU[i].right and ((>SHU[i].top and SHU[i].top and carrect.bottom

speed[0]=speed[1]=0

loserect = lose.get_rect()

loserect = (500,250)

(lose,loserect)

if == pygame.MOUSEBUTTONDOWN:

if event.button == 1:

if [0] > and [0] < loserect.right and [1] > and [1] < loserect.bottom:

print("lose")

()

i +=1

i = 0

while i <= n1:

if HENG[i].bottom and ((carrect.right>HENG[i].left and carrect.rightSHU[i].left and

speed[0]=speed[1]=0

loserect = lose.get_rect()

loserect = (500,250)

(lose,loserect)

if == pygame.MOUSEBUTTONDOWN:

if event.button == 1:

if [0] > and [0] < loserect.right and [1] > and [1] < loserect.bottom:

print("you lose")

()

i +=1

if >1300 and carrect.right<1400 and >700 and carrect.bottom<900: #判断是否进入目标区域

speed[0]=speed[1]=0

winrect = win.get_rect()

winrect = (600,350)

(win,winrect)

if == pygame.MOUSEBUTTONDOWN:

if event.button == 1:

if [0] > and [0] < winrect.right and [1] > and [1] < winrect.bottom:

print("you win")

if num>1000:

print("score:0/1000")

else:

print("score:",1000-num,"/1000")

()

carrect = (speed[0],speed[1]) #车的惯性移动

if < 0 or carrect.right > width: #车的碰壁反弹

speed[0]=-speed[0]

if < 0 or carrect.bottom > height:

speed[1]=-speed[1]

(WHITE) #屏幕刷新

(car,carrect)

(lose,loserect)

(win,winrect)

i=0

while i<=n1:

(mod[0],HENG[i])

i+=1

i=0

while i<=n2:

(mod[1],SHU[i])

i+=1

pygame.display.update() #刷新显示窗口

(fps)

实验结果截图

以及

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

问题1:边界判定比较复杂

问题1解决方案:冷静分析

问题2:导入图片失败

问题2解决方案:通过上网查找以及视频弹幕得知()括号中填r+"绝对路径"

问题3:成功及失败时,最后的图片没有显示出来

问题3解决方案:经过数次尝试,发现要及时刷新屏幕,不然图片是无法出现的。屏幕的刷新是pygame的核心部分。

课程感想体会

上了王老师的课的第一感受就是王老师的教学水平很高,总是能将复杂晦涩抽象的东西简单化,让我们对其有更加深入的理解。此外,王老师也总是和学生们打成一片,和学生对发表情包的老师又有谁不爱呢?至于我自身的学习方面,因为大一上学期的自学python让我有了一定基础,在课程前期的学习中比较轻松。但随着学习内容的深入,我开始渐渐有些难以跟上老师教学的步伐了。由于基础不够扎实,总是会遇到各种各样的问题,虽然云班课中的教学资源非常充足,但过多的视频学习资源同时让人生畏,难以提起学习积极性来。在上课时,我总觉得有些知识点还没弄透就学到了下一章节,对于基础不好的同学不够友好。所以我建议老师开设单双学期的课程,单学期教授基础课程,双学期教授提高课程,让萌新与大佬分隔开来,各取所需。即便如此学习的路程磕磕绊绊,我依然还是随着老师的脚步,对python各个方面的内容都进行了一定方面的学习,尤其是网络编程技术与网络爬虫,给我打开了新世界的大门,感谢王老师的辛勤付出及一个学期的陪伴。

  • 15
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先需要了解得物网站的数据结构和爬取方式,得物网站比较复杂,需要使用Selenium+BeautifulSoup进行爬取。 以下是一个简单的得物爬虫Python代码实现(注:仅供学习参考,请勿用于商业用途): ```python import time from selenium import webdriver from selenium.webdriver.chrome.options import Options from bs4 import BeautifulSoup options = Options() options.add_argument('--no-sandbox') # 解决DevToolsActivePort文件不存在报错的问题 options.add_argument('window-size=1920x3000') # 指定浏览器分辨率 options.add_argument('--disable-gpu') # 谷歌文档提到需要加上这个属性来规避bug options.add_argument('--hide-scrollbars') # 隐藏滚动条, 应对一些特殊页面 options.add_argument('blink-settings=imagesEnabled=false') # 不加载图片, 提升速度 options.add_argument('--headless') # 无界面 driver = webdriver.Chrome(options=options) url = 'https://www.dewu.com/' driver.get(url) # 等待页面加载完成 time.sleep(3) # 模拟鼠标点击,展开商品列表 driver.find_element_by_xpath('//div[text()="全部商品"]').click() # 等待页面加载完成 time.sleep(3) # 获取页面源代码 html = driver.page_source # 解析页面 soup = BeautifulSoup(html, 'html.parser') # 获取商品列表 items = soup.find_all('div', {'class': 'item-card'}) for item in items: # 获取商品标题 title = item.find('div', {'class': 'title'}).text.strip() # 获取商品价格 price = item.find('div', {'class': 'price'}).text.strip() # 获取商品链接 link = item.find('a', {'class': 'item-link'})['href'] print(title, price, link) # 关闭浏览器 driver.quit() ``` 这里的代码仅仅是一个简单的爬虫示例,如果想要更加深入地了解得物网站的数据结构和爬取方式,需要结合具体的需求进行更加详细的分析和实现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值