" /t \n是别具一格记号;int()、str()、float()承担类型间的跨越。
9.1 转义字符:反斜杠的暗号
引号具备特殊身份, 其作用是包裹字符串, 换行无法直接录入到一行代码之中, 转义字符就是专门用来解决那些“写不进去或者会产生歧义”情况的暗号, 具体表现为反斜杠加上一个特定字符就代表着一种全新的含义。
转义字符
print("第一行\n第二行") # \n 换行 —— 最常用 print("姓名:\t张三") # \t 制表符(Tab,约 4-8 空格,常做对齐) print("他说:\"你好\"") # \" 让引号失去"包裹"身份,变成普通字符 print("路径:C:\\Users\\tom") # \\ 两个反斜杠 = 一个真正的反斜杠 print(r"C:\Users\tom") # r 前缀 = 原始字符串:反斜杠不作暗号(写路径神器)转义, 等同于战场上所存在的“暗语”, 正常情况之下, 喊出“撤”这个字, 意味着下达了撤退的命令, 而喊出“暗语撤”, 则表达的是字面意义上的“撤”这个字,反斜杠, 就是那个“暗语”的前缀, 它后面跟着的字符, 不再依照特殊身份去行事, 而是改为按照字面含义或者新的含义去办事。
路径存在三种选择, 其一是"C:\\Users\\tom", 这里是双反斜杠, 其二是r"C:\Users\tom", 此为原始字符串, 是最为推荐的, 其三是"C:/Users/tom", 即也认正斜杠。对于r字符串唯一需要留意的是, 结尾绝对不可以是单独的一个反斜杠。
9.2 类型转换:四大函数
四大转换
# int():转整数 print(int("666")) # 666 —— 纯数字字符串可以转 print(int(3.99)) # 3 —— 浮点转 int 直接砍掉小数(不是四舍五入!) print(int(-3.99)) # -3 —— 往零的方向砍 # float():转浮点 print(float("3.14")) # 3.14 print(float(5)) # 5.0 # str():转字符串 —— 万物皆可转 print(str(666)) # "666" print(str(3.14)) # "3.14" # bool():转真假 —— "空"与"零"是 False,其余是 True print(bool(0), bool(""), bool(None)) # False False False print(bool(42), bool("hi"), bool(-1)) # True True True函数
成功场景
翻车场景()
int("666")
纯整数文本
int("3.14")、int("abc")
float("3.14")
数字文本(带小数点也行)
float("一元")
str(任何)
从不失败
——
bool(x)
从不失败
——(记忆:0、空串、None、空容器为假)
输入函数永远返回字符串, 就算你输入的是666, 得到的仍旧是"666", 在输入函数赋值给变量之后若要进行算术运算, 必须重新使用输入函数并将其转换为整数类型, 这是新手极易出错的关键地方, 结合下一课关于输入函数的详细讲解来理解。 ``` ``` ``` ``` ```。
为啥要进行类型转换, 是由于类型不一样不能直接进行运算, 就像"1"加上那个1会报错, 报错内容是字符串和整数没办法相加。在程序的世界当中, 数据从文件、网络以及用户输入那里过来的时候都是文本形式, 进入到你的程序之后需要去查验清楚自身并转换成正确的类型然后再去干活,这一步也就叫做数据清洗的雏形, 是这样的情况。
int(3.99)为何是3而非4? 要是想来个四舍五入该咋办? ——int()属于“截断”行为并非“四舍五入”哦(实则设计就这样, 目的是为确保截断方向具备可预测性呀)。诸如四舍五入的话则可以采用round(3.99)(如此能得到4, 要留意round返回的是int类型哦)或者借助格式化f"{3.99:.0f}"。至于银行家舍入的那些精细内容等日后碰到再深入研究, 首先得记好“砍掉”以及“舍去再进位”是两种不同动作。
️ 本课练习
首先完成练习 1, 通过一行 print 加上 \n\t 来输出一张迷你成绩单, 先输出标题行, 随后插入分隔行, 接着展示两行数据, 这两行数据中姓名和分数要使用制表符进行对齐。
打印(\"成绩单\n------\n张三\t92\n李四\t88\")。制表符用来对齐信息之处, 于中文环境当中, 鉴于汉字占据两格之缘故, 会稍微出现错位的情况, 待习得容器之后, 能够借助格式化宽度达成精确的对齐效果。
练习 2: 进行预测之后加以验证: int("3.14")这个会有怎样的结果或者出现报错? int(float("3.14"))这样会如何? float("1")会怎样? str(1+1)会有什么情况? bool("False")会是什么结果或者报错?
第一个, 存在一种情况是不能直接将其转变为带有小数点形式的文本;第二个, 数字3需要先进行转换为浮点数类型的操作, 之后再进行砍的动作;第三个, 其数值为1.0;第四个, 对于"2"这个字符, 要先进行计算方面的操作, 之后再进行转换;第五个, 其值为True!——需要注意的是, 对于"False", 它属于非空的字符串, 只要是非空状态就判定为真。最后一个, 这个坑已经让无数人都经历过因它而哭泣的情况了。
进行这样的操作, 首先要写三行代码, 代码内容是等于"19.9", 然后是通过特定方式把它转成 float 类型存入 price!接着并且要输出这样一个语句, 语句内容是"涨价 10% 后是 xx.x 元""这里的 xx.x是按照以"f- 一位小数" 的格式呈现。
price被赋予float()的值, 接着print(f"涨价百分之十之后是{price乘以一点一并保留一位小数}元")。链路体会为: 文本进入, 转变为数字, 进行算术运算, 以格式化形式输出, 这是所有数据处理程序的骨架。
练习4: 思考题目: int函数,对于中间带有空格的字符串, 比如" 66", 是否能够进行转换? 对于"0x1A"这样的字符串又如何? 亲自进行操作验证, 并总结分析, 什么样的字符串能够被int函数所接受。
将包含首尾空白的字符串“ 66 ”转换为整数类型int(" 66") 是成功的, 其值为66 , 而将字符串“0x1A”转换为整数类型int("0x1A") 则失败。int 还有一种进阶形式即int("1A", 16) , 它能够按照指定进制进行解析 , 要等下下课学习了进制之后回来把玩。规则总结为: 允许存在首尾空白 , 并且可以有可选的正负号 , 同时必须是纯数字组成。