zzy
03-Python格式化输出与字符编码

03-Python格式化输出与字符编码


        

数据类型转换

在程序开发时.会有涉及到数据之间需要类型转换的时候.

转换函数

  • int(数据) –> 把数据转为整形
  • float(数据) –> 把数据转为浮点型
  • bool(数据) –> 把数据转为布尔型
    • 如果有值就为True.没有值为False
  • str(数据) –> 把数据转为字符型
  • list(数据) –> 把数据转为列表型
  • tuple(数据) –> 把数据转为元组型

input的返回值

  1. 用input得到的数据默认都是str

    1
    2
    num = input('example')  
    print(num,type(num))
  2. 如果要实现输入得到的数据为int/float:

    1
    2
    3
    4
    num = int(input('example') # 先输入数据.输入完之后把数据转为int类型
    print(num,type(num))
    num = float(input('example') # 先输入数据.输入完之后把数据转为float类型
    print(num,type(num))

    所以在python中给变量命名是,不要用list,int,print,input,type作为变量名.否则会覆盖原来的功能

  3. 类型转换之后要重新赋值保存

    1
    2
    3
    4
    5
    age2 = '18'
    int(age2)
    print(type(age2)) # str
    age2 = int(age2)
    print(type(age2)) # int

字符串进阶(格式化输出)

  • 变量混合使用
    1
    2
    3
    4
    5
    6
    name = 'zzy'
    age = 114514

    # print('你好.我叫'+name+'我今年'+age+'岁') 报错,int和str不能相加
    print('你好.我叫'+name+'我今年'+str(age)+'岁')
    print('你好.我叫'+name+'我今年',age,'岁',sep='')

在以后的编码过程中.经常会遇到字符串和变量,数值一起使用的情况.
但如果变量不是纯字符.而是其他类型的数据.拼接就会报错
所以这时候就需要格式化输出

格式化输出

  • 用起来更方便更舒服的输出方式
  1. 可以更方便的输出带有变量的数据
  2. 可以更方便的输出固定格式的数据

尊敬的XX您好.您X月的账单已经发送.您使用话费共XXX元,流量共XX元.

字符串拼接

  1. 语法:字符串与字符串直接用+进行拼接
    str+ str
  2. 案例:
    1
    2
    print('114'+'514')
    print('我是'+name)

f-str

  1. 比较简单粗暴好用的输出方式

  2. 语法:

    1. 在字符串前加f/F.
    2. 在字符串里把要输出的变量用大括号{}包裹起来:f'.*?{变量}.*?' *其中.*?指代一切其他字符

  3. 案例:

    1
    2
    print(f'大家好.我是{name}我今年{age}岁')
    print(f'大家好.我是{name[1]}我今年{age+1919810}岁')
  • 大括号里的数据是可以操作的. 可以进行数值运算.序列类型的索引切片

占位符

  1. 用法:
    先占个位置,后续再用具体的数据来顶上

    • 形参:没有具体的值,只是先占个位置
      • %d = 整数形参
      • %s = 字符串形参
      • %f = 浮点数形参(默认是带6个小数)
        • %.xf:小数点后x位
        • %.2f:小数点后2位
    • 实参:有具体的值,运行时会取代形参
  2. 语法:

    1
    2
    'xxx%dxxx'%数据
    'xxx%sxxx%d'%(数据1,数据2)
  3. 案例:

    1
    2
    3
    4
    print('我是%s'%name)
    print('我是%s 我今年%d岁'%(name,age))
    print('我是%s 我今年%d岁 还有几天发工资.我还剩%f元'%(name,age,168.5))
    print('我是%s 我今年%d岁 还有几天发工资.我还剩%.2f元'%(name,age,520.25))

format

  1. 用法:
    结合了占位符,f-str. 它先用{}大括号作为占位符.在字符串后通过.format传递数据

  2. 语法:

    1
    2
    'xxx{}xxx'.format(数据)
    'xxxx{}xxx{}'.format(数据1,数据2)
  3. 案例:

    1
    2
    3
    4
    5
    print('你好,我是{},我今年{}岁'.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
    6
    names = ['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
    4
    age = 18
    age + 1 # 这样只是单纯+1,没保存
    age += 1 # 等价于 age = age + 1
    print(age)

逻辑运算符:

  • and: ‘与’ 当有多个条件时,都满足才为真
  • or: ‘或’ 当有多个条件时,满足一个就为真
  • not: ‘非’ 取反

成员运算符:

  • in: 判断数据,是不是在里面

    1
    2
    1 in [1,2,3]   # True 列表里面有这个值
    114 in (514,19,810) # False 元组里面没有这个值
  • not in: 判断数据,是不是不在里面

    1
    2
    1 not in [1,2,3] # False 列表里有这个值
    114 not in (514,19,810) # True 元组里是没有这个值
本文作者:zzy
本文链接:http://周梓煜.com/2024/03/20/python-03-格式化输出与字符编码/
版权声明:本文采用 CC BY-NC-SA 3.0 CN 协议进行许可