【重识python day2】

字符串格式化、运算符、编码、进制对应表

一、字符串格式化

1.1 、%

  1. 基本格式化操作
    %s:字符串格式化
    %d:整形格式化(%s其实也可以)
    根据位置替换如下:
name = "admin"
# 占位符
text = "我叫%s,今年18岁" %"admin"
#如果是变量,百分号后面跟变量
text = "我叫%s,今年18岁" %name
name = "admin"
age = 18

text = "我叫%s,今年%s岁" %("admin",18)
#如果是变量
text = "我叫%s,今年%s岁" %(name,age)
text = "我叫%s,今年%d岁" %(name,age)

根据名称替换如下:

message = "我叫%(name)s,今年%(age)s岁" % {"name": "admin", "age": "18"}
print(message)

换成变量

text = "我叫%s,今年%d岁"
data1 = text %("admin",18)
data2 = text %("alex",19)
  1. 百分比

如果字符串里面有百分比,需要特殊处理,如下就会报错,因为百分比也会被需要替换

text = "%s,这个片我已经下载了90%了,居然特么的断网了" %"admin"
print(text)

因此我们要对百分号处理,即多加一个百分号,一旦字符串格式化中存现百分比的显示,请一定要呀加 %% 以实现输出 %。

text = "%s,这个片我已经下载了90%%了,居然特么的断网了" %"admin"
print(text)

1.2 、format,也是最常用的

  1. 按顺序替换,写上0、1…如果后面还有相同的,可以复用
text = "我叫{0},今年18岁".format("admin")

text = "我叫{0},今年{1}岁".format("admin",18)

text = "我叫{0},今年{1}岁,小名是{0}。".format("admin",18)

如果什么都不写,第一个默认为0,第二个默认为1,但是相同的无法再复用,需要在format里面按顺序写上

text = "我叫{},今年18岁".format("admin")

text = "我叫{},今年{}岁".format("admin",18)

text = "我叫{},今年{}岁,小名是{}。".format("admin",18,"admin")

换成变量

text = "我叫{0},今年{1}岁"
data1 = text.format("admin",18)
data2 = text.format("alex",19)
  1. 按名称替换,如果后面还有相同的,可以复用
text = "我叫{name},今年18岁".format(name="admin")

text = "我叫{name},今年{age}岁".format(name="admin",age=18)

text = "我叫{name},今年{age}岁,小名是{name}。".format(n1="admin",age=18)

换成变量

text = "我叫{name},今年{age}岁"
data1 = text.format(n1="admin",age=18)
data2 = text.format(n1="alex",age=19)

1.3 、f

到Python3.6之后的版本,更便捷。

action = "跑步"
text = f"嫂子喜欢{action},跑完之后满身大汗"

多变量替换

action = "跑步"
age = 19
text = f"嫂子喜欢{action},今年{age}岁"
print(text)

除此之外,还支持表达式

action = "跑步"
text = f"嫂子喜欢{action},今年{17+2}岁"
print(text)

还支持进制

# 进制转换
v1 = f"嫂子今年{22}岁"
print(v1)

v2 = f"嫂子今年{22:#b}岁"
print(v2)

v3 = f"嫂子今年{22:#o}岁"
print(v3)

v4 = f"嫂子今年{22:#x}岁"
print(v4)

输出
在这里插入图片描述

name = "alex"
text = f"嫂子喜欢{name }"

name = "alex"
text = f"嫂子喜欢{name .upper()}"

# 输出:嫂子喜欢ALEX

二、运算符

2.1 、算数运算符

例如:加减乘除,有个特殊的 //
在这里插入图片描述

2.2 、赋值运算符

2.3 、成员运算,例如:是否包含

in、not in

v1 = "le" in "alex"  # True/False
# 让用户输入一段文本,检测文本中是否包含敏感词。
text = input("请输入内容:")
if "苍老师" in text:
  print("少儿不宜")
else:
  print(text)

2.4 、运算符优先级

  1. 算数优先级优先级 大于 比较运算符
if 2 + 10 > 11:
	print("真")
else:
	print("假")
  1. 比较运算符优先级 大于 逻辑运算符
if 1>2 and 2<10:
	print("成立")
else:
	print("不成立")
  1. 逻辑运算符内部三个优先级 not > and > or
if not 1 and 1>2 or 3 == 8:
	print("真")
else:
	print("假")

总结:加减乘除 > 比较 > not and or

三、进制对应表

在这里插入图片描述

四、编码

4.1、unicode

unicode也被称为万国码,为全球的每个文字都分配了一个码位(二进制表示)。
ucs2 用固定的2个字节去表示一个文字。

00000000 00000000     我
...

2**16 = 65535

ucs4 用固定的4个字节去表示一个文字。

00000000 00000000 00000000 00000000  无
...
2**32 = 4294967296

无论是ucs2和ucs4都有缺点:浪费空间
unicode的应用:在文件存储和网络传输时,不会直接使用unicode,而在内存中会unicode。

4.2 utf-8编码

包含所有文字和二进制的对应关系,全球应用最为广泛的一种编码(站在巨人的肩膀上功成名就)。

本质上:utf-8是对unicode的压缩,用尽量少的二进制去与文字进行对应。

  unicode码位范围            utf-8      
   0000 ~ 007F              用1个字节表示
   0080 ~ 07FF              用2个字节表示
   0800 ~ FFFF              用3个字节表示
  10000 ~ 10FFFF            用4个字节表示

具体压缩的流程:
第一步:选择转换模板

  码位范围(十六进制)                转换模板
   0000 ~ 007F              0XXXXXXX
   0080 ~ 07FF              110XXXXX 10XXXXXX
   0800 ~ FFFF              1110XXXX 10XXXXXX 10XXXXXX
  10000 ~ 10FFFF            11110XXX 10XXXXXX 10XXXXXX 10XXXXXX

注意:一般中文都使用第三个模板(3个字节),这也就是平时大家说中文在utf-8中会占3个字节的原因了。
第二步:在模板中填入数据

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值