鱼C论坛

 找回密码
 立即注册
查看: 980|回复: 6

Python零基础第20讲动动手一

[复制链接]
发表于 2018-12-10 08:18:38 | 显示全部楼层 |阅读模式

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

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

x
问题如下:

1. 请用已学过的知识编写程序,找出小甲鱼藏在下边这个长字符串中的密码,密码的埋藏点符合以下规律:

    a) 每位密码为单个小写字母
    b) 每位密码的左右两边均有且只有三个大写字母



我写的代码是:
str1 = 'AAAASDFaAFDSFDADaSFSSDFSlFSADFeSFDDSFaDSFDSFDvSFSDFDSFeSAFDSDFSFSFDSFFDSFSDSFSFSFSDFDaSD'

m = 0
n = 6
list1= []
count = len(str1) - 6 #设置循环次数

for i in range(count):

    str2 = str1[m : n]  #将文本1截断成7个字符的文本

    if str2[3].islower():  #判断其中的第四个字符是否是小写
   
        str3 = str2[0:2]+str2[4:6]  #如果是将新文本中的前三和后三个字符组成新的文本
   
        for each in str3: #判断新的文本中是否所有字符全部为大写
        
            if each.isupper():
            
                list1.append(str2[3]) #以上条件都满足时将str2中的第四个位置的字符加入到list1中

    m += 1
    n += 1

为啥运行出的结果是:

>>> list1
['a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'l', 'l', 'l', 'l', 'l', 'e', 'e', 'e', 'e', 'e', 'a', 'a', 'a', 'a', 'a', 'v', 'v', 'v', 'v', 'v', 'e', 'e', 'e', 'e', 'e']

为什么每个小写字母出现了五遍呢。。。自己检查了好几遍也不觉得应该出现五遍呀?

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-12-10 08:54:43 | 显示全部楼层
按照你的思路改写的。
  1. str1 = 'AAAASDFaAFDSFDADaSFSSDFSlFSADFeSFDDSFaDSFDSFDvSFSDFDSFeSAFDSDFSFSFDSFFDSFSDSFSFSFSDFDaSD'

  2. m = 0
  3. n = 6
  4. list1= []
  5. count = len(str1) - 6 #设置循环次数

  6. for i in range(count):

  7.     str2 = str1[m : n]  #将文本1截断成7个字符的文本

  8.     if str2[3].islower():  #判断其中的第四个字符是否是小写
  9.    
  10.         str3 = str2[0:2]+str2[4:6]  #如果是将新文本中的前三和后三个字符组成新的文本
  11.    
  12.         flag = True
  13.         for each in str3: #判断新的文本中是否所有字符全部为大写
  14.         
  15.             if each.islower():
  16.                 flag = False
  17.                 break
  18.             
  19.         list1.append(str2[3]) #以上条件都满足时将str2中的第四个位置的字符加入到list1中

  20.     m += 1
  21.     n += 1
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-10 09:16:11 | 显示全部楼层
本帖最后由 heidern0612 于 2018-12-10 09:23 编辑

你切片的范围都错了。

[m:n]不是你定义的范围。[0:6]取不到6,所以你从上到下的切片范围都错了,先把切片范围改过来。


另外你这么设置不符合密码的定义,你有没有考虑第八个字符是大写还是小写呢?

第八个字符如果是小写还好,大写就不符合密码规律了。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-11 00:58:47 | 显示全部楼层
可以看看,我的帖子,之前也是有疑问,都解决了,思路,代码,和遇到的问题,可以看下https://fishc.com.cn/thread-127147-1-1.html  相信看完对你的思路应该有帮助
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-12-11 07:52:04 | 显示全部楼层
heidern0612 发表于 2018-12-10 09:16
你切片的范围都错了。

[m:n]不是你定义的范围。[0:6]取不到6,所以你从上到下的切片范围都错了,先把切 ...

切片范围确实是错了。。。
确实是,题目是每位密码左右都只有三个大写字母,我的思路是有问题的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-12-11 07:52:39 | 显示全部楼层
Stubborn 发表于 2018-12-11 00:58
可以看看,我的帖子,之前也是有疑问,都解决了,思路,代码,和遇到的问题,可以看下https://fishc.com.cn ...

好的,多谢,学习下
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-12-11 08:00:39 | 显示全部楼层
冬雪雪冬 发表于 2018-12-10 08:54
按照你的思路改写的。

对比了下,我的代码确实有问题,list1.append不应该在for里面,在for里面所以重复了好多遍。
不过楼下的答案也说了,我的判断是不符合密码逻辑的。
多谢指导!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-1-12 04:00

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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