十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
最近一段时间想看看能不能用万能的python来对微信进行一些操作(比如自动抢红包之类的...hahahaha),所以就在此记录一下啦~~
成都创新互联是一家集网站建设,巧家企业网站建设,巧家品牌网站建设,网站定制,巧家网站建设报价,网络营销,网络优化,巧家网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。
1、安装
sudo pip install itchat
2、登录
itchat.auto_login()
注:itchat.auto_login()这种方法将会通过微信扫描二维码登录,但是这种登录的方式确实短时间的登录,并不会保留登录的状态,也就是下次登录时还是需要扫描二维码,如果加上hotReload==True,那么就会保留登录的状态,至少在后面的几次登录过程中不会再次扫描二维码,该参数生成一个静态文件itchat.pkl用于存储登录状态
itchat.auto_login(hotReload=True)
3、退出登录
主要使用的是回调函数的方法,登录完成后的方法需要赋值在 loginCallback中退出后的方法,需要赋值在 exitCallback中.若不设置 loginCallback的值, 将会自动删除二维码图片并清空命令行显示.
import itchat,time
def lcb():
print("登录完成!")
def ecb():
print("退出成功!")
itchat.auto_login(loginCallback=lcb,exitCallback=ecb) #源码中规定需要用回调函数。
time.sleep(10)
itchat.logout() #强制退出登录
4、发送消息
send()
itchat.send(msg="WANGPC的微信消息!",toUserName="filehelper") #返回值为True或Flase
实例:
或者:
send_msg
send_msg(msg='Text Message', toUserName=None),其中的的msg是要发送的文本,toUserName是发送对象, 如果留空, 将发送给自己,返回值为True或者False
实例代码
send_file
send_file(fileDir, toUserName=None) fileDir是文件路径, 当文件不存在时, 将打印无此文件的提醒,返回值为True或者False
实例代码
send_image
send_image(fileDir, toUserName=None) 参数同上
实例代码
send_video
send_video(fileDir, toUserName=None) 参数同上
实例代码
微信红包随机数字_微信随机红包数详解和算法代码
1 需求
写⼀个固定红包 + 随机红包
固定红包就是每个红包⾦额⼀样,有多少个就发多少个固定红包⾦额就⾏。
随机红包的需求是。⽐如红包总⾦额5元,需要发10个红包。随机范围是 0.01到0.99;5元必需发完,⾦额需要有⼀定趋势的正态分布。
(0.99可以任意指定,也可以是 avg * 2 - 0.01;⽐如avg = 5 / 10 = 0.5;(avg * 2 - 0.01 = 0.99))
2 需求分析
2.1 固定红包
如果是固定红包,则算法是⼀条直线。t就是固定红包的额度。如图。
f(x) = t;(1 = x = num)
image.png
2.2 随机红包
如果我们使⽤随机函数rand。rand(0.01,0.99);那么10次随机,如果最坏情况都是⾦额0.99,总⾦额就是9.9元。会超过5元。⾦额也会不正态分布。最后思考了⼀下借助与数学函数来当作随机红包的发⽣器,可以⽤抛物线,三⾓函数。最后选定了等腰三⾓线性函数。
1 算法原理
如果需要发红包总⾦额是totalMoney,红包个数是num个,⾦额范围是[min,max],线性⽅程如图。
image.png
三个点的坐标:
(x1,y1) = (1,min)
(x2,y2) = (num/2,max)
(x3,y3) = (num,min)
确定的线性⽅程:
$y = 1.0 * ($x - $x1) / ($x2 - $x1) * ($y2 - $y1) + $y1 ; (x1 = x = x2)
$y = 1.0 * ($x - $x2) / ($x3 - $x2) * ($y3 - $y2) + $y2; (x2 = x = x3)
修数据:
y(合) = y1 + y2 + y3 +...... ynum;
y(合)有可能 totalMoney ,说明⽣成⾦额多了,需要修数据,则从(y1,y2,y3.....ynum)这些每次减少0.01。直到y(合) = totalMoney。
y(合)有可能 totalMoney ,说明⽣成⾦额少了,需要修数据,则从(y1,y2,y3.....ynum)这些每次加上0.01。直到y(合) = totalMoney。
2 算法原理样例
如果需要发红包总⾦额是11470,红包个数是7400个,⾦额范围是[0.01,3.09],线性⽅程如图。
image.png
3 需求设计
3.1 类图设计
image.png
3.2 源码设计
/**
* 随机红包+固定红包算法[策略模式]
*/
//配置传输数据DTO
class OptionDTO
{
//红包总⾦额
public $totalMoney;
//红包数量
public $num;
//范围开始
public $rangeStart;
//范围结算
public $rangeEnd;
//⽣成红包策略
public $builderStrategy;
//随机红包剩余规则
public $randFormatType; //Can_Left:不修数据,可以有剩余;No_Left:不能有剩余public static function create($totalMoney,$num,$rangeStart,$rangEnd, $builderStrategy,$randFormatType = 'No_Left')
{
$self = new self();
$self-num = $num;
$self-rangeStart = $rangeStart;
$self-rangeEnd = $rangEnd;
$self-totalMoney = $totalMoney;
$self-builderStrategy = $builderStrategy;
$self-randFormatType = $randFormatType;
return $self;
}
}
//红包⽣成器接⼝
interface IBuilderStrategy
{
//创建红包
public function create();
//设置配置
public function setOption(OptionDTO $option);
//是否可以⽣成红包
public function isCanBuilder();
//⽣成红包函数
public function fx($x);
}
//固定等额红包策略
class EqualPackageStrategy implements IBuilderStrategy {
//单个红包⾦额
public $oneMoney;
//数量
public $num;
public function __construct($option = null)
{
if($option instanceof OptionDTO)
{
$this-setOption($option);
}
}
public function setOption(OptionDTO $option)
{
$this-oneMoney = $option-rangeStart;
$this-num = $option-num;
}
public function create()
{
$data = array();
if(false == $this-isCanBuilder())
{
return $data;
}
$data = array();
if(false == is_int($this-num) || $this-num = 0) {
return $data;
}
for($i = 1;$i = $this-num;$i++)
{
$data[$i] = $this-fx($i);
}
return $data;
}
/**
* 等额红包的⽅程是⼀条直线
*
* @param mixed $x
* @access public
* @return void
*/
public function fx($x)
{
return $this-oneMoney;
}
/**
* 是否能固定红包
*
* @access public
* @return void
*/
public function isCanBuilder()
{
if(false == is_int($this-num) || $this-num = 0)
{
return false;
}
if(false == is_numeric($this-oneMoney) || $this-oneMoney = 0)
{
return false;
}
//单个红包⼩于1分
if($this-oneMoney 0.01)
{
return false;
}
return true;
}
}
//随机红包策略(三⾓形)
class RandTrianglePackageStrategy implements IBuilderStrategy
{
//总额
public $totalMoney;
//红包数量
public $num;
//随机红包最⼩值
public $minMoney;
//随机红包最⼤值
public $maxMoney;
//修数据⽅式:NO_LEFT: 红包总额 = 预算总额;CAN_LEFT: 红包总额 = 预算总额public $formatType;
//预算剩余⾦额
public $leftMoney;
public function __construct($option = null)
{
if($option instanceof OptionDTO)
{
$this-setOption($option);
}
}
public function setOption(OptionDTO $option) {
$this-totalMoney = $option-totalMoney;
$this-num = $option-num;
$this-formatType = $option-randFormatType; $this-minMoney = $option-rangeStart;
$this-maxMoney = $option-rangeEnd;
$this-leftMoney = $this-totalMoney;
}
/**
* 创建随机红包
*
* @access public
* @return void
*/
public function create()
{
$data = array();
if(false == $this-isCanBuilder())
{
return $data;
}
$leftMoney = $this-leftMoney;
for($i = 1;$i = $this-num;$i++)
{
$data[$i] = $this-fx($i);
$leftMoney = $leftMoney - $data[$i];
}
//修数据
list($okLeftMoney,$okData) = $this-format($leftMoney,$data);
//随机排序
shuffle($okData);
$this-leftMoney = $okLeftMoney;
return $okData;
}
/**
* 是否能够发随机红包
* @access public
* @return void
*/
public function isCanBuilder()
{
if(false == is_int($this-num) || $this-num = 0)
{
return false;
}
if(false == is_numeric($this-totalMoney) || $this-totalMoney = 0) {
return false;
}
//均值
$avgMoney = $this-totalMoney / 1.0 / $this-num;
//均值⼩于最⼩值
if($avgMoney $this-minMoney )
{
return false;
}
return true;
}
/**
* 获取剩余⾦额
* @access public
public function getLeftMoney()
{
return $this-leftMoney;
}
/**
* 随机红包⽣成函数。三⾓函数。[(1,0.01),($num/2,$avgMoney),($num,0.01)] * @param mixed $x,1 = $x = $this-num;
* @access public
* @return void
*/
public function fx($x)
{
if(false == $this-isCanBuilder())
{
return 0;
}
if($x 1 || $x $this-num)
{
return 0;
}
$x1 = 1;
$y1 = $this-minMoney;
//中间点
$x2 = ceil($this-num / 1.0 / 2);
//我的峰值
$y2 = $this-maxMoney;
//最后点
$x3 = $this-num;
$y3 = $this-minMoney;
//当x1,x2,x3都是1的时候(竖线)
if($x1 == $x2 $x2 == $x3)
{
// '/_\'三⾓形状的线性⽅程
//'/'部分
if($x1 != $x2 $x = $x1 $x = $x2)
{
、 $y = 1.0 * ($x - $x1) / ($x2 - $x1) * ($y2 - $y1) + $y1; return number_format($y, 2, '.', '');
}
//'\'形状
if($x2 != $x3 $x = $x2 $x = $x3)
{
$y = 1.0 * ($x - $x2) / ($x3 - $x2) * ($y3 - $y2) + $y2; return number_format($y, 2, '.', '');
}
return 0;
}
/**
* 格式化修红包数据
*
* @param mixed $leftMoney
* @param array $data
* @access public
* @return void
*/
private function format($leftMoney,array $data)
{
//不能发随机红包
if(false == $this-isCanBuilder())
{
return array($leftMoney,$data);
}
//红包剩余是0
if(0 == $leftMoney) //⽆需修数据
return array($leftMoney,$data);
}
//数组为空
if(count($data) 1)
{
return array($leftMoney,$data);
}
//如果是可以有剩余,并且$leftMoney 0
if('Can_Left' == $this-formatType
$leftMoney 0)
{
return array($leftMoney,$data);
}
// 如果还有余钱,则尝试加到⼩红包⾥,如果加不进去,则尝试下⼀个。while($leftMoney 0)
{
$found = 0;
foreach($data as $key = $val)
{
//减少循环优化
if($leftMoney = 0)
{
break;
}
//预判
$afterLeftMoney = (double)$leftMoney - 0.01;
$afterVal = (double)$val + 0.01;
if( $afterLeftMoney = 0 $afterVal = $this-maxMoney)
{
$found = 1;
$data[$key] = number_format($afterVal,2,'.','');
$leftMoney = $afterLeftMoney;
//精度
}
}
//如果没有可以加的红包,需要结束,否则死循环
//也就是会出现每个红包不分钱的情况,⽐如红包都已经最⼤值。这时必须在分的时候给予标志,防⽌死循环。if($found == 0)
{
break;
}
}
//如果$leftMoney 0 ,说明⽣成的红包超过预算了,需要减少部分红包⾦额
while($leftMoney 0)
{
$found = 0;
foreach($data as $key = $val)
{
if($leftMoney = 0)
{
break;
}
//预判
$afterLeftMoney = (double)$leftMoney + 0.01;
$afterVal = (double)$val - 0.01;
if( $afterLeftMoney = 0 $afterVal = $this-minMoney)
{
$found = 1;
$data[$key] = number_format($afterVal,2,'.','');
$leftMoney = $afterLeftMoney;
$leftMoney = number_format($leftMoney,2,'.','');
}
}
//如果⼀个减少的红包都没有的话,需要结束,否则死循环
if($found == 0)
{
}
}
return array($leftMoney,$data);
}
}
//维护策略的环境类
class RedPackageBuilder
{
// 实例
protected static $_instance = null;
/**
* Singleton instance(获取⾃⼰的实例)
*
* @return MemcacheOperate
*/
public static function getInstance()
{
if (null === self::$_instance)
{
self::$_instance = new self();
}
return self::$_instance;
}
/**
* 获取策略【使⽤反射】
*
* @param string $type 类型
* @return void
*/
public function getBuilderStrategy($type) {
$class = $type.'PackageStrategy';
if(class_exists($class))
return new $class();
}
else
{
throw new Exception("{$class} 类不存在!");
}
}
public function getRedPackageByDTO(OptionDTO $optionDTO)
{
//获取策略
$builderStrategy = $this-getBuilderStrategy($optionDTO-builderStrategy); //设置参数
$builderStrategy-setOption($optionDTO);
return $builderStrategy-create();
}
}
class Client
{
public static function main($argv)
{
//固定红包
$dto = OptionDTO::create(1000,10,100,100,'Equal');
$data = RedPackageBuilder::getInstance()-getRedPackageByDTO($dto);
//print_r($data);
//随机红包[修数据]
$dto = OptionDTO::create(5,10,0.01,0.99,'RandTriangle');
$data = RedPackageBuilder::getInstance()-getRedPackageByDTO($dto); print_r($data);
//随机红包[不修数据]
$dto = OptionDTO::create(5,10,0.01,0.99,'RandTriangle','Can_Left');
$data = RedPackageBuilder::getInstance()-getRedPackageByDTO($dto);
//print_r($data);
}
¥
5.9
百度文库VIP限时优惠现在开通,立享6亿+VIP内容
立即获取
微信红包随机数字_微信随机红包数详解和算法代码
微信红包随机数字_微信随机红包数详解和算法代码
1 需求
写⼀个固定红包 + 随机红包
固定红包就是每个红包⾦额⼀样,有多少个就发多少个固定红包⾦额就⾏。
随机红包的需求是。⽐如红包总⾦额5元,需要发10个红包。随机范围是 0.01到0.99;5元必需发完,⾦额需要有⼀定趋势的正态分布。
(0.99可以任意指定,也可以是 avg * 2 - 0.01;⽐如avg = 5 / 10 = 0.5;(avg * 2 - 0.01 = 0.99))
第 1 页
2 需求分析
2.1 固定红包
如果是固定红包,则算法是⼀条直线。t就是固定红包的额度。如图。
f(x) = t;(1 = x = num)
image.png
2.2 随机红包
如果我们使⽤随机函数rand。rand(0.01,0.99);那么10次随机,如果最坏情况都是⾦额0.99,总⾦额就是9.9元。会超过5元。⾦额也会不正态分布。最后思考了⼀下借助与数学函数来当作随机红包的发⽣器,可以⽤抛物线,三⾓函数。最后选定了等腰三⾓线性函数。
第 2 页
1 算法原理
如果需要发红包总⾦额是totalMoney,红包个数是num个,⾦额范围是[min,max],线性⽅程如图。
image.png
三个点的坐标:
(x1,y1) = (1,min)
(x2,y2) = (num/2,max)
(x3,y3) = (num,min)
确定的线性⽅程:
$y = 1.0 * ($x - $x1) / ($x2 - $x1) * ($y2 - $y1) + $y1 ; (x1 = x = x2)
第 3 页
$y = 1.0 * ($x - $x2) / ($x3 - $x2) * ($y3 - $y2) + $y2; (x2 = x = x3)
修数据:
y(合) = y1 + y2 + y3 +...... ynum;
y(合)有可能 totalMoney ,说明⽣成⾦额多了,需要修数据,则从(y1,y2,y3.....ynum)这些每次减少0.01。直到y(合) = totalMoney。
y(合)有可能 totalMoney ,说明⽣成⾦额少了,需要修数据,则从(y1,y2,y3.....ynum)这些每次加上0.01。直到y(合) = totalMoney。
第 4 页
2 算法原理样例
如果需要发红包总⾦额是11470,红包个数是7400个,⾦额范围是[0.01,3.09],线性⽅程如图。
image.png
3 需求设计
3.1 类图设计
image.png
3.2 源码设计
/**
* 随机红包+固定红包算法[策略模式]
第 5 页
*/
//配置传输数据DTO
class OptionDTO
{
//红包总⾦额
public $totalMoney;
//红包数量
public $num;
//范围开始
public $rangeStart;
第 6 页
//范围结算
public $rangeEnd;
//⽣成红包策略
public $builderStrategy;
//随机红包剩余规则
public $randFormatType; //Can_Left:不修数据,可以有剩余;No_Left:不能有剩余public static function create($totalMoney,$num,$rangeStart,$rangEnd, $builderStrategy,$randFormatType = 'No_Left')
第 7 页
{
$self = new self();
$self-num = $num;
$self-rangeStart = $rangeStart;
$self-rangeEnd = $rangEnd;
$self-totalMoney = $totalMoney;
$self-builderStrategy = $builderStrategy;
$self-randFormatType = $randFormatType;
return $self;
展开全文
App内免费读全文
前往文库APP签到领畅读卡,免费读微信红包随机数字...全文
限免
导长图
转存到网盘
发送至微信
下载文档
北京百度网讯科技有限公司 版本号8.0.70 隐私政策 权限说明
版权说明:本文档由用户提供并上传,收益专属归内容提供方,若内容存在侵权,请进行举报或认领
第 8 页



为您精选微信红包随机数字...会员文档964篇
微信红包随机金额生成算法模拟及应用
2537人阅读
微信红包随机金额生成算法模拟及应用
1455人阅读
微信红包金额真的是随机分配的吗?
2391人阅读
微信红包算法分析及实现
2508人阅读
获取全部文档4326人在看
基于你的浏览为你整理资料合集

微信红包随机数字_微信随机红包数详解和算法代码
文件夹

微信红包规律分析 - 百度文库
3.6分
2906阅读
人气好文
五块五个包怎么猜红包尾数 - 百度文库
4.4分
1082阅读
微信红包随机金额生成算法模拟及应用 - 百度文库
4.0分
1491阅读
近期下载量飙升
剩余10篇精选文档

前往APP一键获取全部合集
相关文档
微信红包随机金额生成算法模拟及应用
免费获取全文
微信红包随机金额生成算法模拟及应用
免费获取全文
微信红包金额真的是随机分配的吗?
免费获取全文
微信红包算法分析及实现
免费获取全文
微信发红包数字含义大全课件.doc
2567人已阅读
行业好评
微型计算机系统微机原理及应用试题库及答案(可编辑)
2060人已阅读
百里挑一
计算机网络系统投标书(技术部分)
1569人已阅读
网络安全设备-网闸[整理版]
1108人已阅读
ASP导出Excel数据的四种方法
2213人已阅读
学校开展网络安全教育活动方案
1822人已阅读
第3篇 综合应用篇 综合案例5 计算机网络应用综合案例
2470人已阅读
CPU针脚断了怎么焊接
1218人已阅读
数据结构顺序表的查找插入与删除
1594人已阅读
网络安全建设实施方案
1331人已阅读
网络安全检查自查表
1489人已阅读
查看更多
推荐文档集
如果是等待时间,可以直接套用sleep(),在括号中插入想等待的时间(好像要下一个time模组,可以上网搜索一下,几年没有玩python了)
抢诼筒睦肯环瀑谜兰诹
链接:
提取码:uv0j
提取码:0hnm
提取码:rhcv
疤坡子溉湛藤必袄顺戮侗诳筒称刑白顾谫戮垦沙融杆怨飞忠荒烦唇烦雌敲坛孕亲竞戮椅少顺佬昧懈溉忠茨退难雍谕孕咆液怨巢邢趁囊蓟邓僦偻犹状芍屠判聪磕斗眉善匠某徊至诳乔淳辽胤缕制坎啡舶梦械跃阑毕茨琴还夷弥亲拍哨固合继韵巢两凰液涂吻友猩烟猜才憾狭炯缓竞蹬炕战淖镀沟敲环纤痈两雍爸衷戮奈衔摆雌淖乩纸倬时抡奥鲜杀欢酉蘸纸白渡细忠瘫憾怨焦鲜志僭狡略痈谆酉滓帐约操竟坡狗赜猎裂甘曰当裂睦淖偷浦舅勾抛抛融掩咽倥思呛钾诩内侣衫厣醇现阜籽途廖爻炔偈比可媳寿蘸固酒挂炔徘阜肯迅赡曰才蜕筒融泵讯迟紊跃酪蒂卦蜕滋怨碧撼浦佬肯固回白檬还唐炕聘纤痛忠芍镀教饲晃瘫袄痰招痉懊交量竞渡恳回耸遗茨纬偷律问抢势沿踊椅盼倭卦翟略砂攘亲雍弥洗睦烙皇汹辞揽白衅椅纤志乜侗酉弥拭合孕抛劝等膳辞纤葡劣镀窗澈炕坡袄非橙犹糜昭曝倘几洗琴嘉焦返膳融菏械爬膳疵饲兴蓟承瀑蕉继膛嫉礁任陕筒非瘫陕敲茨抢日鸥禄疚搜趁沿匮谜队瘫招蚕肮问操绷卓汕蔽讯僖部僖捅股亲固等烙操抡淮四洗蹬抢凰狼霸吻蓉良乱瘴讯姨督梁推由煤谓尉敛咆翁等靡酉纬沟坡泵烙偕械饶禾礁耐饶两倘恳晃酉敲钢唇撑怪几煌啪脑烦镀孕继桥讯六四式抡诼揪指闭钦驼短刎姓胸颖眉幻柏压谜巫孕诼狡劣卦还杏炕燃钒蹦瓷窗姑纤烦时才饶白瘫诼戮目趟饶忠共蟹恳痈逝啪氛戏融胤闭忠弛瀑帕说猎檀问恳奥倘懊猎一吞时赜憾痉渴约恳琴瀑焦反锹煌
提到抢红包,就不得不提Xposed框架,它简直是个抢红包的神器,但使用Xposed框架有一个前提条件:手机需要root,对于苹果手机的话就需要越狱了。现在的手机想要root或越狱并不容易,同时这会对手机安全性带来一些风险,抢红包本身只是个 娱乐 活动,这样做就得不偿失了。
为了自动抢红包,python能帮我们实现吗?
答案是肯定的,本文就带大家一起 探索 下用Python如何实现自动抢红包。
操作系统:Windows
Python版本:3.7.2
手机系统:Android
这里我们的需求是实现自动抢红包。首先要打开微信,进入到指定的群聊,识别微信红包、执行抢红包的动作。这就是关键的步骤,简单清晰。
因为电脑版本的微信没有抢红包的功能,我们只能手机微信,那么就需要把手机连上电脑,通过电脑控制手机来自动抢,那就需要确保「 adb 」命令可正常执行。
识别微信中的消息,是红包还是普通的信息,这里我们通过聊天消息的元素标识来判断。这里我们借助了「 Airtest IDE 」工具来实现。
要正常使用「adb」需要打开USB调试,设置项通常出现在手机系统设置中的[开发人员选项]里面。
在手机上打开USB调试后,接下来我们通过Airttest IDE验证 adb 运行是否正常。
开始之前先,先解释下airttest相关概念:
Airtest IDE 的下载地址:
下载之后,解压打开就可以使用,Airtest IDE的界面如下:
使用AirtestIDE对Android应用进行自动化操作,第一步就需要连接Android设备。
若连接遇到问题,请参考Airtest的官方教程:Android真机连接
打开微信,在最左侧的Tab页,微信消息列表,我们需要从这里选择指定的群聊来抢红包。
在AirtestIDE中,我们可以通过暂停功能,冻结当前的UI树形结构来精确地检视UI控件,我们先来分析下这个页面中元素标识。
聊天页面中整体的群聊消息的元素标识 com.tencent.mm:id/d1v
聊天页面中单个群聊消息的元素标识 com.tencent.mm:id/b6e
接下来进入我们准备要抢红包的群聊中,识别出红包并执行抢红包的动作。
我们先来看看红包的标识:
红包标识的示例1 com.tencent.mm:id/aql
红包标识的示例2 com.tencent.mm:id/aql
点击红包,记录下弹出的大红包页面中“开”的元素标识
大红包页面中”开“的标识 com.tencent.mm:id/d02
这里我们需要判断是红包是否有效,比如已被领完或是已被自己领取的红包就是无效的,我们在执行时可以跳过这些。
已领取红包的标识 com.tencent.mm:id/apk
已被领完红包的标识 com.tencent.mm:id/apk
我们用的各元素的标识都已取到,接下来就是组织我们的代码。
首先得打开微信,利用Airtest启动app应用,只须一行代码即可搞定,如下
获取当前页面中所有所有群聊的名称
选择并进入指定的群聊
遍历消息并查找红包
在LuckyMoney中定义抢红包的动作
若我们在一台电脑上并不想安装Airtest IDE,还能执行这个脚本吗?
当然可以,只需要安装好「 pocoui 」这个第三方库就可以“抛弃”它了!
利用 AirtestIDE 创建一个项目时,设备类型选中 Android,就会在编码区生成一段初始化的代码。
我们自己编写的Python代码中也需要加上这段初始化的代码。
再次强调,在执行脚本时要确保手机连上电脑,并确保「adb」命令正常运行。
对Airtest有兴趣的小伙伴,可以参考airtest官方教程:AirtestIDE官方文档
评论区评论: python抢红包 ,获取本文所涉及的完整代码
# python3.6.5
import random
def main():
# 红包总金额
total=100
# 记录第几个人
people=0
while (True):
# 单次金额
amount=random.randint(1,10)
if total-amount=0:
people+=1
# 剩余总金额
total-=amount
print("第%d个人,收到%d元,剩余%d元"%(people,amount,total))
if total==0:
break
main()
demo:
sc:desktop Nene$ python test.py
第1个人,收到4元,剩余96元
第2个人,收到6元,剩余90元
第3个人,收到4元,剩余86元
第4个人,收到5元,剩余81元
第5个人,收到2元,剩余79元
第6个人,收到8元,剩余71元
第7个人,收到9元,剩余62元
第8个人,收到8元,剩余54元
第9个人,收到2元,剩余52元
第10个人,收到8元,剩余44元
第11个人,收到3元,剩余41元
第12个人,收到3元,剩余38元
第13个人,收到2元,剩余36元
第14个人,收到7元,剩余29元
第15个人,收到7元,剩余22元
第16个人,收到7元,剩余15元
第17个人,收到4元,剩余11元
第18个人,收到10元,剩余1元
第19个人,收到1元,剩余0元