十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
人工智能时代,该学学python了!

创新互联-专业网站定制、快速模板网站建设、高性价比万柏林网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式万柏林网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖万柏林地区。费用合理售后完善,十余年实体公司更值得信赖。
既然确定学习Python了,那么就要一步一步从基础开始学习嘛~!
下面我们来看看基础知识
集合(Set)及其函数
集合是一个无序的、无重复元素的序列。
- list = {1, 3, 6, 5, 7, 9, 11, 3, 7} # 定义集合方式一
 - list1 = set([1, 3, 6, 5, 7, 9, 11, 3, 7]) # 定义集合方式二
 - list2 = set() # 定义一个空集合
 - print(list1, list) # 打印后可看到,集合中的元素已自动去重
 - print(3 in list) # 判断一个元素是否在集合中,返回bool值
 - print(20 not in list1) # 判断一个元素是否不在集合中,返回bool值
 - list1.add(99) # 新增元素
 - list1.update([10, 20, 30, 2]) # 新增多项
 - list1.remove(3) # 删除一个元素,若元素不存在则报错
 - print(list1.discard(8)) # 删除一个元素,若元素不存在则不做任何操作
 - print(len(list1)) # 计算集合中元素的个数
 - print(list1.pop()) # 从集合中随机弹出一个元素
 - list.clear() # 清空集合
 
集合的运算
- list1 = set([1, 3, 6, 5, 7, 9, 11, 3, 7])
 - list2 = set([2, 4, 6, 8, 3, 5])
 - print(list1, list2)
 - # 交集
 - print(list1.intersection(list2))
 - print(list1 & list2)
 - # 并集
 - print(list1.union(list2))
 - print(list1 | list2)
 - # 差集
 - print(list1.difference(list2))
 - print(list1 - list2)
 - # 对称差集
 - print(list1.symmetric_difference(list2))
 - print(list1 ^ list2)
 - # 是否为子集 是否为父集
 - list3 = set([9, 11])
 - print(list3.issubset(list1))
 - print(list1.issuperset(list3))
 - # 若两个集合的交集为空 返回true
 - list4 = set([20, 30])
 - print(list1.isdisjoint(list4))
 - print(list1.isdisjoint(list2))
 
文件(File)操作
在开发中经常会有读写文件的需求,相关的代码实现如下:
文件的打开模式
文件的读操纵、写操作、追加操作、按行读取文件
- # read 直接读文件全文
 - f = open('test', 'r', encoding='utf-8') # 文件句柄
 - data = f.read()
 - print(data)
 - # write 向文件中写
 - f = open('test1', 'w', encoding='utf-8')
 - f.write('我爱北京天安门,
 - 天安门上太阳升')
 - # append 在文件***追加内容
 - f = open('test1', 'a', encoding='utf-8')
 - f.write('呀呼嘿')
 - # loop 按行读取文件
 - # high bigger 将文件作为迭代器 读一行打印一行 内存中只缓存一行
 - f = open('test', 'r', encoding='utf-8')
 - count = 0
 - for l in f:
 - if count == 9:
 - print('----------')
 - count += 1
 - continue
 - print(l.strip())
 - count += 1
 - # low loop 将文件内容全部读取至内存,效率低
 - f = open('Sonnet', 'r', encoding='utf-8')
 - for index, line in enumerate(f.readlines()):
 - if index == 9:
 - print('------------')
 - continue
 - print(line.strip())
 
文件的函数
- f = open('test', 'r', encoding='utf-8') # 文件句柄 读模式打开文件
 - print(f.tell()) # 获取当前光标位置
 - print(f.readline())
 - print(f.readline())
 - print(f.tell())
 - print(f.readline())
 - f.seek(10) # 跳转光标到第10个字符
 - print(f.readline())
 - print(f.encoding) # 获取文件编码
 - print(f.fileno()) # i don't know what it is
 - print(f.isatty()) # 判断文件是否是tty终端
 - print(f.readable()) # 判断文件是否是可读
 - print(f.writable()) # 判断文件是否是可写
 - print(f.seekable()) # 判断文件是否是可跳转光标 (tty不可跳转
 - f.flush() # 当用写模式打开文件时 并不是写一句系统就会调用一次io 若需要及时刷新硬盘中的文件内容 可以调用该函数
 - f.close() # 关闭文件
 - print(f.closed) # 判断文件是否关闭
 
文件的修改
- # 文件的修改 直接修改文件本身比较困难 可以将修改写入另一个文件中 如有需求可以再写回文件本身
 - f = open('test', 'r', encoding='utf-8')
 - f_new = open('test.bak', 'w', encoding='utf-8')
 - for line in f:
 - if '我曾千万次梦见' in line:
 - line = line.replace('我曾千万次梦见', '我不想千万次梦见')
 - f_new.writelines(line)
 - f.close()
 - f_new.close()
 
一个进度条实例 用于理解flush函数的机制 该实例可以实现进度条效果
- import sys
 - import time
 - f = open('Sonnet1', 'w', encoding='utf-8') # 文件句柄 写模式打开文件 会新建一个文件 若同名文件存在 则直接覆盖
 - for i in range(10):
 - sys.stdout.write('#')
 - sys.stdout.flush()
 - time.sleep(0.2)
 
字符编码转换
字符编码转换最重要的一点就是,切记unicode是编码之间的中转站,若unicode不是目标编码或者原始编码,那么任何两个编码相互转换都需要经过unicode(见下图)。
需要注意的是,python的默认编码是ASCII,python3的默认编码是unicode。
在python3中encode,在转码的同时还会把string变成bytes类型,decode在解码的同时还会把bytes变回string。
函数
函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。
函数能提高应用的模块性,和代码的重复利用率。python提供了许多内建函数(如print());也可以自己创建函数,即用户自定义函数。
定义一个有自己想要功能的函数,需要遵循以下规则:
待补充知识:函数的参数、变量作用域、递归、高阶函数。