霂喵喵 发表于 2021-3-13 21:30:42

编程看不懂,为啥要减一

为啥 s = len(s) 要减1

jackz007 发表于 2021-3-13 21:30:43

本帖最后由 jackz007 于 2021-3-14 13:53 编辑

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

阿奇_o 发表于 2021-3-13 21:53:23

字符串的下标(或叫索引 index)和 列表一样,都是从 0 开始的。故下标最大为 len(s) - 1

可以把 字符串,看做是 一个个字符的列表。
故 获取/截取字符的方法,也和列表基本一样的。。^_

Mr.I 发表于 2021-3-13 23:11:59

因为len()函数是从1开始计算长度的,而我们后面调用i时需要调用至0,也就是s,如果直接调用i=len(s),那么是无法完全调用列表中的元素,在这里也就是输入的字符,所以i需要进行减一处理。

atai0622 发表于 2021-3-15 10:30:45

len(s)是获取字符串的长度,因为python里字符串下标是从0开始计算,所以最后一个字符的位置下标就是‘字符串长度-1’

sdhmlsq 发表于 2021-3-18 15:56:09

列表的第一个原始是0号,从零开始

Wuliq 发表于 2021-3-21 16:51:06

字符串是以'\0'结尾。举个例子,insert的存取方式为'i','n','s','e','r','t','\0'

minipiao 发表于 2021-3-27 20:13:53

可以将字符串理解为列表,列表的index都是从0开始的

mmld32 发表于 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-1

1908496509 发表于 2021-3-28 11:38:00

{:5_100:}

3553107168 发表于 2021-3-28 11:38:08

{:5_93:}

名字只有七个字 发表于 2021-3-28 15:19:11

因为字符串(列表)的index从0开始,假设 a = '1435'
                                                    index   0 1 2 3
len(a)等于4,但是a的index中没有4,最大的是3,比4小1。所以要减一。

名字只有七个字 发表于 2021-3-28 15:19:53

因为字符串(列表)的index从0开始,假设 a = '1435'
                                                    index   0 1 2 3
len(a)等于4,但是a的index中没有4,最大的是3,比4小1。所以要减一

名字只有七个字 发表于 2021-3-28 15:21:21

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

sorry,多发了一遍

剑廿三 发表于 2021-3-29 19:44:18

列表是从0开始的,列表的实际长度比列表显示的长度大一
页: [1]
查看完整版本: 编程看不懂,为啥要减一