你是我的小可爱 发表于 2020-2-19 16:38:56

程序解释

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吗?

Sungne_jer 发表于 2020-2-19 16:46:30

for循环遇到字符串的时候是会加1,但是此时也会执行break语句,会跳出循环,所以输出的flag1是1

xiaofan1228 发表于 2020-2-19 16:56:06

本帖最后由 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


qiuyouzhi 发表于 2020-2-19 17:00:03

你最后输入的几个符号在symbol里啊

你是我的小可爱 发表于 2020-2-19 17:35:51

噢,我以为each是每一个的意思,这里的each是不是passwd中的一部分,只要这一部分属于symbols中,他就输出1
万分感谢!
页: [1]
查看完整版本: 程序解释