鱼C论坛

 找回密码
 立即注册
查看: 2784|回复: 2

[学习笔记] 005 变量和字符串(下)

[复制链接]
发表于 2022-12-7 19:57:05 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 AhrimanSefid 于 2022-12-7 19:57 编辑

001 代码 Shut up & Code
  1. print("D:\three\two\one\now") ---> 这样写会让Python产生误会
  2. print("D:\\three\\two\\one\\now") --->这样写也可以顺利打印,但如果有N个反斜杠就很麻烦了
  3. print(r"D:\three\two\one\now") --->这样就方便多了,原始字符串!
  4. print("                     \n\
  5.                @            \n\
  6.               / \\          \n\
  7.               * *           \n\
  8.               * *           \n\
  9.           * * * * * *       \n\
  10.         * * * * * * * *     \n\
  11.       * * * * * * * * * *   \n\
  12.               * *           \n\
  13.               * *           \n\
  14.           * * * * * *       \n\n\n") ---> 可以利用末尾的反斜杠声明“这事儿还没完!!”
  15. print("I love FishC
  16. ") --> 没有反斜杠就会报错
  17. poetry = """
  18. 面朝大海,春暖花开

  19. 从明天起,做一个幸福的人
  20. 喂马、劈柴,周游世界
  21. 从明天起,关心粮食和蔬菜
  22. 我有一所房子,面朝大海,春暖花开

  23. 从明天起,和每一个亲人通信
  24. 告诉他们我的幸福
  25. 那幸福的闪电告诉我的
  26. 我将告诉每一个人

  27. 给每一条河每一座山取一个温暖的名字
  28. 陌生人,我也为你祝福
  29. 愿你有一个灿烂的前程
  30. 愿你有情人终成眷属
  31. 愿你在尘世获得幸福
  32. 我只愿面朝大海,春暖花开
  33. """ ---> 使用三重引号字符串,就可以跨行输入而不用加\声明还没结束
  34. print(peotry) --> 没报错
  35. print(520 + 1314) ---> 输出结果:1834
  36. print("520" + "1314") ---> 输出结果:'5201314'
  37. print("我每天爱你三千遍!\n" * 3000)
复制代码


002 原始字符串 r"" & r''
用print()函数打印一个路径效果往往是不理想的:
  1. >>> print("D:\three\two\one\now")
  2. D:                        hree                        wo\one
  3. ow
复制代码

原因:还记得上次那个表格吗?
符号 说明
\\ 代表一个\反斜杠(不作任何识别)
\' 代表一个单引号(不作任何识别)
\" 代表一个双引号(不做任何识别)
\a 代表响铃(BEL)
\b 退格符(BS)
\n 换行符(LF)
\t 水平制表符(TAB)
\v 垂直制表符(VT)
\r 回车符(CR)
\f 换页符(FF)
\ooo ooo 为八进制数
\xhh hh 为十六进制数

一个个对照就会发现,Python产生了一个误会:把\three和\two当成了水平制表符;把\now当成了换行符(LF)。
要解决这个问题,就可以对照一下上面的表,发现\\表示的是单个反斜杠且不做任何识别。但这样写如果有N个字符串就太麻烦了!
好在Python提供了一种原始字符串,将对里面的任何转义字符都不做识别。
要想声明一个字符串是原始字符串的话,只需要在字符串前面加上一个小写字母r就行了。
  1. >>> print(r"D:\three\two\one\now")
  2. D:\three\two\one\now
复制代码

除此之外,反斜杠还不能放在末尾,因为·如果反斜杠放在末尾的话,就表示“这事儿还没完!!”
就好比现在要在屏幕上打印一个飞机,就可以这样写:
  1. print("                     \n\
  2.                @            \n\
  3.               / \\          \n\
  4.               * *           \n\
  5.               * *           \n\
  6.           * * * * * *       \n\
  7.         * * * * * * * *     \n\
  8.       * * * * * * * * * *   \n\
  9.               * *           \n\
  10.               * *           \n\
  11.           * * * * * *       \n\n\n")
复制代码


003 长字符串 Triple Quoted
上一篇笔记里写道,引号有三种,只讲了前两种,而最后一种Triple Quoted没有讲。
Triple Quoted就是三重引号字符串,用3个引把内容引起来(3和单引号或者3个双引号都行)。不过一定要注意一定一定要前后呼应,成双成对!
三重引号字符串可以跨行输入而且不用在美剧末尾加上\声明还没结束。例如:
  1. poetry = """
  2. 面朝大海,春暖花开

  3. 从明天起,做一个幸福的人
  4. 喂马、劈柴,周游世界
  5. 从明天起,关心粮食和蔬菜
  6. 我有一所房子,面朝大海,春暖花开

  7. 从明天起,和每一个亲人通信
  8. 告诉他们我的幸福
  9. 那幸福的闪电告诉我的
  10. 我将告诉每一个人

  11. 给每一条河每一座山取一个温暖的名字
  12. 陌生人,我也为你祝福
  13. 愿你有一个灿烂的前程
  14. 愿你有情人终成眷属
  15. 愿你在尘世获得幸福
  16. 我只愿面朝大海,春暖花开
  17. """
复制代码

打印出来,竟然成功了!

004 字符串的加法和乘法 + & ×
先来一个问题:520和"520"一样吗?
首先,给这两个520先做一下加法,结果却截然不同:
  1. >>> print(520 + 1314)
  2. 1834
  3. >>> print("520" + "1314")
  4. '5201314'
复制代码

现在来总结一下:字符串就是文本,虽然也可以进行加法乘法,但是和数字加法乘法的含义是完全不同的。
字符串的相加叫做拼接,就是将字符串组合成一个新的长的字符串。
除此之外,字符串还可以做乘法,也就是把一个内容复制粘贴N次。
例如你对一个小姐姐说“我每天爱你三千遍!”,但是小姐姐叫你写下来!
这是就可以给字符串做乘法了:
  1. print("我每天爱你三千遍!\n" * 3000)
复制代码


005 思维导图 Picture

                               
登录/注册后可看大图

评分

参与人数 3荣誉 +11 鱼币 +11 贡献 +6 收起 理由
高山 + 5 + 5 + 3 无条件支持楼主!
香蕉那个不拿拿 + 1 + 1 送你飞天
asky533 + 5 + 5 + 3 鱼C有你更精彩^_^

查看全部评分

本帖被以下淘专辑推荐:

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-12-8 11:02:31 | 显示全部楼层
  1. #来观摩下
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-12-9 14:50:09 | 显示全部楼层
优秀
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-23 04:02

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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