如何从用户那里获得输入以在字典中找到键并输出其值?

时间:2019-05-24 06:12:53

标签: python python-3.x dictionary

我正在用python创建一个简单的S-Box,它包含所有可能的3位组合作为密钥,并包含其加密组合作为其值。

基本上它将从用户那里获得3位,然后对我定义的S-Box表运行它,然后找到与用户输入位匹配的密钥并输出其加密值

下面的示例代码,而不是完整的代码;

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

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

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

输出:

Enter 3 bit pattern: 000
Encrypted combo: 110

我希望能够更有效地执行此操作,即:不必为每个可能的组合都提供if,类似于将输入字符串与二进位键相匹配的东西。

感谢您的帮助!

4 个答案:

答案 0 :(得分:5)

使用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"))

答案 1 :(得分:2)

try .. except在这种情况下很有帮助

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

答案 2 :(得分:1)

dict.get()方法具有默认参数,并且可以用作后备选项。

如果用户传递的键在词典中可用,则返回相应的值。如果它们的键不存在,则返回dict.get()方法的默认参数。

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

input_bits = input("Enter the 3 bit pattern: ")

print(SBox.get(input_bits, "Invalid 3 bit pattern."))

答案 3 :(得分:0)

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