判断循环
if判断
if if else if elif elif... else today = input('pleast input today>>: ') if today in ['Monday','Tuesday','Wednesday','Thursday','Friday']: print('上班') elif today in ['Saturday','Sunday']: print('出去嗨')
while循环
# while+else n = 1 while n < 5: if n == 3: break print(n) n += 1 else: print('while循环正常结束了')
for循环
for+else
# for+else name_list = ['yuan','xiao','jiang'] for name in name_list: if name == 'jiang': break print(name) else: print('for循环正常结束了')
案例
# print会换行,end不换行以指定的字符结束 max_level = 5 for current_level in range(1,max_level + 1): for i in range(max_level - current_level): print(' ', end='') print('*'*(current_level*2-1)) * *** ***** ******* ********* # 冒泡排序法 ls = [10, 33, 42, 1, 23] for i in range(len(ls) - 1): for j in range(len(ls) - 1 - i): if ls[j] > ls[j + 1]: ls[j], ls[j + 1] = ls[j + 1], ls[j] print(ls) # [1, 10, 23, 33, 42]
字符编码
常见字符编码
python解释器运行一个py文件的步骤
1.将python解释器的代码由硬盘读到内存 2.将xxx.py以普通文本文件形式读到内存 3.python解释器读取文件内容,识别python语法,执行相应操作
ASCII码
标准 ASCII:使用 7 位二进制(0-127)表示字符,共 128 个(包括英文字母、数字、符号和控制字符)
扩展 ASCII:部分系统使用 8 位(0-255)表示额外符号(如欧洲字符),但非统一标准
GBK
英文字符:1 字节(兼容 ASCII)
中文字符:2 字节(可表示约 2 万+字符)
万国码unicode(内存的编码)
统一用2Bytes表示所有的字符 unicode的两个特点: 1.用户在输入的时候,无论输什么字符都能够兼容unicode 2.其他国家编码的数据由硬盘读到内存的时候unicode与其他各个国家的编码都有对应关系
utf-8(硬盘的编码)
当内存中unicode编码格式的数据存到硬盘时,会按照utf-8(unicode transformation format)编码: 会将unicode的英文字符由原来的2Bytes变成1Bytes 会将unicode的中文字符由原来的2Bytes变成3Bytes 现在的计算机: 内存都是unicode 硬盘都是utf-8 数据由内存保存到硬盘: 内存中unicode格式的二进制数据 >>>> 编码(encode) >>>> 硬盘中utf-8格式的二进制数据 数据由硬盘读取到内存: 硬盘中utf-8格式的二进制数据 >>>> 解码(decode) >>>> 内存中unicode格式的二进制数据 保证不乱码在于,文本文件以什么编码编的就以什么编码解
python2和python3区别
# python2和python3的区别 python2: 将py文件按照文本文件读入解释器中默认使用ASCII码 python3: 将py文件按照文本文件读入解释器中默认使用utf-8 # 基于python2解释器开发的软件中文问题解决方案: # 前面都需要加一个u,告诉python2解释器不要用默认的编码而用unicode x = u'测试' print(type(x)) # <type 'unicode'> python3中中文默认就是unicode编码格式的二进制数 # 头文件指定编码 coding: utf-8,告诉python解释器不用默认的编码而用coding指定的编码 1.因为所有的编码都支持英文字符,所以文件头才能够正常生效 2.python2文件编码(coding)时默认使用ASCII存,若指定了文件编码,就用指定的文件编码来存 # 补充 pycharm终端用的是utf-8,windows终端用的是gbk
编码与解码
encode decode
x = '上' # 将内存中unicode格式的二进制数据编码成可以存储和传输的utf-8格式的二进制数据 res1 = x.encode('utf-8') print(res1) # b'\xe4\xb8\x8a' res2 = res1.decode('utf-8') print(res2) # 上
指定encoding参数
x = '上' res1 = bytes(x, encoding='utf-8') print(res1,type(res1)) # b'\xe4\xb8\x8a' <class 'bytes'> res2 = str(res1, encoding='utf-8') print(res2,type(res2)) # 上 <class 'str'>
文件
# 模式介绍 # 控制文件读写内容的模型 t文本(默认模式) b二进制 # 控制文件读写操作的模式 r只读模式 w只写模式 a只追加写模式 +:r+、w+、a+ # 文件是操作系统提供给用户/应用程序操作硬盘的一种虚拟的概念/接口
# 用户/应用程序可以通过文件将数据永久保存的硬盘中
# 用户/应用程序直接操作的是文件,对文件进行的所有的操作,
都是在向操作系统发送系统调用,然后再由操作将其转换成具体的硬盘操作

t模式
# str类型就是Unicode字符串 从文本文件中读取数据:Python会自动将utf8字节序列解码成Unicode字符串 向文本文件中写入数据:Python会自动将Unicode字符串编码成utf8字节序列 t模式不需要手动处理编码/解码过程 # t模式 1.读写都是以str(Unicode)为单位 2.必须为文本文件 3.必须指定encoding='utf-8'
文件操作
f = open(r'a.txt', mode='rt', encoding='utf-8') # f的值是一种变量,占用的是应用程序的内存空间 print(f) # <_io.TextIOWrapper name='a.txt' mode='rt' encoding='utf-8'> print(type(f.read())) # <class 'str'> f.close() # 回收操作系统资源 del f # 回收应用程序资源(一般不使用 # with上下文管理 with open(r'a.txt', 'r', encoding='utf-8') as f1, open(r'b.txt', 'r', encoding='utf-8') as f2: print(f1.read()) print(f2.read()) # with上下文管理不需要使用f.close()回收操作系统资源
t模式编码方式
                    
                
                
            
        
浙公网安备 33010602011771号