鱼C论坛

 找回密码
 立即注册
查看: 1446|回复: 4

[已解决]零基础学习Python 第20讲 动动手 第1题 求解

[复制链接]
发表于 2020-3-20 19:52:05 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 machangyou 于 2020-3-20 19:53 编辑

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


length=len(str2)
for each in range(4,length-4):
        a=str2[each+1:each+4]#提取each右边的三个字符
        b=str2[each-3:each]#提取each左边的三个字符
        c=str2[each+4]#提取each左边第四个字符
        d=str2[each-4]#提取each左边第四个字符
        for i in str2[each]:
                if i.islower():
                        if a.isupper() and b.isupper() and c.isupper()==False and d.isupper()==False:#判断each左右两边的三个字符为大写且第四个字符不是大写字母
                                print(i,end='')

请各位鱼油帮我看看我这段代码的问题出在哪里?
参考答案的返回结果是:ilovefishc
我的返回结果是:uilovefisdhc
最佳答案
2020-3-20 19:59:48
你是三个字符一起判断,表面上看上去可以,但是文本中包含有换行符'\n',会占用一个字符位而且isupper()会忽略,造成连续两个大写字符就判定为True,你多的两个字符就是这样来的,解决方法是把三个字符分开来判断,具体怎么实现有很多方法,再想想吧。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-20 19:59:48 | 显示全部楼层    本楼为最佳答案   
你是三个字符一起判断,表面上看上去可以,但是文本中包含有换行符'\n',会占用一个字符位而且isupper()会忽略,造成连续两个大写字符就判定为True,你多的两个字符就是这样来的,解决方法是把三个字符分开来判断,具体怎么实现有很多方法,再想想吧。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 2 反对 0

使用道具 举报

发表于 2020-3-20 20:16:12 | 显示全部楼层
本帖最后由 jackz007 于 2020-3-20 20:22 编辑
s , p = 'a' + '' . join(str1 . split('\n')) + 'a' , ''
for k in range(4 , len(s) - 4):
    if s[k - 4] . islower() and s[k - 3 : k] . isupper() and s[k] . islower() and s[k + 1 : k + 4] . isupper() and s[k + 4] . islower() : p += s[k]
print(p)
        让 str1 = 小甲鱼的字符串,然后运行这个代码。
       三引号字符串可以跨行,会把每个行末的换行符也带入字符串,换行符对于判断字符串属于干扰因素,所以, 第一行代码主要用于去除 str1 中所有的换行符 '\n',并在 str1 的首尾各添加一个小写字符 'a'。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-23 11:31:57 | 显示全部楼层
jackz007 发表于 2020-3-20 20:16
让 str1 = 小甲鱼的字符串,然后运行这个代码。
       三引号字符串可以跨行,会把每个行末的 ...

非常感谢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-23 11:32:29 | 显示全部楼层
txxcat 发表于 2020-3-20 19:59
你是三个字符一起判断,表面上看上去可以,但是文本中包含有换行符'\n',会占用一个字符位而且isupper()会 ...

非常感谢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-29 00:15

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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