# 8个比特为一个字节
# 中国定制了 GB2312 编码， 用来把中文编进去
# 日本把日文编到Shift_JIS里，韩国把韩文编到Euc-kr里
# Unicode编码标准
# ASCII 编码是1个字节
# Unicode 编码是2个字节
# UTF-8编码 把一个Unicode字符根据不同的数字大小编码成1~6个字节，
# 在计算机内存中，统一使用Unicode编码，当需要保存到硬盘或者需要传输的时候，就转换为UTF-8编码

# Python3中，字符串是以unicode编码的，也就是说Python的字符串支持多语言
# 对于单个字符的编码，Python提供了ord()函数获取字符串的整数表示，chr()函数把编码转换为对应的字符：
ord('A') 
ord('B')
chr(65) 
chr(66)

# Pyhton对nytes类型的数据用带b前缀的引号或双引号表示
x = b'ABC';

# 以Unicode表示的str通过encode()方法可以编码为指定的bytes
'ABC'.encode('ascii');
'你的名字'.encode('utf-8');

# 要把bytes变为str，就需要用decode()方法：

# len()函数计算字符串包含多少个字符
len('ABC')

# 为了让Python解释器读取源码时按照UTF-8读取，通常在文件开头写上两行代码：
#！/usr/bin/env python3
# -*- coding: utf-8 -*-
# 第一行注释是为了告诉Linux/OS X系统，这是一个Python可执行程序，Windows系统会忽略这个注释；
# 第二行注释是为了告诉Python解释器，按照UTF-8编码读取源代码，否则，你在源代码中写的中文输出可能会有乱码。


# 格式化
# 在python中，采用的格式化方式和C语言一致，使用%实现
'hello, %s' %'我的名字'
'hello, %s, 我今年%d岁啦' %('我的名字', 30)

# %运算符就是用来格式化字符串的。在字符串内部，%s表示用字符串替换，%d表示用整数替换，有几个%?占位符，
# 后面就跟几个变量或者值，顺序要对应好。如果只有一个%?，括号可以省略。
# %d	整数
# %f	浮点数
# %s	字符串
# %x	十六进制整数

# 其中，格式化整数和浮点数还可以指定是否补0和整数与小数的位数：
print('%2d-%02d' % (3, 1))
print('%.2f' % 3.1415926)
# 如果你不太确定应该用什么，%s永远起作用，它会把任何数据类型转换为字符串
# 有些时候，字符串里面的%是一个普通字符怎么办？这个时候就需要转义，用%%来表示一个%：
# format()
# 另一种格式化字符串的方法是使用字符串的format()方法，它会用传入的参数依次替换字符串内的
# 占位符{0}、{1}……，不过这种方式写起来比%要麻烦得多：
'Hello, {0}, 成绩提升了 {1:.1f}%'.format('小明', 17.125)
'Hello, 小明, 成绩提升了 17.1%'