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