03-Python格式化输出与字符编码
数据类型转换
在程序开发时.会有涉及到数据之间需要类型转换的时候.
转换函数
int(数据)
–> 把数据转为整形float(数据)
–> 把数据转为浮点型bool(数据)
–> 把数据转为布尔型- 如果有值就为True.没有值为False
str(数据)
–> 把数据转为字符型list(数据)
–> 把数据转为列表型tuple(数据)
–> 把数据转为元组型
input的返回值
用input得到的数据默认都是str
1
2num = input('example')
print(num,type(num))如果要实现输入得到的数据为int/float:
1
2
3
4num = int(input('example') # 先输入数据.输入完之后把数据转为int类型
print(num,type(num))
num = float(input('example') # 先输入数据.输入完之后把数据转为float类型
print(num,type(num))所以在python中给变量命名是,不要用
list
,int
,print
,input
,type
作为变量名.否则会覆盖原来的功能类型转换之后要重新赋值保存
1
2
3
4
5age2 = '18'
int(age2)
print(type(age2)) # str
age2 = int(age2)
print(type(age2)) # int
字符串进阶(格式化输出)
- 变量混合使用
1
2
3
4
5
6name = 'zzy'
age = 114514
# print('你好.我叫'+name+'我今年'+age+'岁') 报错,int和str不能相加
print('你好.我叫'+name+'我今年'+str(age)+'岁')
print('你好.我叫'+name+'我今年',age,'岁',sep='')
在以后的编码过程中.经常会遇到字符串和变量,数值一起使用的情况.
但如果变量不是纯字符.而是其他类型的数据.拼接就会报错
所以这时候就需要格式化输出
格式化输出
- 用起来更方便更舒服的输出方式
- 可以更方便的输出带有变量的数据
- 可以更方便的输出固定格式的数据
尊敬的XX您好.您X月的账单已经发送.您使用话费共XXX元,流量共XX元.
字符串拼接
- 语法:字符串与字符串直接用
+
进行拼接
str
+str
- 案例:
1
2print('114'+'514')
print('我是'+name)
f-str
比较简单粗暴好用的输出方式
语法:
- 在字符串前加
f
/F
. - 在字符串里把要输出的变量用大括号{}包裹起来:
f'.*?{变量}.*?'
*其中.*?
指代一切其他字符
- 在字符串前加
案例:
1
2print(f'大家好.我是{name}我今年{age}岁')
print(f'大家好.我是{name[1]}我今年{age+1919810}岁')
- 大括号里的数据是可以操作的. 可以进行数值运算.序列类型的索引切片
占位符
用法:
先占个位置,后续再用具体的数据来顶上- 形参:没有具体的值,只是先占个位置
%d
= 整数形参%s
= 字符串形参%f
= 浮点数形参(默认是带6个小数)%.xf
:小数点后x位%.2f
:小数点后2位
- 实参:有具体的值,运行时会取代形参
- 形参:没有具体的值,只是先占个位置
语法:
1
2'xxx%dxxx'%数据
'xxx%sxxx%d'%(数据1,数据2)案例:
1
2
3
4print('我是%s'%name)
print('我是%s 我今年%d岁'%(name,age))
print('我是%s 我今年%d岁 还有几天发工资.我还剩%f元'%(name,age,168.5))
print('我是%s 我今年%d岁 还有几天发工资.我还剩%.2f元'%(name,age,520.25))
format
用法:
结合了占位符,f-str. 它先用{}
大括号作为占位符.在字符串后通过.format
传递数据语法:
1
2'xxx{}xxx'.format(数据)
'xxxx{}xxx{}'.format(数据1,数据2)案例:
1
2
3
4
5print('你好,我是{},我今年{}岁'.format(name,age))
print('我是{}.今天是{}我在马路边捡了{}元'.format('name','day3',1145))
print('我是{}.今天是{}我在马路边捡了{}元'.format(1145,'name','day3'))
print('我是{1}.今天是{2}我在马路边捡了{0}元'.format(1145,'name','day3'))
print('我是{}[1].今天是{}[2]我在马路边捡了{}[0]元'.format(1145,'name','day3'))要简单粗暴写f-str
要极致功能写format
- 补充
1
2
3
4
5
6names = ['Yui','Mio','Ritsu','Mugi','Azusa']
for i in names:
print('''
わだし{1}です
{0}だいすき!
'''.format('kon',i))如果format里面一个数据要反复使用.写上对应的下标就可以了.不用反复传数据
字符编码
计算机最底层只能识别0和1. 这些01如何变成我们看的字,图片,视频
计算机底层有一个用来的翻译的字典(字符集/字符编码).里面就有基本的字. 如果你要显示的字,字典里没有,那就是乱码
编程语言诞生之后,推行出来的第一套字符编码叫ascii码.里面收纳了一些符号,数字,字母 –> 没有中文,其他语言
1995年 –> 国内推行出GBK编码 –> 有两万多个汉字
中国台湾 –> BIG5, 大五码. 繁体字
每个国家如果都用自己国家的编码,不利于对外交流
有个组织,专门收集了世界上大部分国家的语言文字.汇总做了一个大的字典并推行使用. 现在大部分国家都是统一用这个字典,避免乱码的情况 –> utf-8
- 计算机的所有文字,都有一个对应的编号
- 目前世界上最主流的编码是 utf-8
- 一个程序用什么编码写的,就用什么编码去读取它.否则出问题
转换函数
ord(字符)
:通过字符,找到序号chr(序号)
:通过序号,找到字符encode
:对数据进行转码(爬虫的时候会用到)
运算符
运算符指的是在程序运行过程中有特别功能的符号
算术运算加减乘除
赋值运算各种赋值
算术运算符
+
-
*
/
%
**
//
比较运算符
==
!=
<>
>
<
>=
<=
赋值运算符
=
+=
-=
*=
/=
%=
**=
//=
逻辑运算符
and
:布尔”与”-如果x为False,x and y返回False,否则它返回y的计算值or
:布尔”或”-如果x是True,它返回True,否则它返回y的计算值。not
:布尔”非”-如果x为True,返回False。如果x为False,它返回True.
在python中.一个等号是用来赋值的.两个等号才是判断是否相等
==
: 是否相等!=
: 是否不相等
赋值运算:
=
1
2
3
4age = 18
age + 1 # 这样只是单纯+1,没保存
age += 1 # 等价于 age = age + 1
print(age)
逻辑运算符:
and
: ‘与’ 当有多个条件时,都满足才为真or
: ‘或’ 当有多个条件时,满足一个就为真not
: ‘非’ 取反
成员运算符:
in
: 判断数据,是不是在里面1
21 in [1,2,3] # True 列表里面有这个值
114 in (514,19,810) # False 元组里面没有这个值not in
: 判断数据,是不是不在里面1
21 not in [1,2,3] # False 列表里有这个值
114 not in (514,19,810) # True 元组里是没有这个值