关于变量信息传递错误的提问
本帖最后由 明月小仙 于 2020-5-11 15:31 编辑问题已自主解决,给您带来的不便,深表歉意。(另外,最佳答案解释的非常好,可以看看)
为分享经验,把原问题复制如下:
题目:请用已学过的知识编写程序,找出小甲鱼藏在下边这个长字符串中的密码,密码的埋藏点符合以下规律:
a) 每位密码为单个小写字母
b) 每位密码的左右两边均有且只有三个大写字母
代码如下:(思路简述,挨个判断条件,是否前三个字母为大写,如果是,第四个字母是否为小写,如果是,判断其后三个字母是否为大写,如果是则为所求。反之,flag清除重新判断。)
string = """ABScDKSbRIHcRHGcdDIF"""
flag = 0
passward = []
x = ''
for each in string:
if flag < 3:
if each.isupper():
flag += 1
else:
flag = 0
continue
if flag == 3:
if each.islower():
flag += 1
x = each
else:
flag = 0
continue
if flag >= 4:
if flag < 7:
if each.isupper():
flag += 1
else:
flag = 0
continue
elif flag == 7:
if each.isupper():
flag = 0
else:
passward.append(x)
flag = 4 #标记
print(passward)
错误在与注释标记处,给flag赋值为4,导致下一轮循环错误。 程序只有一个问题,就是找到一个字符之后,没有修改x的值。
在标记2后添加一句,x=each即可
string = """ABScDKSbRIHcRHGcdDIF"""
flag = 0
passward = []
x = ''
for each in string:
if flag < 3:
if each.isupper():
flag += 1
else:
flag = 0
continue
if flag == 3:
if each.islower():
flag += 1
x = each #标记1
else:
flag = 0
continue
if flag >= 4:
if flag < 7:
if each.isupper():
flag += 1
else:
flag = 0
continue
elif flag == 7:
if each.isupper():
flag = 0
else:
passward.append(x) #标记2
x = each
flag = 4
print(passward)
页:
[1]