题目描述
密码安全一直是一件棘手的事情。用户更喜欢容易记住的简单密码,但这样的密码通常不安全。一些网站使用随机生成的密码,但用户很难记住它们,有时会把它们写在电脑上的笔记上。一个潜在的解决方案是生成相对安全且仍易于记忆的密码。
小明正在开发这样一个密码生成器,你的工作是测试它,确保密码是可接受的。要被接受,密码必须满足以下三条规则:
- 1.它必须至少包含一个元音。
- 2.它不能包含三个连续的元音或三个连续的辅音。
- 3.除了
ee
或oo
之外,它不能包含同一个字母的两个连续出现。
元音是a
、e
、i
、o
和u
,所有其他字母都是辅音。
输入输出格式
输入格式
输入包含一个非空字符串,表示题目描述中的密码。
输出格式
针对输入,判断密码是否是可接受的,如果可接受,请打印出 acceptable
,否则请打印出 no
。
输入输出样例1
输入bontres
输出no
输入输出样例2
输入eep
输出acceptable
说明提示
每个密码最多 20
个字母,并且只包含小写字母。
alphabet1 = ['a','e','i','o','u'] #用一个列表装元音字母
alphabet2 = []
for i in range(ord('a'),ord('z')): #通过遍历阿斯克码的方式将辅音字母填入alphabet2
if chr(i) not in alphabet1 :
alphabet2.append(chr(i))
def main(): #用main()函数来封装主程序
data = input()
N = len(data) #得到输入字符串的长度
flag = 1
for a in alphabet1:
if a in data :
flag = 0
break
if flag: #如果输入字符串中没有元音字母则输出no并返回
print("no")
return
for i in range(N-2):
a = 0
b = 0
for c in data[i:i+3]:
if c in alphabet1:
a = 1
elif c in alphabet2:
b = 1
if a and b : #如果包含连续3个字母的子字符串中含有元音和辅音则跳过,保持程序的可读性
pass
else:
print("no") #否则输出no并返回
return
for i in range(N-1):
if data[i] == data[i+1] and data[i] != 'e' and data[i] != 'o': #判断连续两个字母是否符合条件
print("no") #否则输出no并返回
return
print("acceptable") #满足条件则输出acceptable并返回
return
main() #执行函数