Les autorisations d'un fichier dans un système Linux sont divisées en trois ensembles de trois autorisations: lecture, écriture et exécution pour le propriétaire, le groupe et autres. Chacune des trois valeurs peut être exprimée sous la forme d'un nombre octal additionnant chaque autorisation, 4 correspondant à la lecture, 2 à l'écriture et 1 à l'exécution. Ou il peut être écrit avec une chaîne utilisant les lettres r, w et x ou - lorsque l'autorisation n'est pas accordée. Par exemple: 640 est lecture / écriture pour le propriétaire, lecture pour le groupe et aucune autorisation pour les autres; converti en chaîne, ce serait: "rw-r -----" 755 est en lecture / écriture / exécution pour le propriétaire, et lecture / exécution pour le groupe et autres; converti en chaîne, ce serait: "rwxr-xr-x" Remplissez les blancs pour que le code convertisse une autorisation au format octal en un format de chaîne.
def octal_to_string(octal):
result = ""
value_letters = [(4,"r"),(2,"w"),(1,"x")]
# Iterate over each of the digits in octal
for ___ in [int(n) for n in str(octal)]:
# Check for each of the permissions values
for value, letter in value_letters:
if ___ >= value:
result += ___
___ -= value
else:
___
return result
print(octal_to_string(755)) # Should be rwxr-xr-x
print(octal_to_string(644)) # Should be rw-r--r--
print(octal_to_string(750)) # Should be rwxr-x---
print(octal_to_string(600)) # Should be rw-------
Aidez-moi à résoudre ce problème
3 Réponses :
Un moyen plus simple.
def octal_to_string(octal):
result = ""
value_letters = [(4,"r"),(2,"w"),(1,"x")]
# Iterate over each of the digits in octal
for ___ in [int(n) for n in str(octal)]:
# Check for each of the permissions values
for value, letter in value_letters:
if ___ >= value:
result += letter
___ -= value
else:
result += "-"
return result
print(octal_to_string(755))
print(octal_to_string(644))
print(octal_to_string(750))
print(octal_to_string(600))
Selon votre logique.
def octal_to_string(octal):
permission = ["---", "--x", "-w-", "-wx", "r--", "r-x", "rw-", "rwx"]
result = ""
# Iterate over each of the digits in octal
for ___ in [int(n) for n in str(octal)]:
result += permission[___]
return result
print(octal_to_string(755))
print(octal_to_string(644))
print(octal_to_string(750))
print(octal_to_string(600))
def octal_to_string(octal):
result = ""
value_letters = [(4,"r"),(2,"w"),(1,"x")]
# Iterate over each of the digits in octal
for i in [int(n) for n in str(octal)]:
# Check for each of the permissions values
for value, letter in value_letters:
if i >= value:
result += letter
i -= value
else:
result += '-'
return result
Pensez à expliquer votre réponse et comment elle résout le problème d'OP.
def octal_to_string(octal):
result = ""
value_letters = [(4,"r"),(2,"w"),(1,"x")]
# Iterate over each of the digits in octal
for y in [int(n) for n in str(octal)]:
# Check for each of the permissions values
for value, letter in value_letters:
if y >= value:
result += letter
y-= value
else:
result+="-"
return result
print(octal_to_string(755))rwxr-xr-x