鱼C论坛

 找回密码
 立即注册
12
返回列表 发新帖
楼主: yqymzwq

[已解决]003课后习题

[复制链接]
发表于 2020-4-6 10:50:38 | 显示全部楼层
遇到什么字符串input()看返回值不就好了吗,为什么要纠结于这个?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-6 16:36:58 | 显示全部楼层
永恒的蓝色梦想 发表于 2020-4-6 10:49
python是就近匹配原则哦,只不过中间的双引号被转义了

如果说中间的 双引号被转义了 为什么 中间的双引号前面只有两个\\
>>> a = r"Bruce Eckel say:\"Life is short, let\'s learn Python.\""
>>> a
'Bruce Eckel say:\\"Life is short, let\\\'s learn Python.\\"'
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-6 16:37:54 | 显示全部楼层

可是好像中间的双引号没有被转义是为什么呢
如果说中间的 双引号被转义了 为什么 中间的双引号前面只有两个\\
>>> a = r"Bruce Eckel say:\"Life is short, let\'s learn Python.\""
>>> a
'Bruce Eckel say:\\"Life is short, let\\\'s learn Python.\\"'
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-6 16:43:03 | 显示全部楼层
永恒的蓝色梦想 发表于 2020-4-6 10:50
遇到什么字符串input()看返回值不就好了吗,为什么要纠结于这个?

因为刚刚开始学习 感觉这个进入了一个逻辑的死区  之前认为中间的双引号被转义但是好像又不是。
我试着删除了中间一个双引号,发现在还是有两个 \\ 意味着是 \ 被转义而中间的 " 没有被转义
>>> a = r"Bruce Eckel say:\"Life is short, let\'s learn Python.\""
>>> a
'Bruce Eckel say:\\"Life is short, let\\\'s learn Python.\\"'
>>> a = r"Bruce Eckel say:\Life is short, let\'s learn Python.\""
>>> a
'Bruce Eckel say:\\Life is short, let\\\'s learn Python.\\"'
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-6 16:48:33 | 显示全部楼层
yqymzwq 发表于 2020-4-6 16:36
如果说中间的 双引号被转义了 为什么 中间的双引号前面只有两个\\
>>> a = r"Bruce Eckel say:\"Life is ...

因为反斜杠和双引号都被转义了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-6 16:52:02 | 显示全部楼层
yqymzwq 发表于 2020-4-6 16:43
因为刚刚开始学习 感觉这个进入了一个逻辑的死区  之前认为中间的双引号被转义但是好像又不是。
我试着 ...

在 r开始的字符串中出现 \' 或 \" 则两个字符都会被转义
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-6 16:54:10 | 显示全部楼层

有没有python内部认为 中间的 " 虽然没有转义 但是因为不能作为末尾 而不能作为末尾的优先级比较高 所以python试着寻找下一个可以作为结尾的 " ,所以导致虽然中间的 " 没有被转义但是不作为字符串的结尾。
因为我发现打印出来中间 " 前面只有两个 \\  意味着只有 \ 或 " 其中之一被转义 而我试着删除了 " 发现还是两个
\\ 意味着转义的是 \ 而 " 没有被转义。请问是不是这个意思 如果不是应该是怎样的呢?
>>> a = r"Bruce Eckel say:\"Life is short, let\'s learn Python.\""
>>> a
'Bruce Eckel say:\\"Life is short, let\\\'s learn Python.\\"'
>>> a = r"Bruce Eckel say:\Life is short, let\'s learn Python.\""
>>> a
'Bruce Eckel say:\\Life is short, let\\\'s learn Python.\\"'
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-6 16:57:46 | 显示全部楼层
永恒的蓝色梦想 发表于 2020-4-6 16:52
在 r开始的字符串中出现 \' 或 \" 则两个字符都会被转义

可是如果 \ ' 和 \" 都被转义那么 中间的 " 前面应该有 是 \\\ 应该有三个 \ 而不是两个 类似于 \'

我妄自的揣测是这个
有没有可能python内部认为 中间的 " 虽然没有转义 但是因为不能作为末尾 而不能作为末尾的优先级比较高 所以python试着寻找下一个可以作为结尾的 " ,所以导致虽然中间的 " 没有被转义但是不作为字符串的结尾。
因为我发现打印出来中间 " 前面只有两个 \\  意味着只有 \ 或 " 其中之一被转义 而我试着删除了 " 发现还是两个
\\ 意味着转义的是 \ 而 " 没有被转义。请问是不是这个意思 如果不是应该是怎样的呢?
>>> a = r"Bruce Eckel say:\"Life is short, let\'s learn Python.\""
>>> a
'Bruce Eckel say:\\"Life is short, let\\\'s learn Python.\\"'
>>> a = r"Bruce Eckel say:\Life is short, let\'s learn Python.\""
>>> a
'Bruce Eckel say:\\Life is short, let\\\'s learn Python.\\"'
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-6 17:01:56 | 显示全部楼层
yqymzwq 发表于 2020-4-6 16:57
可是如果 \ ' 和 \" 都被转义那么 中间的 " 前面应该有 是 \\\ 应该有三个 \ 而不是两个 类似于 \'

...

你的理解是正确的。

可能是我没说明白,引号被转义指的就是不能作为字符串末尾了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-6 17:09:19 | 显示全部楼层
永恒的蓝色梦想 发表于 2020-4-6 17:01
你的理解是正确的。

可能是我没说明白,引号被转义指的就是不能作为字符串末尾了。

emmm 我的意思是中间的引号没有被转义。。 因为被转义的话他的前面应该有 \\\ 而不是两个

是不是因为python 内部优先级的问题,\ 不能做结尾的优先级高于 " 作为双引号构成字符串的功能,所以造成了
" 没有被转义 仍存在于字符串内部这样一个诡异的正常。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-6 17:19:19 | 显示全部楼层    本楼为最佳答案   
yqymzwq 发表于 2020-4-6 17:09
emmm 我的意思是中间的引号没有被转义。。 因为被转义的话他的前面应该有 \\\ 而不是两个

是不是因为p ...


被转义了,但是返回的字符串是用单引号,所以说双引号前面不需要加\
但是你的字符串是用双引号引起来的,所以双引号前必须要加\,否则字符串就结束了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-6 17:31:27 | 显示全部楼层
永恒的蓝色梦想 发表于 2020-4-6 17:19
被转义了,但是返回的字符串是用单引号,所以说双引号前面不需要加\
但是你的字符串是用双引号引起来 ...

就是说 返回的中间的 " 其实是  \“,但是因为返回值的两边是单引号 所以返回的 " 前面不需要再加 \ 但是其实已经变成了 \" 是么。 其实是一个披着 " 皮的 \ " 对嘛?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-6 17:31:49 | 显示全部楼层
yqymzwq 发表于 2020-4-6 17:31
就是说 返回的中间的 " 其实是  \“,但是因为返回值的两边是单引号 所以返回的 " 前面不需要再加 \ 但是 ...

差不多可以这么理解
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-6 17:34:09 | 显示全部楼层

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-26 01:33

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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