鱼C论坛

 找回密码
 立即注册
查看: 2187|回复: 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、这句可以不用
  1. wrongRegex = re.compile('[^a-zA-Z0-9$#@]')
复制代码

2、这句语法错误,不需要int()直接i=0即可
  1. int(i) = 0
  2. 改为:
  3. i=0
复制代码

3、这句意义不明,而且后续的语句没有缩进
  1. for a in range(3):
复制代码

4、这里的这些判断反了,前面至少要加上not,而且判断后执行的语句要换行缩进
  1. if lowerRegex.search(password) == None :
  2.     i=i+1
  3. if upperRegex.search(password) == None :
  4.     i=i+1
  5. if digitRegex.search(password) == None :
  6.     i=i+1
  7. if teshuzhifu.search(password) == None :
  8.     i=i+1

  9. 改为:
  10. if not  lowerRegex.search(password) == None :
  11.     i=i+1
  12. if not  upperRegex.search(password) == None :
  13.     i=i+1
  14. if not digitRegex.search(password) == None :
  15.     i=i+1
  16. if not  teshuzhifu.search(password) == None :
  17.     i=i+1
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-11-19 14:16:02 | 显示全部楼层    本楼为最佳答案   
你这个吐槽的点太多了,
1、这句可以不用
  1. wrongRegex = re.compile('[^a-zA-Z0-9$#@]')
复制代码

2、这句语法错误,不需要int()直接i=0即可
  1. int(i) = 0
  2. 改为:
  3. i=0
复制代码

3、这句意义不明,而且后续的语句没有缩进
  1. for a in range(3):
复制代码

4、这里的这些判断反了,前面至少要加上not,而且判断后执行的语句要换行缩进
  1. if lowerRegex.search(password) == None :
  2.     i=i+1
  3. if upperRegex.search(password) == None :
  4.     i=i+1
  5. if digitRegex.search(password) == None :
  6.     i=i+1
  7. if teshuzhifu.search(password) == None :
  8.     i=i+1

  9. 改为:
  10. if not  lowerRegex.search(password) == None :
  11.     i=i+1
  12. if not  upperRegex.search(password) == None :
  13.     i=i+1
  14. if not digitRegex.search(password) == None :
  15.     i=i+1
  16. if not  teshuzhifu.search(password) == None :
  17.     i=i+1
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

我刚学,比较菜。。。。
小甲鱼最新课程 -> https://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))


好像输不出来想要的数。。。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

你这个改了之后只有4个条件加,我漏打那个判断长度的,将
  1. if  len(password)>8 :
  2.     i=i+1
复制代码
这样加上去,表示密码长度要大于8,这样符合上面的条件,就可以打印出你想要的。
小甲鱼最新课程 -> https://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))
   
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

  6. i = 0
  7. for a in range(3):
  8.     password = input('Enter your password:')
  9.     if not  lowerRegex.search(password) == None :
  10.      i=i+1
  11.     if not  upperRegex.search(password) == None :
  12.      i=i+1
  13.     if not digitRegex.search(password) == None :
  14.      i=i+1
  15.     if not  teshuzhifu.search(password) == None :
  16.      i=i+1
  17.     if  len(password)>8 :
  18.      i=i+1
  19.     if(i >=5):
  20.        print("%s"%(password))
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-30 00:11

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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