大家好,我是皮皮。 一、前言 前几天在Python奥特曼交流群【。。】问了一个 Python 面试题的问题,一起来看看吧。 1、假设记录游戏玩家登录、退出、升级行为的日志文件格式示例如下
大家好,我是皮皮。
一、前言
前几天在Python奥特曼交流群【。。】问了一个Python
面试题的问题,一起来看看吧。
1、假设记录游戏玩家登录、退出、升级行为的日志文件格式示例如下:
[2023-07-01 19:46:00][login],{"id":101}
[2023-07-01 19:46:01][login],{"id":102}
[2023-07-01 19:46:01][login],{"id":103}
[2023-07-01 19:46:02][levelup],{"id":101,"to_lv":1}
[2023-07-01 19:46:02][levelup],{"id":101,"to_lv":2}
[2023-07-01 19:46:04][logout],{"id":101}
[2023-07-01 19:46:05][logout],{"id":102}
[2023-07-01 19:46:06][login],{"id":102}
[2023-07-01 19:46:07][levelup],{"to_lv":1,"id":102}
[2023-07-01 19:46:08][logout],{"id":102}
[2023-07-01 19:46:09][logout],{"id":103}
[2023-07-02 19:46:10][login],{"id":104}
[2023-07-02 19:46:11][login],{"id":101}
[2023-07-02 19:46:12][logout],{"id":101}
[2023-07-02 19:46:22][logout],{"id":104}
…
其中,[login]为登录记录, [logout]为退出推出记录, [levelup]为升级记录。
id为玩家唯一标识,to_lv为用户升到的等级,连续升N记会记录N条日志文件。
假设日志文件从20230701服务器开服首日起记录,每个玩家的初始等级为0。希望写一个python脚本,读入日志文件,输出20230701~20230731每天、每个等级的“在线玩家”数量,等级以用户当天截至23:59:59的最后等级为准,某日的“在线玩家”是指玩家的在线时间段和当日的00:00:00~23:59:59有交集。
输出结果示例(日期、等级、在线玩家数量):
2023-07-01 0 1
2023-07-01 1 1
2023-07-01 2 1
2023-07-02 0 1
2023-07-02 2 1
二、实现过程
这里【宝平】给了一个思路,直接用pandas读取,然后拆分,后来【刺】给了一个ChatGPT的答案,如下图所示:
后来【宝平】又给了一个思路和代码,如下所示:
可以得到下图的答案:
顺利地解决了粉丝的问题。
⭐️ 好书推荐
三、总结
大家好,我是皮皮。这篇文章主要盘点了一个Python
面试编程题的问题,文中针对该问题,给出了具体的解析和代码实现,帮助粉丝顺利解决了问题。
最后感谢粉丝【。。】提问,感谢【宝平】、【刺】给出的思路和代码解析,感谢【莫生气】等人参与学习交流。
【提问补充】温馨提示,大家在群里提问的时候。可以注意下面几点:如果涉及到大文件数据,可以数据脱敏后,发点demo数据来(小文件的意思),然后贴点代码(可以复制的那种),记得发报错截图(截全)。代码不多的话,直接发代码文字即可,代码超过50行这样的话,发个.py文件就行。