1
votes

Écrire du code python pour convertir linux en lecture, en écriture et en exécution au format octal en chaîne

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


0 commentaires

3 Réponses :


1
votes
  • 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))
    
  • Sortie1

    • 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)) 
      

    Sortie2


0 commentaires

1
votes
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

1 commentaires

Pensez à expliquer votre réponse et comment elle résout le problème d'OP.



0
votes
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

0 commentaires