|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 fengchui 于 2020-7-8 14:49 编辑
能不能帮忙看下我写出来的结果是:
密码是: ['u', 'i', 'l', 'o', 'v', 'e', 'f', 'i', 's', 'd', 'h', 'c']
多了447位的U和4578位的d,代码如下
本帖最后由 yhhpf 于 2020-7-8 17:05 编辑
举个例子:
- >>> s='''aaaa
- bbbb
- cccc'''
- >>> s
- 'aaaa\nbbbb\ncccc'
- >>> len(s)
- 14
- >>> s[4]
- '\n'
- >>> s[4].isupper()
- False
- >>> s[4].islower()
- False
- >>> s[3:4].islower()
- True
复制代码
你代码中包含了"\n"换行符,而且你使用到切片的方式去判断是否大小写,所以你说的那两个位置返回了True,导致你将其加入了结果;修改方法如下:
不知道为什么要审核,只发部分代码看下:
- for num0 in range(3, length - 4): # 从第三个开始索引
- count += 1
- numl = num0 - 3 # 密码左边三个数字
- numr = num0 + 4 # 密码右边三个数字
- if numr <= length - 3:
- if (string[num0].islower()) and \
- (string[numl:num0].isupper()) and \
- (string[numl - 1].islower()) and \
- (string[num0 + 1:numr].isupper()) and \
- (string[numr].islower()) and \
- '\n' not in string[numl:numr]: #加上这句判断是否存在\n换行符
- # 判断逻辑:密码本身是小写+密码左边三个数是大写+密码左边的左边是小写+密码右边三个数是大写+密码右边的右边是小写
- liststr.append(string[num0])
- print('密码是:', ''.join(liststr))
复制代码
|
|