for i in range(2,300):如果是for i in (2,300): 就是 i =2 和 i = 300的时候。因为p的索引只能到299,i取300就报错
for i in range(2, 300):
第一个循环少写了range,你那变成了(2,300)