Original: https://www.cnblogs.com/sn520/p/15784287.html
Author: Python可乐呀
Title: 使用Python 爬取京东、淘宝等商品详情页的数据,避开反爬虫机制
相关阅读1
Title: Python小游戏——外星人入侵(保姆级教程)第一章 09重构check_events()
系列文章目录
第一章:武装飞船
09重构check_events()
一、重构
1.重构原因
随着游戏的开发,方法_check_events()将越来越长。因此将其部分代码放在两个方法中,其中一个处理KEYDOWN事件,另一个处理KEYUP事件:
2.重构的方法
我们创建了两个新的辅助方法:_check_keydown_events()和_check_keyup_events()。它们都包含形参self和event。这两个方法的代码是从_check_events()中复制而来的,因此将方法_check_events()中相应的代码替换成了对这两个新方法的调用。现在,方法_check_events()更简单,代码结构也更清晰,在其中响应玩家输入时将更容易。
二、代码及演示
1.修改game_functions
修改文件:game_functions.py
点击查看代码
#渗透小红帽python的学习之路
#外星人入侵小游戏
#game_functions.py
#存储让游戏运行的函数
import sys
import pygame
#响应键盘函数
def check_keydown_events(event,ship):
if event.key == pygame.K_RIGHT:
# 移动飞船
ship.moving_right = True
# 玩家按下右箭头键时标志设为true
elif event.key == pygame.K_LEFT:
ship.moving_left = True
# 玩家按下左箭头键时标志设为true
#响应松开按键的函数
def check_keyup_events(event,ship):
if event.key == pygame.K_RIGHT:
ship.moving_right = False
# 玩家松开右箭头键时标志设为false
elif event.key == pygame.K_LEFT:
ship.moving_left = False
# 玩家松开左箭头键时标志设为false
def check_events(ship): # 在玩家按右箭头时需要将飞船向右移动,
# 所以给函数加上了形参ship
for event in pygame.event.get(): # 监听键盘和鼠标事件
if event.type == pygame.QUIT:
sys.exit()
#修改alien_invasion.py,使其导入game_functions
#并将事件循环替换为对函数check_events()的调用
elif event.type == pygame.KEYDOWN:
check_keydown_events(event,ship)
elif event.type == pygame.KEYUP:
check_keyup_events(event,ship)
def update_screen(ai_settings,screen,ship):
# 将更新屏幕的代码移到此处
screen.fill(ai_settings.bg_color) # 每次循环都会重绘屏幕
ship.blitme() # 每次循环时重新绘制飞船
pygame.display.flip() # 让最近绘制的屏幕可见
#飞船移动功能编写完毕
2.运行效果
飞船可以任意向左向右移动,直到移动到游戏界面边界时停止。
点击下方链接观看运行效果视频
有什么不懂的地方在评论区留言哦!希望我的文章能对你有所帮助,如果喜欢我的文章,请点赞收藏并关注!你的认可是对我创作最大的鼓励!
2022-08-24 19:38:53 星期三
Original: https://www.cnblogs.com/Penetration-redhat/p/16621359.html
Author: 渗透小红帽
Title: Python小游戏——外星人入侵(保姆级教程)第一章 09重构check_events()
相关阅读2
Title: python和matlab连接
1,实现matlab 和 python混编必须版本对应
matlab 查看版本
命令行窗口输入
```matlab;gutter:true;
pyversion
![python和matlab连接](https://johngo-pic.oss-cn-beijing.aliyuncs.com/articles/20221108/2735599-20220529000320337-1387363338.png)
我的matlab是R2020b的版本,可以对应 3.6,3.8等版本,具体版本对应查看[从 Python 调用 MATLAB - MATLAB & Simulink - MathWorks 中国](https://ww2.mathworks.cn/help/matlab/matlab-engine-for-python.html)
![python和matlab连接](https://johngo-pic.oss-cn-beijing.aliyuncs.com/articles/20221108/2735599-20220529003134677-1518955838.png)
(1)解决版本不对应问题
一开始我的版本是3.10版本,为了连接上matlab,把3.10删了,下载了3.8,但这个时候使用pyversion查看依旧是3.10版本
这时候 ,在matlab命令行中使用
### 在 Windows 平台上设置 Python 版本
先进入matlab命令行
在 Windows® 平台上,使用以下任一方式:
```matlab;gutter:true;
pyenv('Version','version')
或
```matlab;gutter:true;
pyenv('Version','executable')
其中 executable 是 Python 可执行文件的完整路径。可执行文件路径例如:C:\Users\86191\AppData\Local\Programs\Python\Python38\pythonw.exe然后再使用:
```matlab;gutter:true;
pyversion
查看版本已经换过来啦
(2)配置matlab文件
进入C:\Program Files\Polyspace\R2020b\extern\engines\python
shift+右键 进入cmd
输入
```matlab;gutter:true;
python setup.py build --build-base="builddir" install
python setup.py install --prefix="installdir"
python setup.py build --build-base="builddir" install --prefix="installdir"
python setup.py install --userd
![python和matlab连接](https://johngo-pic.oss-cn-beijing.aliyuncs.com/articles/20221108/2735599-20220529004455825-1593761946.png)
(3)之后就可以在python中调用matlab
我用的是pycharm ,所以首先再pycharm中更换python版本,换成3.8
python代码
```python;gutter:true;
import matlab
import matlab.engine
eng = matlab.engine.start_matlab()
t = eng.myls([4,2])
print(t)
matlab代码
```python;gutter:true;
function x=myls(values)
x = values/2
end
python 代码与matlab代码放在同一文件夹下运行
如果出现 import matlab.engine _出错问题_
```python;gutter:true;
把C:\Program Files\Polyspace\R2020b\extern\engines\python\build\lib下文件赋值粘贴到C:\Users\86191\AppData\Local\Programs\Python\Python38\Lib文件夹下
Original: https://www.cnblogs.com/yaya-dsx/p/16322683.html
Author: yayayua
Title: python和matlab连接
相关阅读3
Title: Python Line Messaging Api
Line Messaging
line 是国外一个很火的实时通信软件,类似与WX,由于公司业务需求,需要基于line开发一个聊天平台,下面主要介绍关于line messaging api 的使用。
官方api:https://developers.line.biz/en/docs/messaging-api/overview/
官方教程:https://developers.line.biz/en/docs/line-developers-console/overview/
line_bot_api = linebot.LineBotApi('YOUR_CHANNEL_ACCESS_TOKEN')
用于响应来自用户,组和聊天室的事件。您可以从webhook事件对象获取reply_token。
reply_message(self, reply_token, messages, notification_disabled=False, timeout=None)
line_bot_api.reply_message(reply_token, TextSendMessage(text='Hello World!'))
1.随时向单个用户,组和聊天室发送消息
push_message(self, to, messages, notification_disabled=False, timeout=None)
line_bot_api.push_message(to, TextSendMessage(text='Hello World!'))
2.随时向多个用户,组和聊天室发送消息
multicast(self, to, messages, notification_disabled=False, timeout=None)
line_bot_api.multicast(['to1', 'to2'], TextSendMessage(text='Hello World!'))
随时向所有关注的用户发送消息
broadcast(self, messages, notification_disabled=False, timeout=None)
line_bot_api.broadcast(TextSendMessage(text='Hello World!'))
get_profile(self, user_id, timeout=None)
profile = line_bot_api.get_profile(user_id) # 通过用户id,获取用户信息
print(profile.display_name)
print(profile.user_id)
print(profile.picture_url)
print(profile.status_message)
获取用户发送的图像,视频和音频数据。
get_message_content(self, message_id, timeout=None)
message_content = line_bot_api.get_message_content(message_id)
basedir = os.path.abspath(os.path.dirname(__file__))
file_path = basedir + "../.."
with open(file_path, 'wb') as fd:
for chunk in message_content.iter_content():
fd.write(chunk)
get_bot_info(self, timeout=None)
bot_info = line_bot_api.get_bot_info()
print(bot_info.display_name)
print(bot_info.user_id)
print(bot_info.basic_id)
print(bot_info.premium_id)
print(bot_info.picture_url)
print(bot_info.chat_mode)
print(bot_info.mark_as_read_mode)
line api 服务器返回错误
try:
line_bot_api.push_message('to', TextSendMessage(text='Hello World!'))
except linebot.exceptions.LineBotApiError as e:
print(e.status_code)
print(e.request_id)
print(e.error.message)
print(e.error.details)
示例:
{
"destination": "xxxxxxxxxx",
"events": [
{
"replyToken": "0f3779fba3b349968c5d07db31eab56f",
"type": "message",
"mode": "active",
"timestamp": 1462629479859,
"source": {
"type": "user",
"userId": "U4af4980629..."
},
"message": {
"id": "325708",
"type": "text",
"text": "Hello, world"
}
},
{
"replyToken": "8cf9239d56244f4197887e939187e19e",
"type": "follow",
"mode": "active",
"timestamp": 1462629479859,
"source": {
"type": "user",
"userId": "U4af4980629..."
}
}
]
}
destination
:接收Webhook事件,漫游器的用户IDevents
: 事件列表replyToken
:使用reply token能够直接回复type
:事件类型mode
:channel的状态active
:活动状态standby
(正在开发中):频道正在等待timestamp
:事件的时间(时间戳)source
:具有事件源信息,user、group、room对象type
:类型userId
:用户Idmessage
:消息对象id
:消息idtype
:消息类型text
:文本
用户在组或聊天室中取消发送消息时的事件对象
LINE官方帐户被添加为好友(或被拒绝)时触发的事件对象
LINE官方帐户被取消关注时触发的事件对象
LINE官方帐户加入群组或聊天室时触发的事件对象
用户加入LINE官方帐户所在的组或聊天室时触发的事件对象
用户退出LINE官方帐户所在的组或聊天室时触发的事件对象
Original: https://www.cnblogs.com/pungchur/p/14385539.html
Author: Nolinked
Title: Python Line Messaging Api