程序解释
symbols = r'''`!@#$%^&*()_+-=/*{}[]\|'";:/?,.<>'''chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
nums = '0123456789'
passwd = input('请输入需要检查的密码组合:')
length = len(passwd)
flag1 = 0
for each in passwd:
if each in symbols:
flag1 += 1
break
print(flag1)
请问下大佬们,如果我输入的密码是2454478sdafjl@*&¥
在if each in symbols中不是只有我输入的密码全在symbols中才会加1吗,这里我输入的密码不全都是在symbols中,为什么最后的输出flag1仍然为1,不应该不变为0吗?
for循环遇到字符串的时候是会加1,但是此时也会执行break语句,会跳出循环,所以输出的flag1是1 本帖最后由 xiaofan1228 于 2020-2-19 16:58 编辑
for each in passwd:
if each in symbols:#如果each是symbols里面的字符,则条件成立,
flag1 += 1 #你输入的显然有,所以 flag1 = 0 + 1
break #然后就break掉了,for 语句也不会继续执行了
#所以flag1 = 1
你最后输入的几个符号在symbol里啊 噢,我以为each是每一个的意思,这里的each是不是passwd中的一部分,只要这一部分属于symbols中,他就输出1
万分感谢!
页:
[1]