计算输入密码的时间

为了防止被黑客获取到客户输入的密码,某银行在琶陆软件上以屏幕输入法输入密码。该输入法有9个按钮。每个按钮上有不多于3个空母。字母有先后顺序。按第一个字母需
要用鼠标点击按钮一次。第二个字母需要点击2次,第3个字母需要点击3次。
若连续两个字母都在同一个按钮上。则输入第一个字母后需要等待一小段时间。
假设某客户输入习惯是∶点击按钮需要1单位时间,等待一小段时间为2单位时间。某次登陆的时候,9个按钮上的字母分别为 azc dwf gti jal mon pkr shu vex yb
求该客户输入他的密码的时间。
输入∶
该客户的密码都是小写字母[a-z].密码长度<=16

keys = ['azc', 'dwf', 'gti', 'jal', 'mon', 'pkr', 'shu', 'vex', 'yb']
def get_time(input_keys):
    if len(input_keys ) > 16:
        raise Exception('wrong password!!!')
    time = 0
    button_place = None  # 记录上一次点击按钮的位置 
    for place, button_key in enumerate(keys):
        for key in input_keys:
            if key in button_key:
                time = button_key.find(key)+time+1 # 查看输入在按钮按键的位子
                if place == button_place:
                    time += 2 # 判断此密码字母是否是在同一个按键,是则等待两秒
                button_place = place  # 更新按钮当前按钮位置信息
    return time
input_keys = input('请输入密码:')
time = get_time(input_keys)
print(time)

 


————————————————
版权声明:本文为CSDN博主「桦泽」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_33528044/article/details/114387420

posted @ 2022-07-02 16:21  xuqidong  阅读(146)  评论(0编辑  收藏  举报