随笔_字典经典题1

发送短信。在某些老款手机上可以使用数字键盘发送短信。因为每个键都有多个与之关联的字母(见表6-2),所以大多数字母都需要多次按键。按下键一次将产生该键对应的第一个字符。按下键2、3、4或5次则会生成该键对应的第二、第三、第四或第五个字符。现在用一个字典d存储表6-2中的对应关系,键是0~9的一个整数,其值是一个该键对应符号组成的字符串。给定上述字典d和一个字符串s,返回该字符串对应的按键序列。

例如字符串“Hello,world!”对应的按键序列是4433555555666110966677755531111

思路:注意到符号对应下标+1正好是要摁下键的次数,即","下标为1,+1后为2,即要摁下两次1,即“,”对应“11”,所以可以构建一个字典,键为符号,值为该符号对应要摁下多少次按键,

如{“C”:222}

然后遍历输入字符串,在构建新字典中取对应的值就可以,注意可以全部转换成大写再取值

def word(d,s):
    d2={}
    s2=''
    for i in d:#i是键
        for k in d[i]:#k是遍历值的变量
            d2[k]=str(i)*(d[i].index(k)+1)
    for l in s:
        s2+=(d2[l.upper()])
    return s2


            

if __name__=="__main__":
    print(word({1:".,?!;",2:"ABC",3:"DEF",4:"GHI",5:"JKL",6:'MNO',7:'PQRS',8:'TUV',9:'WXYZ',0:' '},"Hello,World!"))

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值