鱼C论坛

 找回密码
 立即注册
查看: 4357|回复: 14

[已解决]编程看不懂,为啥要减一

[复制链接]
发表于 2021-3-13 21:30:42 | 显示全部楼层 |阅读模式
3鱼币
为啥 s = len(s) 要减1
最佳答案
2021-3-13 21:30:43
本帖最后由 jackz007 于 2021-3-14 13:53 编辑

      因为一个长度为 20 字符串的索引范围是 0 ~ 19,其中,第一个字符索引是 0,最后一个索引是 19,如果用 20 进行索引,就会下标越界。
      反转字符串还能更简单
  1.       print(input('请输入一段文本:')[::-1])
复制代码
QQ截图20210313212831.jpg

为啥 s = len(s)要减1

为啥 s = len(s)要减1
QQ截图20210313212812.jpg

最佳答案

查看完整内容

因为一个长度为 20 字符串的索引范围是 0 ~ 19,其中,第一个字符索引是 0,最后一个索引是 19,如果用 20 进行索引,就会下标越界。 反转字符串还能更简单
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-3-13 21:30:43 | 显示全部楼层    本楼为最佳答案   
本帖最后由 jackz007 于 2021-3-14 13:53 编辑

      因为一个长度为 20 字符串的索引范围是 0 ~ 19,其中,第一个字符索引是 0,最后一个索引是 19,如果用 20 进行索引,就会下标越界。
      反转字符串还能更简单
  1.       print(input('请输入一段文本:')[::-1])
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-3-13 21:53:23 | 显示全部楼层
字符串的下标(或叫索引 index)和 列表一样,都是从 0 开始的。故下标最大为 len(s) - 1

可以把 字符串,看做是 一个个字符的列表。
故 获取/截取字符的方法,也和列表基本一样的。。^_
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-3-13 23:11:59 | 显示全部楼层
因为len()函数是从1开始计算长度的,而我们后面调用i时需要调用至0,也就是s[0],如果直接调用i=len(s),那么是无法完全调用列表中的元素,在这里也就是输入的字符,所以i需要进行减一处理。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-3-15 10:30:45 | 显示全部楼层
len(s)是获取字符串的长度,因为python里字符串下标是从0开始计算,所以最后一个字符的位置下标就是‘字符串长度-1’
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-3-18 15:56:09 | 显示全部楼层
列表的第一个原始是0号,从零开始
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-3-21 16:51:06 | 显示全部楼层
字符串是以'\0'结尾。举个例子,insert的存取方式为'i','n','s','e','r','t','\0'
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-3-27 20:13:53 | 显示全部楼层
可以将字符串理解为列表,列表的index都是从0开始的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-3-28 11:14:39 | 显示全部楼层
这个问题不复杂。就是字符串,是一个一个字符像烤串一样穿起来的组合。字符串内的每个字符,都是有坐标index的
这个len,就是计算字符串长度的函数,意思就是输入10个字符,长度就是10
之所以要-1,是因为字符坐标是从0开始的,也就是一段字符串,最后的那个字符的坐标index应该是len(s)-1
还是上门的长度问题,因为是从0开始计算下标,所以,一段10个字符的字符串,下标应该是从0到9一共10个数字。字符串的最后一个字符的坐标就出来了
while循环,循环输出s[i],i的数值已经在前面两行有一个数字结果。第一个输出的,就是字符串的最后一个字符,然后循环i-1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-3-28 11:38:00 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-3-28 11:38:08 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-3-28 15:19:11 | 显示全部楼层
因为字符串(列表)的index从0开始,假设 a = '1435'
                                                    index   0 1 2 3
len(a)等于4,但是a的index中没有4,最大的是3,比4小1。所以要减一。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-3-28 15:19:53 | 显示全部楼层
因为字符串(列表)的index从0开始,假设 a = '1435'
                                                    index   0 1 2 3
len(a)等于4,但是a的index中没有4,最大的是3,比4小1。所以要减一
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-3-28 15:21:21 | 显示全部楼层
名字只有七个字 发表于 2021-3-28 15:19
因为字符串(列表)的index从0开始,假设 a = '1435'
                                                    ...

sorry,多发了一遍
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-3-29 19:44:18 | 显示全部楼层
列表是从0开始的,列表的实际长度比列表显示的长度大一
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-26 05:17

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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