按照普通车厢里面,A F窗口位 C D 过道位
你看下,有问题可以追问
a = input('请输入您的排号')
b = input('请输入您的座号').upper()
if b == 'A' or b == 'F':
print('您的位置是在', a, '排 ', b, '座', '靠近窗口')
elif b == 'B':
print('你的位置是在', a, '排', b, '座')
elif b == 'C' or b == 'D':
print('您的位置是在', a, '排 ', b, '座,靠近过道')
else:
print('没有这个座位')
# Python3.6# 导入random模块
import random
# 定义一个人椅的类
class ManAndBench:
def __init__(self, n_bench):
self.bench_num = n_bench
# 依次已经被占用的座位号
self.break_point = []
def print_bench(self):
# 定义全0数组作为长椅
pt_str = [0 for _ in range(self.bench_num)]
# 按照占用的作为号,重写长椅数字
for i, item in enumerate(self.break_point):
# 长椅的第[作为号]赋值为第i+1个人
pt_str[item] = i+1
brk_num = len(self.break_point)
if brk_num == 0:
print("长椅为空:", pt_str)
else:
print("{:2d}号男人: {}".format(brk_num, pt_str))
def next_man(self):
# 如果是第一个人,使用随机占座
if len(self.break_point) == 0:
fst = random.randint(0, self.bench_num - 1)
self.break_point.append(fst)
else:
brk_num = len(self.break_point)
# 产生已经被占座的个数+1的全零数组,用于空的位置长度计数
block_size = [0 for _ in range(brk_num + 1)]
# 统计每个空位置的长度
tmp = 0
for i in range(self.bench_num):
# 如果第i个作为没有被占用,则第tmp个数组加1
if i not in self.break_point:
block_size[tmp] += 1
# 否则,tmp加1,统计下一个间隔段的长度
else:
tmp += 1
# 找出最大长度,计算最大长度块的序号
max_block = max(block_size)
max_index = block_size.index(max_block)
# 计算最大长度块在整个长椅中的分割点
start = 0
for i in range(max_index):
start += block_size[i]+1
self.break_point.append(start + max_block // 2)
c = int(input("请输入椅子的数量:"))
while True:
m = int(input("请输入人的数量:"))
if m <= c:
break
else:
print("人数量大于椅子数量,请重新输入!")
# 引用定义的类
mab = ManAndBench(c)
# 打印长椅
mab.print_bench()
# 每次坐一个人,打印一次
for _ in range(m):
mab.next_man()
mab.print_bench()
“我去图书馆”抢座助手,借助python实现自动抢座。
在使用“我去图书馆”公众号进行抢座的时候,在进行抢座前我们都会进入一个页面,选定要选的座位之后点击抢座。
通过分析网页源码,很容易定位座位元素的代码,座位元素的模板如下所示:
在编写代码的过程中,我对抢座位这个过程进行的多次的抓包观察,发现在座位号前面的那个query字符串是一个看不出什么规律的编码。
解析这个query是在后端进行解析,但既然发get请求你要在页面上发,那这个代码必然在前端是有迹可循的。这个编码的答案就在页面底部的js链接中,通过运行那一段js代码就可以搞定这个编码,从而拼凑起这最后一块拼图。