明月小仙 发表于 2020-5-11 15:15:43

关于变量信息传递错误的提问

本帖最后由 明月小仙 于 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,导致下一轮循环错误。

sunrise085 发表于 2020-5-11 15:29:24

程序只有一个问题,就是找到一个字符之后,没有修改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]
查看完整版本: 关于变量信息传递错误的提问