python

这篇博客介绍了如何使用Python实现英文与摩尔斯电码之间的互译。文章详细讲解了遍历字符串、函数调用、输入处理及通过字典值查找键等Python基础知识,并提供了一段完整的代码示例,包括英文转摩尔斯电码和摩尔斯电码转英文的函数。此外,还分享了在字典中通过值查找键的一种巧妙方法。
摘要由CSDN通过智能技术生成

第三个小任务:摩尔斯电码表
请你编写一段英文与摩尔斯电码互译的代码,要求实现

输入英文句子,输出摩尔斯电码字符串
输入摩尔斯电码字符串,输出英文句子
利用你所写的代码,破译以下摩尔斯电码所代表的的含义: “.-- .- .-. -. … -. --. —… -… — -. — - .-. . .–. .-… -.-- -.-.-- -… — -. — - .-. . .–. .-… -.-- -.-.-- -… — -. — - .-. . .–. .-… -.-- -.-.–”

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的键取出了。

这里是充分利用了列表的一些语法并糅合在一起,是一种简洁的通过值取键写法。此处是转载。
这是一种按照键与值的顺序来实现通过值查找键的方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值