QQ登录

只需一步,快速开始

搜索
鱼C论坛笔记大赛成绩公示
查看: 72|回复: 3

为啥会越界呢

[复制链接]
最佳答案
0 
累计签到:29 天
连续签到:1 天
发表于 2017-9-12 21:14:40 | 显示全部楼层 |阅读模式

马上注册加入鱼C,享用更多服务吧^_^

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

x
就是某节课的课后作业,就是小写字母两边有且仅有三个大写字母,最后能找出来是ilovefishc,
下边有注释的那一行,我想获取字符串的第一个字符和最后一个字符但是我使用str2[0]和str2[8]的时候提示我下标越界,我只好使用切片了str2[:1]和str2[8:],我实在是不知道为啥,求助。
  1. str1 = '...' #很长的字符串我就不上了
  2. password = []
  3. length = 0
  4. for each in str1:
  5.     if each.islower():
  6.         str2 = str1[length - 4 : length + 5]
  7.         count = str2.find('\n')
  8.         if count >= 0:
  9.             str2 = str1[length - 4 : length + count - 4] + str1[length + count - 3: length + 6]
  10.         if str2[:1].islower() and (str2[8:]).islower() and str2[1:4].isupper() and str2[5:8].isupper():################
  11.             password.append(each)
  12.     length+=1
  13. print(password)
复制代码
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
最佳答案
7 
累计签到:10 天
连续签到:1 天
发表于 2017-9-12 23:17:41 | 显示全部楼层
说你越界,说明你的str2的长度不够。
str[:1]这是切片,切片不会报错,会给一个[]。
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
最佳答案
0 
累计签到:29 天
连续签到:1 天
 楼主| 发表于 2017-9-13 20:04:58 | 显示全部楼层
本帖最后由 宫志强 于 2017-9-13 20:11 编辑
bush牛 发表于 2017-9-12 23:17
说你越界,说明你的str2的长度不够。
str[:1]这是切片,切片不会报错,会给一个[]。


我已经解决了,小问题,开头和结尾没考虑到,开头可能不够9个字符,读取会发生错误
下面是正确代码:
  1. str1 = '...'
  2. password = []
  3. length = 0
  4. for each in str1:
  5.     if length > 3 and length < len(str1) - 5:
  6.         if each.islower():
  7.             str2 = str1[length - 4 : length + 5]
  8.             count = str2.find('\n')
  9.             if count >= 0:
  10.                 str2 = str1[length - 4 : length + count - 4] + str1[length + count - 3: length + 6]
  11.             if str2[0].islower() and (str2[8]).islower() and str2[1:4].isupper() and str2[5:8].isupper():
  12.                 password.append(each)
  13.     length+=1
  14. print(password)
复制代码
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
最佳答案
9 
累计签到:198 天
连续签到:1 天
发表于 2017-9-14 00:00:28 | 显示全部楼层
防止此类问题最好的办法就是倒着取  
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

小甲鱼强烈推荐上一条 /1 下一条

小黑屋手机版Archiver( 粤公网安备 44051102000370号 | 粤ICP备11014136号

© 2010-2017 FishC.com GMT+8, 2017-9-27 02:09 Powered by Discuz! X2.5 Theme by dreambred

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