Python#384
访问控制列表ACL(Access Control List)用来描述哪些用户能以什么样的方式访问指定文件或文件夹(统称为资源),ACL是一个整数(int),其中常用的是低9位二进制数,分为三组,每组3位,
左边第1组表示资源的创建者拥有的权限,
第2组表示与创建者同组的用户拥有的权限,
第3组表示其他用户拥有的权限。
每组中3位分别表示读、写、执行权限,0表示不具有该权限,1表示具有该权限。
例如,二进制数111 111 111作为ACL时表示一个资源的创建者、同组用户和其他用户都具有读、写、执行的权限,为了方便理解也常显示为字符串'rwx'、其中r表示可读、w表示可写、x表示可执行,不具有某个权限时表示为减号-。
函数 main() 接收一个小于等于511(也就是八进制的0o777)的整数mode,要求返回对应的rwx表示形式。
例如,main(511)返回'rwx',main(487)返回'rwxr--rwx'。
要求使用for循环,输出不能有多余内容。
考点:字符串
(虽然字很多,但感觉不会太难)
(每种情况都要考虑)
(这跟八进制有毛关系……)
我的思路:既然它是整数,也就是十进制数,先转二进制bin,再转字符串类型str,然后判断,输出字符串。
#000 000 000
#创建者权限、同组用户权限、其他用户权限
#读、写、执行,0无权,1有权
#111 111 111
#rwxrwxrwx r可读、w可写、x可执行、没权限-
#mode<=511,0o777,0b0001 1111 1111
#main(487),0o747,0b0001 1110 0111
#111 100 111 rwxr--rwx
def main(mode):
s = str(bin(mode))
ans=[]
for i in range(len(s[3:5:3])):
if s[3:5]==111:
ans.append("rwx") #列表方法
elif s[3:5]==110:
ans.append("rw-")
elif s[3:5]==100:
ans.append("r--")
else :
ans.append("---")
for j in range(len(s[3:5:3])):
if s[6:8] == 111:
ans.append("rwx") #列表方法
elif s[6:8] == 110 :
ans.append("rw-")
elif s[6:8]==100:
ans.append("r--")
else :
ans.append("---")
for k in range(len(s[9:12:3])):
if s[9:12]==111:
ans.append("rwx") #列表方法
elif s[9:12]==110:
ans.append("rw-")
elif s[9:12]==100:
ans.append("r--")
else :
ans.append("---")
return ans
'''
答题错误!您的代码执行结果为:
File xxx.py, line 41
return ans
^
SyntaxError: 'return' outside function
'''