鱼C论坛

 找回密码
 立即注册
查看: 2140|回复: 8

[已解决]第二十讲的课后题

[复制链接]
发表于 2020-2-3 17:16:30 | 显示全部楼层 |阅读模式

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

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

x
str = """此处省略小甲鱼给出的长字符串......."""
Alpha = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
alpha = 'abcdefghijklmnopqrstuvwxyz'
length = len(str)
for each in range(length):
    if (str[each] in alpha):
        if (str[each-4] not in Alpha ) and (str[each-3] in Alpha ) and (str[each-2] in Alpha ) and (str[each-1] in Alpha ) and (str[each+1] in Alpha )and (str[each+2] in Alpha )and (str[each+3] in Alpha )and (str[each+4] not in Alpha ) :
            print(str[each],end ='')
            
关于这个程序的运行结果会出现这个错误提示:string index out of range,为什么要将range(length)改成range(length-1)
不理解,假设字符串的长度是80,那么range(80),就是指0~79,这和str[each]中下表的索引值正好相匹配呀,为什么需要减去一呢???
最佳答案
2020-2-3 17:34:29
你的string out of index不是那个的问题。
第一行,str这是一个内置函数,一般不用作变量名
str=‘zzz’
这样会出问题,因为你后边有一个str[each+4]
涉及到边缘会有这个问题,整体代码不知道什么意思,乱乱的。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-2-3 17:19:37 From FishC Mobile | 显示全部楼层
正常是不用
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-3 17:19:47 | 显示全部楼层
本帖最后由 一个账号 于 2020-2-3 17:21 编辑

在我这里是正常的。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-3 17:20:35 | 显示全部楼层

不用了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-3 17:34:29 | 显示全部楼层    本楼为最佳答案   
你的string out of index不是那个的问题。
第一行,str这是一个内置函数,一般不用作变量名
str=‘zzz’
这样会出问题,因为你后边有一个str[each+4]
涉及到边缘会有这个问题,整体代码不知道什么意思,乱乱的。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-3 17:35:33 | 显示全部楼层
一个账号 发表于 2020-2-3 17:19
在我这里是正常的。

C:\Users\HP\Desktop
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-3 17:36:37 | 显示全部楼层

减去一之后就不报错了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-3 17:46:32 | 显示全部楼层
ll104567 发表于 2020-2-3 17:34
你的string out of index不是那个的问题。
第一行,str这是一个内置函数,一般不用作变量名
str=‘zzz’  ...

谢谢,我明白了
整体的意思就是先判断字符是否是小写,是小写的话,判断前三个和后三个是不是大写,同时前面的第四个和后面的第四个不是大写,
问题确实是由str[each+]造成的.
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-3 18:02:59 From FishC Mobile | 显示全部楼层
  1. for each in range(length):
  2.     if (str[each] in alpha):
  3.         if (str[each-4] not in Alpha ) and (str[each-3] in Alpha ) and (str[each-2] in Alpha ) and (str[each-1] in Alpha ) and (str[each+1] in Alpha ) and (str[each+2] in Alpha )and (str[each+3] in Alpha ) and (str[each+4] not in Alpha ) :
复制代码

        each 的变化范围是 0 ~ length - 1,当 each = 0 时,str[each - 4] = str[- 4],而 str[- 4 ] = str[length - 4];当 each = length - 1 的时候,str[each + 4] = str[length + 3],你说会不会出错?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-4 06:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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