鱼C论坛

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

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

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

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

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

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

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

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

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

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

002 原始字符串 r"" & r''
用print()函数打印一个路径效果往往是不理想的:
>>> print("D:\three\two\one\now")
D:                        hree                        wo\one
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就行了。
>>> print(r"D:\three\two\one\now")
D:\three\two\one\now
除此之外,反斜杠还不能放在末尾,因为·如果反斜杠放在末尾的话,就表示“这事儿还没完!!”
就好比现在要在屏幕上打印一个飞机,就可以这样写:
print("                     \n\
               @            \n\
              / \\          \n\
              * *           \n\
              * *           \n\
          * * * * * *       \n\
        * * * * * * * *     \n\
      * * * * * * * * * *   \n\
              * *           \n\
              * *           \n\
          * * * * * *       \n\n\n")

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

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

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

给每一条河每一座山取一个温暖的名字
陌生人,我也为你祝福
愿你有一个灿烂的前程
愿你有情人终成眷属
愿你在尘世获得幸福
我只愿面朝大海,春暖花开
"""
打印出来,竟然成功了!

004 字符串的加法和乘法 + & ×
先来一个问题:520和"520"一样吗?
首先,给这两个520先做一下加法,结果却截然不同:
>>> print(520 + 1314)
1834
>>> print("520" + "1314")
'5201314'
现在来总结一下:字符串就是文本,虽然也可以进行加法乘法,但是和数字加法乘法的含义是完全不同的。
字符串的相加叫做拼接,就是将字符串组合成一个新的长的字符串。
除此之外,字符串还可以做乘法,也就是把一个内容复制粘贴N次。
例如你对一个小姐姐说“我每天爱你三千遍!”,但是小姐姐叫你写下来!
这是就可以给字符串做乘法了:
print("我每天爱你三千遍!\n" * 3000)

005 思维导图 Picture

                               
登录/注册后可看大图

评分

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

查看全部评分

本帖被以下淘专辑推荐:

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

使用道具 举报

发表于 2022-12-8 11:02:31 | 显示全部楼层
#来观摩下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-12-9 14:50:09 | 显示全部楼层
优秀
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-22 17:44

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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