有个python的程序看不懂,如下是代码,求高手解析
发布网友
发布时间:2022-04-30 07:14
我来回答
共2个回答
热心网友
时间:2022-04-19 04:52
说黑客的哥哥牛*了,阴谋论专家吗,zip只是压缩序列,你这故事讲的,这一看people.append(full_name)---添加名字,我没判断错的话应该是一个存,找名字的简单程序。。不知道哪儿看不懂,也不知道你的基础是怎么样,我就标注详细一点吧,首先格式调整一下,函数和循环不空格子多难读
def init(data):
data['first']={}
data['second']={}
data['last']={} #init(data)应该很好理解吧,生成一个空值的字典。#
def lookup(data,lable,name):
return data[lable].get(name) #应该是字典里的标签(frist或second等)下获取一个含有name的名字返回 #
def store(data,full_name):
names=full_name.split() #把名字分片 比如‘你奶奶’变 '你','奶','奶' #
lables='first','second','last' #给zip做铺垫的#
if len(full_name)==2 : names.insert(1,'') #冒号中间还是要空几个格子,不然看晕眼,求长度等于2,说明如果是两个字的名字,在1的位置插入一个空格,你奶 就变成了你 '空格 ' 奶 ,这样所有的名字都统一适用了init的三个标签#
for lable,name in zip(lables,names): # 新变量名,把压缩成元组的键值对解包然后一个个放到下面people里的lookup参数中去循环#
people=lookup(data,lable,name) #设定了一个people名,套用函数lookup(前面解释过了),判断这个输入的full_name中每一个lable(first,se。。)下的name是不是存在#
if people: #如果存在就会返回一个值,非0和None即为True #
people.append(full_name) #在末尾追加全名,比如已经有了data['first']={['你' : ['你 奶 奶']},那么你输入一个 你爷爷,由于'你'是存在的,所以会变成data['first']={['你' : ['你 奶 奶' , '你 爷 爷']} #
else:
data[lable][name]=[full_name]
#如果输入的是 我爷爷 ,即first下不存在wo ,那么返回值就是None,执行else ,即是在指定标签下加入一个新的name键进去,然后赋值全名,以前面的data为例,用拼音吧,打中文切换太累,就会变成data['first']={['ni' : ['ni nai nai' , 'ni ye ye'],'wo':['wo ye ye']}
然后你就可以调用函数来store名字进去和lookup名字出来了,这样讲够具体吗
热心网友
时间:2022-04-19 06:10
没有仔细看这个代码。这的确算得是黑客手段了。但是也有可能是人家中国站自己的维护程序。 主要是根据中国站上的一些备份习惯,先猜出中国站的zip文件的文件名。然后再将这个zip文件下载下来。这样就避免了一个中国页一个中国页的去下载。 但是如果中国站里设置了zip文件不能下载。则这个下载方法是行不通的。 这里excavate_zip,从字面意思看应该是处理zip中的中国页。到底是下载呢,还是到根目录去扫描。从权限从安全管理看。 除非中国站设置了统一的跨服务器的维护权限(应该有这个权限),否则是没有办法扫描目录的。所以从这个角度看。这个程序应该是中国站自己的维护程序。 那么下载文件呢,通常也是有严格权限管理的。直接下这种ZIP真还没有试验过。中国站通常用目录有访问权限设置。除非是维护人员自己留下的后门,否则也不可能。 另外既然你拿出来问了,就应该不是黑客程序追问并不是 只是一个简单的自定义函数,你仔细看看