为了防止被黑客获取到客户输入的密码,某银行在琶陆软件上以屏幕输入法输入密码。该输入法有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)