2
votes

Comment obtenir une entrée de l'utilisateur pour trouver une clé dans un dictionnaire et afficher sa valeur?

Je fais une simple S-Box en python, elle contient toutes les combinaisons 3 bits possibles en tant que clés et sa combinaison cryptée en tant que valeurs.

Il prendra essentiellement 3 bits de l'utilisateur, puis l'exécutera sur la table S-Box que j'ai définie, il trouvera alors la clé qui correspond aux bits d'entrée de l'utilisateur et affichera sa valeur cryptée strong >.

Exemple de code ci-dessous, pas le code complet;

Enter 3 bit pattern: 000
Encrypted combo: 110

Sortie:

SBox= { "000": "110","001": "010","010":"000","011": "100" }

inputBits= input("Enter 3 bit pattern: ")

if inputBits == "000":
        print("Encrypted combo: ", SBox["000"])

Je veux pouvoir le faire plus efficacement, c'est à dire: sans avoir à avoir un if pour chaque combinaison possible, quelque chose de similaire à faire correspondre la chaîne d'entrée avec la clé du dictionnaire.

Toute aide est appréciée!


3 commentaires

SBox.get (inputBits) ?


Il vous manque un ) sur votre ligne print , cela provoquera une erreur de syntaxe.


Vous avez un "100" supplémentaire à la fin du dictionnaire sans clé avant.


4 Réponses :


5
votes

Utilisez dict.get

SBox= { "000": "110","001": "010","010":"000","011": "100" }

inputBits= input("Enter 3 bit pattern: ")

if SBox.get(inputBits):
    print("Encrypted combo: ", SBox.get(inputBits))

#OR print("Encrypted combo: ", SBox.get(inputBits, "N\A"))


0 commentaires

2
votes

essayez .. sauf est utile dans cette condition

SBox= { "000": "110","001": "010","010":"000","011": "100" }

inputBits= input("Enter 3 bit pattern: ")

try:
    if SBox[inputBits]:
        print("Encrypted combo: ", SBox["000"])
except KeyError:
    print("wrong bit pattern")


0 commentaires

0
votes
SBox= { "000": "110","001": "010","010":"000","011": "100" }

inputBits=input("Enter 3 bit pattern: ")

if inputBits in SBox:
    print("Encrypted combo: {}".format(SBox.get(inputBits)))
else:
    print("Invalid 3 bit pattern entered")

1 commentaires

vous utilisez if inputBits dans Sbox et utilisez également SBox.get () , cela créera plus de temps d'utilisation au lieu de SBox.get (inputBits) vous pouvez utiliser Sbox [inputBits] pour plus rapide que l'actuel



1
votes

La méthode dict.get () a un argument par défaut et le même peut être utilisé comme option de secours.

Si la clé passée par l'utilisateur est disponible dans le dictionnaire, alors la la valeur correspondante est renvoyée. Si leur clé n'existe pas, alors l'argument par défaut de la méthode dict.get () est renvoyé.

SBox= { "000": "110","001": "010","010":"000","011": "100" }

print(SBox.get(input("Enter the 3 bit pattern: "), "Invalid 3 bit pattern."))


0 commentaires