鱼C论坛

 找回密码
 立即注册
查看: 1532|回复: 7

[已解决]我想做一个筛选符合条件的数据的代码,但不知道出了什么问题,求大佬解答。。。

[复制链接]
发表于 2020-11-21 17:29:54 | 显示全部楼层 |阅读模式

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

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

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$#@]')

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))



Enter your password:ABd1234@1

Enter your password:6546541

Enter your password:6498845
6498845

我本来要输出ABd1234@1   

结果输出流最后一个。
出了什么问题吗????

最佳答案
2020-11-22 23:25:19
学c的sjj 发表于 2020-11-22 19:32
那应该怎么改呢???
大佬求助,作业要交了
  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. wrongRegex = re.compile('[^a-zA-Z0-9$#@]')

  7. times=3
  8. result=[]
  9. while times:
  10.     i = 0
  11.     password = input('Enter your password:')
  12.     # print(lowerRegex.search(password))
  13.     # print(upperRegex.search(password))
  14.     # print(digitRegex.search(password))
  15.     # print(teshuzhifu.search(password))
  16.     if not lowerRegex.search(password) == None:
  17.         i = i + 1
  18.     if not upperRegex.search(password) == None:
  19.         i = i + 1
  20.     if not digitRegex.search(password) == None:
  21.         i = i + 1
  22.     if not teshuzhifu.search(password) == None:
  23.         i = i + 1
  24.     if len(password) > 8:
  25.         i = i + 1
  26.     # print(i)
  27.     if (i >= 5):
  28.         result.append(password)
  29.     times -=1
  30. print(result)


  31. #password: ABd1234@1
  32. #password: 6546541
  33. #password: 6498845
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-11-21 21:06:11 | 显示全部楼层
你这个。。。。。。。这样写,肯定只能输出最后一个
你的变量i在第一次循环之后没重置,第二次循环,第三次循环一直在累加

而且你这样写,就算重置了,也是只对第三次输入的判断,如果不符合条件,就直接不输出,也不会输出第一个
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-22 19:32:22 | 显示全部楼层
那应该怎么改呢???
大佬求助,作业要交了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-22 23:25:19 | 显示全部楼层    本楼为最佳答案   
学c的sjj 发表于 2020-11-22 19:32
那应该怎么改呢???
大佬求助,作业要交了
  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. wrongRegex = re.compile('[^a-zA-Z0-9$#@]')

  7. times=3
  8. result=[]
  9. while times:
  10.     i = 0
  11.     password = input('Enter your password:')
  12.     # print(lowerRegex.search(password))
  13.     # print(upperRegex.search(password))
  14.     # print(digitRegex.search(password))
  15.     # print(teshuzhifu.search(password))
  16.     if not lowerRegex.search(password) == None:
  17.         i = i + 1
  18.     if not upperRegex.search(password) == None:
  19.         i = i + 1
  20.     if not digitRegex.search(password) == None:
  21.         i = i + 1
  22.     if not teshuzhifu.search(password) == None:
  23.         i = i + 1
  24.     if len(password) > 8:
  25.         i = i + 1
  26.     # print(i)
  27.     if (i >= 5):
  28.         result.append(password)
  29.     times -=1
  30. print(result)


  31. #password: ABd1234@1
  32. #password: 6546541
  33. #password: 6498845
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-23 22:10:40 | 显示全部楼层

每个密码用逗号分隔。
例:如果以下密码作为程序的输入:
ABd1234@1,a F1#,2w3E*,2We3345
然后,程序的输出应该是:
ABd1234@1


如果要只输一行数据,并且要用逗号隔开该怎么搞呢??

大佬带带我
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-23 22:50:56 | 显示全部楼层
学c的sjj 发表于 2020-11-23 22:10
每个密码用逗号分隔。
例:如果以下密码作为程序的输入:
ABd1234@1,a F1#,2w3E*,2We3345

这样不是更简单?
先input了这个ABd1234@1,a F1#,2w3E*,2We3345,用逗号split分割成列表,再循环
上面这步代替了while

然后就是和while里面的代码一样的判断了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-24 17:35:30 | 显示全部楼层
疾风怪盗 发表于 2020-11-23 22:50
这样不是更简单?
先input了这个ABd1234@1,a F1#,2w3E*,2We3345,用逗号split分割成列表,再循环
上面 ...

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$#@]')

#times=3
result=[]
#while times:
i = 0
password = input('Enter your password:')
password = password.split(",")
password = str(password)
    # print(lowerRegex.search(password))
    # print(upperRegex.search(password))
    # print(digitRegex.search(password))
    # print(teshuzhifu.search(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
    # print(i)
if (i >= 5):
        result.append(password)
   # times -=1

print(result)


#password: ABd1234@1
#password: 6546541
#password: 6498845


好像出问题了,他循环没有执行。。。
能改一下吗。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-24 22:11:02 | 显示全部楼层
学c的sjj 发表于 2020-11-24 17:35
import re

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

你为什么不循环呢?
  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. wrongRegex = re.compile('[^a-zA-Z0-9$#@]')


  7. result = []


  8. password = input('Enter your password:')
  9. password = password.split(",")
  10. print(password)
  11. for p in password:
  12.     i = 0
  13.     if not lowerRegex.search(p) == None:
  14.         i = i + 1
  15.     if not upperRegex.search(p) == None:
  16.         i = i + 1
  17.     if not digitRegex.search(p) == None:
  18.         i = i + 1
  19.     if not teshuzhifu.search(p) == None:
  20.         i = i + 1
  21.     if len(p) > 8:
  22.         i = i + 1
  23.     if (i >= 5):
  24.         result.append(p)
  25. print(result)

  26. # password: ABd1234@1,6546541,6498845
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-23 23:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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