鱼C论坛

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

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

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

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

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

x
本帖最后由 明月小仙 于 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,导致下一轮循环错误。
最佳答案
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)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-27 06:20

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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