学c的sjj 发表于 2020-11-21 17:29:54

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

import re

lowerRegex = re.compile('')
upperRegex = re.compile('')
digitRegex = re.compile('')
teshuzhifu = re.compile('[$#@]')
wrongRegex = re.compile('[^a-zA-Z0-9$#@]')

i = 0
for a in range(3):
    password = input('Enter your password:')
    if notlowerRegex.search(password) == None :
   i=i+1
    if notupperRegex.search(password) == None :
   i=i+1
    if not digitRegex.search(password) == None :
   i=i+1
    if notteshuzhifu.search(password) == None :
   i=i+1
    iflen(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-21 21:06:11

你这个。。。。。。。这样写,肯定只能输出最后一个
你的变量i在第一次循环之后没重置,第二次循环,第三次循环一直在累加

而且你这样写,就算重置了,也是只对第三次输入的判断,如果不符合条件,就直接不输出,也不会输出第一个

学c的sjj 发表于 2020-11-22 19:32:22

那应该怎么改呢???
大佬求助,作业要交了{:5_100:}

疾风怪盗 发表于 2020-11-22 23:25:19

学c的sjj 发表于 2020-11-22 19:32
那应该怎么改呢???
大佬求助,作业要交了

import re

lowerRegex = re.compile('')
upperRegex = re.compile('')
digitRegex = re.compile('')
teshuzhifu = re.compile('[$#@]')
wrongRegex = re.compile('[^a-zA-Z0-9$#@]')

times=3
result=[]
while times:
    i = 0
    password = input('Enter your 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

学c的sjj 发表于 2020-11-23 22:10:40

疾风怪盗 发表于 2020-11-22 23:25


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


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

大佬带带我{:5_109:}

疾风怪盗 发表于 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里面的代码一样的判断了

学c的sjj 发表于 2020-11-24 17:35:30

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

import re

lowerRegex = re.compile('')
upperRegex = re.compile('')
digitRegex = re.compile('')
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


好像出问题了,他循环没有执行。。。
能改一下吗。。{:5_92:}

疾风怪盗 发表于 2020-11-24 22:11:02

学c的sjj 发表于 2020-11-24 17:35
import re

lowerRegex = re.compile('')


你为什么不循环呢?
import re

lowerRegex = re.compile('')
upperRegex = re.compile('')
digitRegex = re.compile('')
teshuzhifu = re.compile('[$#@]')
wrongRegex = re.compile('[^a-zA-Z0-9$#@]')


result = []


password = input('Enter your password:')
password = password.split(",")
print(password)
for p in password:
    i = 0
    if not lowerRegex.search(p) == None:
      i = i + 1
    if not upperRegex.search(p) == None:
      i = i + 1
    if not digitRegex.search(p) == None:
      i = i + 1
    if not teshuzhifu.search(p) == None:
      i = i + 1
    if len(p) > 8:
      i = i + 1
    if (i >= 5):
      result.append(p)
print(result)

# password: ABd1234@1,6546541,6498845
页: [1]
查看完整版本: 我想做一个筛选符合条件的数据的代码,但不知道出了什么问题,求大佬解答。。。