python:找出藏在下边这个长字符串中的密码。有问题,求大佬帮忙
本帖最后由 香喷喷的咸鱼 于 2021-1-17 11:32 编辑str1 = ''''ABSaDKSbRIHcRHGcdDIF'''
left=0
right=0
small=0
# 此处不可for each in str1 此时each代表的是某一元素的名称 而非索引,不方便下文找大写字母
length=len(str1)
list1=[]
str2=''
#判断前只有3个是大写字母:是的话返回1
def Big():
for a in range(-1,-4,-1):
if str.isupper:
b+=1
if b==3:
return 1
else:
return 0
#判断后只有3个是小大写字母:是的话返回1
def Small():
for a in range(4):
if str.isupper:
b+=1
if b==3:
return 1
else:
return 0
for i in range(length):
#判断是否回车!!经常忘记
if str1=='\n':
continue #continue 用于此处恰到好处!
a=0
b=0
if (str1.isupper)and Big() and Small():#先判断小写字母,再判前后只有三个大写
list1.append(str1)
str2=''.join(list1)
print(str2)
这是我写的程序,奈何知识有限,无法找到其中的错误,我想大概的思路应该是正确的。
还希望,温柔善良的鱼油帮帮我这个鱼渣找找错!!
感激不尽!
这是python的课后题!{:5_99:} {:9_220:} 其实,这题的最大障碍,就是 str1 中含有无效字符 '\n' 了,去掉后,程序可以写的非常简单
s , p = 'a' + '' . join(str1 . split('\n')) + 'a' , ''# 去掉 str1 中的换行符,并在首尾各添加一个小写字母 'a'
for k in range(4 , len(s) - 4):
if s . islower() and s . isupper() and s . islower() and s . isupper() and s . islower():
p += s
print(p) jackz007 发表于 2021-1-17 11:08
其实,这题的最大障碍,就是 str1 中含有无效字符 '\n' 了,去掉后,程序可以写的非常简单
这样子的话。a不也是一个小写字母,会有干扰的吗?{:10_266:}
你的思路给我很大的启发!
能不能帮我看一下,我这样子有什么问题{:10_254:} str1 = '''ABSaDKSbRIHcRHGcdDIF'''
for i in range(len(str1)-6):
if (str1.isupper() and
str1.islower() and
str1.isupper()):
print(str1) qq1151985918 发表于 2021-1-17 11:50
这样不可以保证第四位数是小写哦。。题目要求只有!!!!只有!!!!只有!!!!前后三位是大写 本帖最后由 qq1151985918 于 2021-1-17 12:33 编辑
香喷喷的咸鱼 发表于 2021-1-17 12:27
这样不可以保证第四位数是小写哦。。题目要求只有!!!!只有!!!!只有!!!!前后三位是大写
好像是有点问题,等我改一改 香喷喷的咸鱼 发表于 2021-1-17 12:27
这样不可以保证第四位数是小写哦。。题目要求只有!!!!只有!!!!只有!!!!前后三位是大写
str1 = '''ABSaDKSbRIHcRHGcdDIF'''
for i in range(len(str1)-6):
if i == 0:
if (str1.isupper() and
str1.islower() and
str1.isupper() and
(not str1.isupper())):
print(str1)
else:
if ((not str1.isupper()) and
str1.isupper() and
str1.islower() and
str1.isupper() and
(not str1.isupper())):
print(str1)
本帖最后由 °蓝鲤歌蓝 于 2021-1-17 14:11 编辑
str1 = "ABSabDKSbRIHcRHGdDIFeokj"
s = "a" + str1.replace("\n", "") + "a"
M = L = 0
p = ""
for r in range(len(s)):
if s.islower():
if M - L == r - M == 4:
p += s
L, M = M, r
print(p)
用下标判断不香吗? 本帖最后由 °蓝鲤歌蓝 于 2021-1-17 14:14 编辑
1. 函数写的我看得好累,还不如不要抽象出函数。
2. Big 和 Small 里是 str1,不是 str,建议这些变量或者函数命名(left或者right)写清晰点,最好一开始就养成好习惯,不然后面还是要改过来的。
2. for 循环第一次时,i = 0,Big() 里的 str1a + i 全是负数,这是不合逻辑的。
3. 这个 a = 0 有什么用啊?
4. 后面的没看了,我的眼睛受不了了。 本帖最后由 香喷喷的咸鱼 于 2021-1-18 09:35 编辑
°蓝鲤歌蓝 发表于 2021-1-17 13:06
1. 函数写的我看得好累,还不如不要抽象出函数。
2. Big 和 Small 里是 str1,不是 str,建议这些变量或者 ...
{:5_107:}谢谢指导!
那个for循环。。我是想实现逆循环,从右往左,不可以吗 本帖最后由 香喷喷的咸鱼 于 2021-1-18 09:31 编辑
°蓝鲤歌蓝 发表于 2021-1-17 13:01
用下标判断不香吗?
你的程序可以{:5_106:}
但我也有些看不懂。。{:5_96:} 尤其是最后一个if判断 ==4的意义 qq1151985918 发表于 2021-1-17 12:43
你的程序可以的!
谢谢 香喷喷的咸鱼 发表于 2021-1-18 09:27
你的程序可以
但我也有些看不懂。。 尤其是最后一个if判断 ==4的意义
密码之间有三个大写字母,所以两个密码的下标相减为4
页:
[1]