鱼C论坛

 找回密码
 立即注册
查看: 1842|回复: 6

[已解决]我想做个筛选符合条件的密码的程序,就是不知道哪里出了问题,求大佬解答

[复制链接]
发表于 2020-11-19 10:50:18 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
import re

lowerRegex = re.compile('[a-z]')
upperRegex = re.compile('[A-Z]')
digitRegex = re.compile('[0-9]')
teshuzhifu = re.compile('[$#@]')
wrongRegex = re.compile('[^a-zA-Z0-9$#@]')
int(i) = 0
for a in range(3):
password = input('Enter your password:')
if lowerRegex.search(password) == None :i=i+1
if upperRegex.search(password) == None :i=i+1
if digitRegex.search(password) == None :i=i+1
if teshuzhifu.search(password) == None :i=i+1
if len(password)<12 and len(password)>8 :i=i+1

if(i >=5):
    print("%s"%(password))




最佳答案
2020-11-19 14:16:02
你这个吐槽的点太多了,
1、这句可以不用
wrongRegex = re.compile('[^a-zA-Z0-9$#@]')
2、这句语法错误,不需要int()直接i=0即可
int(i) = 0
改为:
i=0
3、这句意义不明,而且后续的语句没有缩进
for a in range(3):
4、这里的这些判断反了,前面至少要加上not,而且判断后执行的语句要换行缩进
if lowerRegex.search(password) == None :
    i=i+1
if upperRegex.search(password) == None :
    i=i+1
if digitRegex.search(password) == None :
    i=i+1
if teshuzhifu.search(password) == None :
    i=i+1

改为:
if not  lowerRegex.search(password) == None :
    i=i+1
if not  upperRegex.search(password) == None :
    i=i+1
if not digitRegex.search(password) == None :
    i=i+1
if not  teshuzhifu.search(password) == None :
    i=i+1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-11-19 14:16:02 | 显示全部楼层    本楼为最佳答案   
你这个吐槽的点太多了,
1、这句可以不用
wrongRegex = re.compile('[^a-zA-Z0-9$#@]')
2、这句语法错误,不需要int()直接i=0即可
int(i) = 0
改为:
i=0
3、这句意义不明,而且后续的语句没有缩进
for a in range(3):
4、这里的这些判断反了,前面至少要加上not,而且判断后执行的语句要换行缩进
if lowerRegex.search(password) == None :
    i=i+1
if upperRegex.search(password) == None :
    i=i+1
if digitRegex.search(password) == None :
    i=i+1
if teshuzhifu.search(password) == None :
    i=i+1

改为:
if not  lowerRegex.search(password) == None :
    i=i+1
if not  upperRegex.search(password) == None :
    i=i+1
if not digitRegex.search(password) == None :
    i=i+1
if not  teshuzhifu.search(password) == None :
    i=i+1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-20 20:28:40 | 显示全部楼层
2012277033 发表于 2020-11-19 14:16
你这个吐槽的点太多了,
1、这句可以不用
2、这句语法错误,不需要int()直接i=0即可

我刚学,比较菜。。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-20 20:45:01 | 显示全部楼层
2012277033 发表于 2020-11-19 14:16
你这个吐槽的点太多了,
1、这句可以不用
2、这句语法错误,不需要int()直接i=0即可

import re

lowerRegex = re.compile('[a-z]')
upperRegex = re.compile('[A-Z]')
digitRegex = re.compile('[0-9]')
teshuzhifu = re.compile('[$#@]')

i = 0
for a in range(3):
    password = input('Enter your password:')
    if not  lowerRegex.search(password) == None :
     i=i+1
    if not  upperRegex.search(password) == None :
     i=i+1
    if not digitRegex.search(password) == None :
     i=i+1
    if not  teshuzhifu.search(password) == None :
     i=i+1

if(i >=5):
    print("%s"%(password))


好像输不出来想要的数。。。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-21 00:29:48 | 显示全部楼层
学c的sjj 发表于 2020-11-20 20:45
import re

lowerRegex = re.compile('[a-z]')

你这个改了之后只有4个条件加,我漏打那个判断长度的,将
if  len(password)>8 :
    i=i+1
这样加上去,表示密码长度要大于8,这样符合上面的条件,就可以打印出你想要的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-21 11:35:06 | 显示全部楼层
2012277033 发表于 2020-11-21 00:29
你这个改了之后只有4个条件加,我漏打那个判断长度的,将这样加上去,表示密码长度要大于8,这样符合上面 ...

还是有点问题。。
Enter your password:ABd1234@1

Enter your password:657465

Enter your password:51541
51541
它输出的是我打的最后一位数。。。。
代码更改后import re

lowerRegex = re.compile('[a-z]')
upperRegex = re.compile('[A-Z]')
digitRegex = re.compile('[0-9]')
teshuzhifu = re.compile('[$#@]')

i = 0
for a in range(3):
    password = input('Enter your password:')
    if not  lowerRegex.search(password) == None :
     i=i+1
    if not  upperRegex.search(password) == None :
     i=i+1
    if not digitRegex.search(password) == None :
     i=i+1
    if not  teshuzhifu.search(password) == None :
     i=i+1
    if  len(password)>8 :
     i=i+1
if(i >=5):
   
    print("%s"%(password))
   
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-22 03:42:03 | 显示全部楼层
学c的sjj 发表于 2020-11-21 11:35
还是有点问题。。
Enter your password:ABd1234@1

你这个是因为print放在for外面了,或者你的for是多余的,最终应该改成
password = input('Enter your password:')
if not  lowerRegex.search(password) == None :
    i=i+1
if not  upperRegex.search(password) == None :
    i=i+1
if not digitRegex.search(password) == None :
    i=i+1
if not  teshuzhifu.search(password) == None :
    i=i+1
if  len(password)>8 :
    i=i+1
if(i >=5):
   print("%s"%(password))
或者你想测试三次的话,就改成这样:
import re
lowerRegex = re.compile('[a-z]')
upperRegex = re.compile('[A-Z]')
digitRegex = re.compile('[0-9]')
teshuzhifu = re.compile('[$#@]')

i = 0
for a in range(3):
    password = input('Enter your password:')
    if not  lowerRegex.search(password) == None :
     i=i+1
    if not  upperRegex.search(password) == None :
     i=i+1
    if not digitRegex.search(password) == None :
     i=i+1
    if not  teshuzhifu.search(password) == None :
     i=i+1
    if  len(password)>8 :
     i=i+1
    if(i >=5):
       print("%s"%(password))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-17 13:57

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表