第三个小任务:摩尔斯电码表
请你编写一段英文与摩尔斯电码互译的代码,要求实现
输入英文句子,输出摩尔斯电码字符串
输入摩尔斯电码字符串,输出英文句子
利用你所写的代码,破译以下摩尔斯电码所代表的的含义: “.-- .- .-. -. … -. --. —… -… — -. — - .-. . .–. .-… -.-- -.-.-- -… — -. — - .-. . .–. .-… -.-- -.-.-- -… — -. — - .-. . .–. .-… -.-- -.-.–”
dict= {'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': '--..',
'0': '-----', '1': '.----', '2': '..---',
'3': '...--', '4': '....-', '5': '.....',
'6': '-....', '7': '--...', '8': '---..',
'9': '----.',
'.': '.-.-.-', '/': '-..-.', '?': '..--..',
'@': '.--.-.', ',': '--..--', '\"': '.-..-.',
'!': '-.-.--', ':':'---...', '=':'-...-',
'\'':'.----.', '-':'-....-', '_':'..--.-',
'(':'-.--.', ')':'-.--.-', '+':'.-.-.'
}
def morse(str):
for i in range(len(str)):#遍历字符串的下标
for key in dict.keys():
if str[i]==key:
print(dict[key],end='')
print('\n')
def get_code(code):
lis=code.split()
for i in range(len(lis)):
print(list(dict.keys())[list(dict.values()).index(lis[i])], end='')
print('\n')
def main():
str = input("请输入一组英语句子: ")
morse(str)
code=input("请输入一组摩尔斯电码字符串: ")
get_code(code)
main()
这里面用到了几点Python的基础知识,写此本文只是为了记录一下,可能不是很详细,我只写出了我用的方法,还望多多包涵。
1.如何遍历字符串:
可以通过下标遍历的方法
for i in range(len(str)):
2.Python中函数的调用:
写完main函数不用写return 0 ,而要调用main函数
3.如何输入字符串:
str = input("请输入一组英语句子: ")
input函数先将里面的文字输入到屏幕上,然后你输入一组字符串,或者其他数字,input函数将你输入的东西自动转换成字符串类型。
4.如何将一组字符串中无用的空格删除,只留有用的部分:
lis=code.split()
可以通过str.split()方法,将字符串的空格删除,并按空格分隔,最后将有用的部分存入列表中。
而如果是str.split(" "),只会分隔一个空格,其余的空格会保存到列表中去。
5.在Python字典中,如何通过值来查找键:
这个问题我搜了不少时间,因为我们都比较熟悉通过键来查找值
print(list(dict.keys())[list(dict.values()).index(lis[i])], end='')
知识点一:mydisc.keys()——取出字典mydisc的所有key
知识点二:list(list)——将list转化为列表,列表的好处就是有序,所以能通过list[index]取元素
所以A是将字典mydisc所有Key取出并用list()方法构建一个“键列表”,A=[‘key1’, ‘key2’, ‘key3’]
同理B是将字典mydisc所有Value取出并用list()方法构建一个“值列表”,B=[123,234,345]
这个时候我们只需要知道get_value在B中的索引,然后找到A中对应索引的元素即可。
知识点三:list.index(x)——返回元素x在list中的索引(如果list中存在多个重复的x,会返回首次出现的索引)
所以B.index(get_value)的意思是返回get_value在B列表中的索引
知识点四:list[x]——取list中第x个元素的值
A[B.index(get_value)]就将get_value的键取出了。
这里是充分利用了列表的一些语法并糅合在一起,是一种简洁的通过值取键写法。此处是转载。
这是一种按照键与值的顺序来实现通过值查找键的方法。