鱼C论坛

 找回密码
 立即注册
查看: 671|回复: 1

[已解决]关于变量信息传递错误的提问

[复制链接]
发表于 2020-5-11 15:15:43 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 明月小仙 于 2020-5-11 15:31 编辑

问题已自主解决,给您带来的不便,深表歉意。(另外,最佳答案解释的非常好,可以看看)

为分享经验,把原问题复制如下:


题目:请用已学过的知识编写程序,找出小甲鱼藏在下边这个长字符串中的密码,密码的埋藏点符合以下规律:
    a) 每位密码为单个小写字母
    b) 每位密码的左右两边均有且只有三个大写字母


代码如下:(思路简述,挨个判断条件,是否前三个字母为大写,如果是,第四个字母是否为小写,如果是,判断其后三个字母是否为大写,如果是则为所求。反之,flag清除重新判断。)
  1. string = """ABScDKSbRIHcRHGcdDIF"""

  2. flag = 0
  3. passward = []
  4. x = ''
  5. for each in string:
  6.     if flag < 3:
  7.         if each.isupper():
  8.             flag += 1
  9.         else:
  10.             flag = 0
  11.         continue
  12.     if flag == 3:
  13.         if each.islower():
  14.              flag += 1
  15.              x = each           
  16.         else:
  17.             flag = 0
  18.         continue
  19.    
  20.     if flag >= 4:
  21.         if flag < 7:
  22.             if each.isupper():
  23.                 flag += 1   
  24.             else:
  25.                 flag = 0
  26.             continue
  27.         elif flag == 7:
  28.             if each.isupper():
  29.                 flag = 0
  30.             else:
  31.                 passward.append(x)           
  32.                 flag = 4                                   #标记

  33. print(passward)


复制代码



错误在与注释标记处,给flag赋值为4,导致下一轮循环错误。
最佳答案
2020-5-11 15:29:24
程序只有一个问题,就是找到一个字符之后,没有修改x的值。
在标记2后添加一句,x=each  即可
  1. string = """ABScDKSbRIHcRHGcdDIF"""

  2. flag = 0
  3. passward = []
  4. x = ''
  5. for each in string:
  6.     if flag < 3:
  7.         if each.isupper():
  8.             flag += 1
  9.         else:
  10.             flag = 0
  11.         continue
  12.     if flag == 3:
  13.         if each.islower():
  14.              flag += 1
  15.             
  16.              x = each             #标记1
  17.         else:
  18.             flag = 0
  19.         continue
  20.    
  21.     if flag >= 4:
  22.         if flag < 7:
  23.             if each.isupper():
  24.                 flag += 1   
  25.             else:
  26.                 flag = 0
  27.             continue
  28.         elif flag == 7:
  29.             if each.isupper():
  30.                 flag = 0
  31.             else:
  32.                 passward.append(x)           #标记2
  33.                 x = each
  34.                 flag = 4

  35. print(passward)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-5-11 15:29:24 | 显示全部楼层    本楼为最佳答案   
程序只有一个问题,就是找到一个字符之后,没有修改x的值。
在标记2后添加一句,x=each  即可
  1. string = """ABScDKSbRIHcRHGcdDIF"""

  2. flag = 0
  3. passward = []
  4. x = ''
  5. for each in string:
  6.     if flag < 3:
  7.         if each.isupper():
  8.             flag += 1
  9.         else:
  10.             flag = 0
  11.         continue
  12.     if flag == 3:
  13.         if each.islower():
  14.              flag += 1
  15.             
  16.              x = each             #标记1
  17.         else:
  18.             flag = 0
  19.         continue
  20.    
  21.     if flag >= 4:
  22.         if flag < 7:
  23.             if each.isupper():
  24.                 flag += 1   
  25.             else:
  26.                 flag = 0
  27.             continue
  28.         elif flag == 7:
  29.             if each.isupper():
  30.                 flag = 0
  31.             else:
  32.                 passward.append(x)           #标记2
  33.                 x = each
  34.                 flag = 4

  35. print(passward)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-19 01:18

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表