鱼C论坛

 找回密码
 立即注册
查看: 1564|回复: 2

[已解决]旧版20讲中动动手的第一题

[复制链接]
发表于 2020-11-21 16:55:54 | 显示全部楼层 |阅读模式

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

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

x
passward = ''
length = len(string2)
for i in range(length):
    each = string2[i]
    if each == '\n':
        continue
    if each.islower():
        total1 = string2[i-3:i]
        total2 = string2[i+1:i+4]
        total3 = string2[i-4:i-3]
        total4 = string2[i+4:i+5]
        if total1.isupper() + total2.isupper() == 2:
            if (total3.isupper() + total4.isupper() == 0):
                passward = passward + each
    total1 = ''
    total2 = ''
    total3 = ''
    total4 = ''

print(passward)

这个是我20讲动动手的做法,大概思路是在前三个以及后三个字母全都是大写的前提下比较第四个字母大小写
首先左边三个大写字母赋予字符串total1,右边三个大写字母赋予字符串total2,左边第四个字母赋予total3,右边第四个字母赋予total4
在total1和total2全为大写字母的前提下,若total3,4全为小写字母 得到密码对应字母
可是结果为:uilovefisdhc
并非想要的

我在网上找到了相似的另一种做法:
passward = ''
length = len(string2)
for i in range(length):
    each = string2[i]
    if each == '\n':
        continue
    if each.islower():
        if string2[i + 1].isupper() + string2[i - 1].isupper() == 2:
            if string2[i + 2].isupper() + string2[i - 2].isupper() == 2:
                if string2[i + 3].isupper() + string2[i - 3].isupper() == 2:
                    if string2[i + 4].isupper() + string2[i - 4].isupper() == 0:
                        passward = passward + each

print(passward)

他的思路大概是将目标字母两侧相同距离的字母大小写进行判断,若左右两侧三个字母全为大写,但两侧第四个字母全为小写的情况下输出对应密码
这种做法的结果是正确的
求教大佬们我代码本身哪方面出了问题,麻烦你们了,谢谢!
最佳答案
2020-11-21 22:55:57
本帖最后由 gonff 于 2020-11-21 22:57 编辑
>>> a = 'Fish'
>>> a.isupper()
False
>>> a = 'F HK'
>>> a.isupper()
True
>>> a = 'F\nHK'
>>> a.isupper()
True
>>> a = '\n'
>>> a.isupper()
False 
看起来isupper()对于一长串字符时,不会去管非字母字符。对于单个字符则可以判断。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-11-21 22:55:57 | 显示全部楼层    本楼为最佳答案   
本帖最后由 gonff 于 2020-11-21 22:57 编辑
>>> a = 'Fish'
>>> a.isupper()
False
>>> a = 'F HK'
>>> a.isupper()
True
>>> a = 'F\nHK'
>>> a.isupper()
True
>>> a = '\n'
>>> a.isupper()
False 
看起来isupper()对于一长串字符时,不会去管非字母字符。对于单个字符则可以判断。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-22 15:04:34 | 显示全部楼层
gonff 发表于 2020-11-21 22:55
看起来isupper()对于一长串字符时,不会去管非字母字符。对于单个字符则可以判断。

谢谢大佬!我确实忽略了这个情况
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-17 14:01

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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