鱼C论坛

 找回密码
 立即注册
查看: 85|回复: 7

[已解决]理解不了字符串倒序

[复制链接]
匿名鱼油
匿名鱼油  发表于 2024-5-7 21:26:31 |阅读模式

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

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

x
为什么"hello"[-1]+"hello"[:-1]返回的是olleh而不是ohell?
"hello"[:-1]不是默认从左到右进行吗?
为什么"hello"[-1]+"hello"[:-2]返回值是ohell?
最佳答案
2024-5-7 23:54:22



你这是递归函数的执行结果,reverse_string("hello") 并不等同于 "hello"[-1]+"hello"[:-1]

本帖被以下淘专辑推荐:

回复

使用道具 举报

发表于 2024-5-7 21:26:41 | 显示全部楼层
哈哈,这个问题有点有趣!实际上,字符串的拼接并不是按照从左到右的顺序进行的。

在Python中,"+"操作符用于连接两个字符串。当你使用"hello"+"hello"时,实际上是创建了一个新的字符串,该字符串包含了第一个"hello"和第二个"hello"两个部分。

让我们来逐步解析一下这个过程:

1. 首先,我们有第一个字符串"hello"。
2. 然后,我们将第一个字符串与第二个字符串"hello"进行连接,得到"hellohello"。
3. 最后,得到的新字符串就是"hellohello"。

所以,+"hello"的结果是"ollehhello",而不是"ohell"。

希望这样解释能够帮助你理解字符串的拼接。如果有更多问题,请随时提问哦!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-5-7 21:50:20 | 显示全部楼层

回帖奖励 +10 鱼币

在 Python 中,字符串索引和切片非常灵活,可以从正向或反向访问。

这里有几个关键点一定要搞懂(不会的去看小甲鱼Python最新版列表切片课程):

  • 负数索引:在 Python 中使用负数索引时,字符串将从后往前进行计数,其中 -1 代表字符串的最后一个字符。所以 "hello"[-1] 返回 'o'。
  • 切片操作:"hello"[:-1] 表示从字符串的开头取到倒数第一个字符之前的位置,不包括索引 -1 指定的字符。因此,它返回 "hell"(从第一个字符到倒数第一个字符前的所有字符)。

所以,当你执行 "hello"[-1] + "hello"[:-1] 时:

  • "hello"[-1] 得到 'o'
  • "hello"[:-1] 得到 'hell'

将这两个结果相加,就得到 'ohell'。

然而,问题中你认为会得到 'olleh' 而不是 'ohell',实际上你可能误解了表达式。

第二个表达式 "hello"[-1]+"hello"[:-1] 的确返回 'ohell'。

至于你提到的 'olleh',这将是通过另一种切片和附加顺序获得的结果。

例如,如果先取 "hello"[::-1] (这将翻转整个字符串,结果为 'olleh'),但这并不是你的表达式所做的。

对于第二个问题,关于为什么 "hello"[-1]+"hello"[:-2] 返回的是 'ohell':

  • "hello"[:-2] 表示从字符串的开头取到倒数第二个字符之前的位置,不包括索引 -2 指定的字符。因此,它返回 "hel"。

因此,当执行 "hello"[-1] + "hello"[:-2] 时:

  • "hello"[-1] 得到 'o'
  • "hello"[:-2] 得到 'hel'

将这两个结果相加,就得到 'ohel'。

这里要注意,你提到返回结果为 'ohell',这可能是一个打字错误。

正确的应该是 'ohel'。

Python课程:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-5-7 21:59:02 | 显示全部楼层
本帖最后由 jackz007 于 2024-5-7 22:04 编辑

      "hello"[:-1] 的意思是对 "hello" 按从开头到尾部最后一个字符(不包括该字符)进行切片,所以,切出来应该是 "hell", 而 "hello"[-1] 则是提取字符串 "hello" 的最后那个字符 "o",所以,表达式:
  1. "hello"[-1]+"hello"[:-1]
复制代码

      形成的字符串是:
  1. "ohell"
复制代码

      而形成字符串:
  1. "olleh"
复制代码

      的表达式应该是 :
  1. "hello"[::-1]
复制代码

      或者
  1. "hello"[-1]+"hello"[-2::-1]
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-5-7 22:21:40 | 显示全部楼层
你的问题不成立呀

1、为什么"hello"[-1]+"hello"[:-1]返回的是olleh而不是ohell?
"hello"[-1]+"hello"[:-1] 返回的就是 ohell 呀

2、"hello"[:-1]不是默认从左到右进行吗?
"hello"[:-1] 就是从左往右呀

3、为什么"hello"[-1]+"hello"[:-2]返回值是ohell?
"hello"[-1]+"hello"[:-2] 返回的是 ohel,并不是 ohell
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-5-7 23:29:34 | 显示全部楼层
jackz007 发表于 2024-5-7 21:59
"hello"[:-1] 的意思是对 "hello" 按从开头到尾部最后一个字符(不包括该字符)进行切片,所以,切出 ...

那个或者那里输出是ohlel
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-5-7 23:33:13 From FishC Mobile | 显示全部楼层
isdkz 发表于 2024-5-7 22:21
你的问题不成立呀

1、为什么"hello"[-1]+"hello"[:-1]返回的是olleh而不是ohell?

Screenshot_20240507_233238.jpg Screenshot_20240507_233242.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-5-7 23:54:22 | 显示全部楼层    本楼为最佳答案   



你这是递归函数的执行结果,reverse_string("hello") 并不等同于 "hello"[-1]+"hello"[:-1]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-19 23:08

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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