一、字典(上)总结
1.用一个列表编写摩斯密码实现摩斯密码的解密
代码如下:
#摩斯密码对比表
#创建一个列表
c_table=[".-","A","-...","B","-.-.","C","-..","D",
".","E","..-.","F","--.","G","....","H",
"..","I",".---","J","-.-","K",".-..","L",
"--","M","-.","N","---","O",".--.","P",
"--.-","Q",".-.","R","...","S","-","T",
"..-","U","...-","V",".--","W","-..-","X",
"-.--","Y","--..","Z",".----","1","..---","2",
"...--","3","....-","4",".....","5","-.....","6",
"--...","7","---..","8","----.","9","-----","0"]
#将要输入的密文:... .... .- -. --. .... .- .. --.. .. .-.. .- .. ... .... ..- .. .-.. .- .. --.. .. .... .- .. ... .... .- -. --.
code=input("请输入莫斯摩玛:")
split_code=code.split(" ") #在下面第二个列表处解释
#获取密文的索引值,加一就是明文
result=[c_table[c_table.index(each)+1] for each in split_code] #在下面第二个列表处解释
print(result)
结果:
2.用两个列表编写摩斯密码实现摩斯密码的解密
代码如下:
#摩斯密码对比表
#创建两个列表
c_table=[".-","-...","-.-.","-..",".","..-.",
"--.","....","..",".---","-.-",".-..",
"--","-.","---",".--.","--.-",".-.",
"...","-","..-","...-",".--","-..-",
"-.--","--..",".----","..---","...--","....-",
".....","-....","--...","---..","----.","-----"]
#摩斯明文表
d_table=["A","B","C","D","E","F",
"G","H","I","J","K","L",
"M","N","O","P","Q","R",
"S","T","U","V","W","X",
"Y","Z","1","2","3","4",
"5","6","7","8","9","0"]
#密文:... .... .- -. --. .... .- .. --.. .. .-.. .- .. ... .... ..- .. .-.. .- .. --.. .. .... .- .. ... .... .- -. --.
code=input("请输入莫斯摩玛:")
split_code=code.split(" ") #对输入的字符串进行分割,然后放入列表
#获取密文的索引值,加一就是明文
result=[d_table[c_table.index(each)] for each in split_code]
print(result)
代码中result=[c_table[c_table.index(each)+1] for each in split_code] 为列表推导式。通过index获取字符在c_table中的位置,再获取d_table中同样位置的元素,相当于在两个等长的列表中依次存放每个字符的明文和密文,然后根据相同的位置索引就可以进行解密了,它的展开写法如下:
result=[]
for each in split_code:
_=c_table.index(each) #通过index获取字符在c_table中的位置
result.append(d_table[_])
split()函数的应用: 对输入的字符串进行分割,然后放入列表
code=input("请输入莫斯摩玛:")
split_code=code.split(" ")
print(split_code)
结果:
3.用一个字典编写摩斯密码实现摩斯密码的解密
代码如下:
#摩斯密码对比表
#创建一个字典
c_table = {".-":"A", "-...":"B", "-.-.":"C", "-..":"D",
".":"E", "..-.":"F", "--.":"G", "....":"H",
"..":"I", ".---":"J", "-.-":"K", ".-..":"L",
"--":"M", "-.":"N", "---":"O", ".--.":"P",
"--.-":"Q", ".-.":"R", "...":"S", "-":"T",
"..-":"U", "...-":"V", ".--":"W", "-..-":"X",
"-.--":"Y", "--..":"Z", ".----":"1", "..---":"2",
"...--":"3", "....-":"4", ".....":"5", "-....":"6",
"--...":"7", "---..":"8", "----.":"9", "-----":"0"}
code=input("请输入莫斯摩玛:")
split_code = code.split(" ")
result = [c_table[each] for each in split_code]
print(result)