python学习笔记 | 5.2、python基础-字符串和编码
一、先搞懂:字符编码(为什么会有乱码?)
你可以把编码理解成:电脑把文字变成数字的规则。
1. ASCII(美国人用的)
- 只包含:英文、数字、符号
- 1 个字节 = 1 个字符
- 缺点:装不下中文
2. GB2312 / Shift_JIS(各国自己搞的)
- 中国:GB2312 存中文
- 日本:Shift_JIS 存日文
- 问题:混用就乱码!
3. Unicode(全世界统一)
- 把所有语言都放一套规则里
- 再也不乱码
- 缺点:英文也占 2 个字节,太浪费空间
4. UTF-8(最完美)
- 英文:1 字节
- 中文:3 字节
- 省空间、不乱码、全世界通用
- 现在所有地方都用 UTF-8
二、Python 字符串核心(最重要)
Python 3 里有两种东西:
- str:内存里的字符串(Unicode,能显示中文)
- bytes:字节(用来存文件、发网络)
两个关键动作
- str → bytes:编码
encode('utf-8') - bytes → str:解码
decode('utf-8')
例子:
'中文'.encode('utf-8') # 变成字节
b'\xe4\xb8\xad\xe6\x96\x87'.decode('utf-8') # 变回文字
三、字符串格式化(就是 “填空”)
Python 有 3 种写法,最简单的是 f-string。
1. f-string(最推荐)
name = "小明"
score = 95.5
print(f"{name} 的分数是 {score:.1f} 分")
输出:
plaintext
小明 的分数是 95.5 分
2. % 写法
print("%s 的分数是 %.1f 分" % (name, score))
3. format 写法
print("{0} 的分数是 {1:.1f} 分".format(name, score))
四、你要的练习题答案
题目:
小明去年 72 分,今年 85 分,求提升的百分点,显示成 xx.x%
代码
s1 = 72
s2 = 85
# 计算提升百分比
r = (s2 - s1) / s1 * 100
# 输出,保留1位小数
print(f'成绩提升了 {r:.1f}%')
运行结果
plaintext
成绩提升了 18.1%
五、超简总结(背会这几句就够)
-
编码 = 文字转数字
-
统一用 UTF-8 永远不乱码
-
Python:
str是文字bytes是字节encode编码,decode解码
-
格式化字符串用 f-string 最简单
====分割线=3种写法(字符串格式化)
字符串格式化(就是 “填空”)
Python 有 3 种写法,最简单的是 f-string。
1. f-string(最推荐)
name = "小明"
score = 95.5
print(f"{name} 的分数是 {score:.1f} 分")
输出:
plaintext
小明 的分数是 95.5 分
2. % 写法
print("%s 的分数是 %.1f 分" % (name, score))
3. format 写法
print("{0} 的分数是 {1:.1f} 分".format(name, score))
==分割线=1=f-string写法
1. 先告诉你:f-string 到底在干嘛
f"..." 就是告诉 Python:
这里面
{ }包起来的是变量,不是普通文字
所以结构只有两步:
就这两个规则,没有别的。
print(f"{name}的分数是{score}分")
这就够你用 90% 的场景了。
实例记忆:(重点)
print(f"{name}的分数是{score}")
f"" f_string,可控制保留几位小数 {} 变量
.1f 保留1位小数,score:.1f
=分割线2===%写法
%写法
这个叫 % 格式化,写法规则超级固定,我一步步拆开给你看,一看就会。
1. 整句拆开
print("%s 的分数是 %.1f 分" % (name, score))
分成三部分:
"字符串内容"%(变量1, 变量2)
2. 里面的符号是什么意思?
- %s = 放字符串(文字、名字之类)
- %d = 放整数
- %.1f = 放小数,保留 1 位
对应关系:
plaintext
%s → name
%.1f → score
3. 最简单记忆法
- 想放名字 / 文字 → 写 %s
- 想放数字 → 写 %d
- 想放小数并保留 1 位 → 写 %.1f
然后:
- 引号后面写一个 %
- 括号里按顺序放变量:
(变量1, 变量2)
4. 对应到你的例子
name = "小明"
score = 95.5
print("%s 的分数是 %.1f 分" % (name, score))
输出:
plaintext
小明 的分数是 95.5 分
5. 再给你一个超短模板(背这个就行)
print("%s xxx %s xxx" % (变量1, 变量2))
分割线3format 写法
1. 整句长这样
print("{0} 的分数是 {1:.1f} 分".format(name, score))
2. 拆成两部分看
- 前面字符串:
"{0}...{1}" - 后面
.format(变量1, 变量2)
3. 规则只有 2 条
-
{0} 对应 format 里第 1 个变量
-
{1} 对应 format 里第 2 个变量
(从 0 开始数:0、1、2、3……)
4. 对应关系
"{0} 的分数是 {1:.1f} 分".format(name, score)
{0} → name
{1} → score
5. .1f 意思一样
- {1:.1f} = 第 2 个变量,保留 1 位小数
6. 最简单模板
print("{0}...{1}...".format(变量1, 变量2))
7. 三种写法对比(帮你彻底理清)
# 1. f-string(最简单,推荐)
print(f"{name} 的分数是 {score:.1f} 分")
# 2. format 写法(老一点,也常用)
print("{0} 的分数是 {1:.1f} 分".format(name, score))
# 3. % 写法(更老)
print("%s 的分数是 %.1f 分" % (name, score))
====分割线练习题1
分割线=练习题1
已知:
name = "小红"
age = 16
要求:
输出:
plaintext
小红今年16岁
答案:
f-string写法:print(f"{name}今年{age}岁")
%写法:print(“%S今年%d岁” % (name,age)) 注意:没有逗号,用%隔开
分割线=练习题2
现在来做第二题:
height = 1.68
要求输出:
身高:1.7米
答案:
f-string写法:
❌️f-string:print(f"身高:{height:1.f}米")----保留小数那里写错了,应该是:.1f,而不是:1.f
❌️print{f"身高:{height:.1f}米"}–print后不能用大括号{},得用()
✅️print(f"身高:{height:.1f}米")
更多推荐

所有评论(0)