yuanxiaojiang
人的放纵是本能,自律才是修行

判断循环

  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模式编码方式

 

posted on 2025-05-06 21:43  猿小姜  阅读(6)  评论(0)    收藏  举报

levels of contents