# a_list = [1,2,3,4,5]
#
# print(a_list)# 根据下标来删除列表中的元素
# 爬取的数据中 有个别的数据 是我们不想要的 那么我们就可以通过下标的方式来删除
# del a_list[2]
# print(a_list)# b_list = [1,2,3,4,5]
# print(b_list)
# pop是删除列表中的最后一个元素
# b_list.pop()
#
# print(b_list)c_list = [1,2,3,4,5]
print(c_list)# 根据元素来删除列表中的数据
c_list.remove(3)
print(c_list)#
# a_tuple = (1,2,3,4)
#
# print(a_tuple[0])
# print(a_tuple[1])# 元组是不可以修改里面的内容的
# a_tuple[3] = 5
# print(a_tuple)# a_list = [1,2,3,4]
#
# print(a_list[0])
#
# a_list[3] = 5
# print(a_list)
# 列表中的元素是可以修改的 而元组中的元素是不可以被修改a_tuple = (5)print(type(a_tuple))# 当元组中只要一个元素的时候 那么他是整型数据
# 定义只有一个元素的元组,需要在唯一的元素后写一个逗号
b_tuple = (5,)
print(type(b_tuple))s ='hello world'# 在切片中直接写一个下标
print(s[0])# 左闭右开区间 包含坐标的数据 不包含右边的数据
print(s[0:4])# 是从起始的值开始 一直到末尾
print(s[1:])# 是下标为0的索引的元素开始 一直到第二参数为止 遵循左闭右开区间
print(s[:4])# hello world
# 从下标为0的位置开始 到下标为6的位置结束 每次增长2个长度
print(s[0:6:2])# 定义一个字典
person = {'name':'吴签','age':28}# 访问person的name
# print(person['name'])
# print(person['age'])# 使用[]的方式,获取字典中不存在的key的时候 会发生异常 keyerror
# print(person['sex'])# 不能使用.的方式来访问字典的数据
# print(person.name)# print(person.get('name'))
# print(person.get('age'))# 使用.的方式,获取字典中不存在的key的时候 会返回None值
print(person.get('sex'))person = {'name':'张三','age':18}# 修改之前的字典
print(person)# 修改name的值为法外狂徒
person['name'] = '法外狂徒'# 修改之后的字典
print(person)person = {'name':'老马'}print(person)# 给字典添加一个新的key value
# 如果使用变量名字['键'] = 数据时 这个键如果在字典中不存在 那么就会变成新增元素
person['age'] = 18# 如果这个键在字典中存在 那么就会变成这个元素
person['name'] = '阿马'print(person)# del
# (1) 删除字典中指定的某一个元素
person = {'name':'老马','age':18}# 删除之前
# print(person)
#
# del person['age']
#
# # 删除之后
# print(person)# (2) 删除整个字典
# 删除之前
# print(person)
#
# del person
#
# # 删除之后
# print(person)# clear
# (3) 清空字典 但是保留字典对象
print(person)# 清空指的是将字典中所有的数据 都删除掉 而保留字典的结构
person.clear()print(person)# 遍历--》就是数据一个一个的输出person = {'name':'阿马','age':18,'sex':'男'}# (1) 遍历字典的key
# 字典.keys() 方法 获取的字典中所有的key值 key是一个变量的名字 我们可以随便起
# for key in person.keys():
# print(key)# (2) 遍历字典的value
# 字典.values()方法 获取字典中所有的value值 value也是一个变量 我们可以随便命名
# for value in person.values():
# print(value)# (3) 遍历字典的key和value
# for key,value in person.items():
# print(key,value)# (4) 遍历字典的项/元素
for item in person.items():print(item)# print('欢迎马大哥光临红浪漫')
# print('男宾2位')
# print('欢迎下次光临')
#
# print('欢迎马大哥光临红浪漫')
# print('男宾2位')
# print('欢迎下次光临')
#
# print('欢迎马大哥光临红浪漫')
# print('男宾2位')
# print('欢迎下次光临')
#
# print('欢迎马大哥光临红浪漫')
# print('男宾2位')
# print('欢迎下次光临')# 很多重复的业务逻辑 重复出现的时候 我们可以使用函数# 定义函数
def f1():print('欢迎马大哥光临红浪漫')print('男宾2位')print('欢迎下次光临')# 调用函数
f1()f1()# 使用函数来计算1和2的和
# def sum():
# a = 1
# b = 2
# c = a + b
# print(c)
#
# sum()def sum(a,b):c = a + bprint(c)# 位置参数 按照位置一一对应的关系来传递参数
sum(1,2)sum(100,200)# 关键字传参
sum(b = 200,a = 100)# 定义函数的时候 sum(a,b) 我们称a 和 b 为形式参数 简称形参
# 调用函数的时候 sum(1,2) 我们称1 和 2 为实际参数 简称实参# 返回值的关键字是return,存在函数中# def buyIceCream():
#
# return '冰激凌'
#
# # 使用一个变量来接受函数的返回值
# food = buyIceCream()
#
# print(food)# 案例练习
# 定义一个函数 然后让函数计算两个数值的和 并且返回这个计算之后的结果def sum(a,b):c = a + breturn ca = sum(123,456)print(a)# 局部变量:在函数的内部定义的变量 我们称之为局部变量
# 特点:其作用域范围是函数内部,而函数的外部是不可以使用#
# def f1():
# # 在函数内部定义的变量 我们叫做局部变量
# a = 1
# print(a)# f1()
# print(a)# 全局变量: 定义在函数外部的变量 我们称之为全局变量
# 特点:可以在函数的外部使用,也可以在函数的内部使用a = 1print(a)def f1():print(a)f1()# 在满足条件的情况 要使用作用域最小的那个变量范围# 创建一个test.txt文件
# open(文件的路径,模式)
# 模式: w 可写
# r 可读
# open('test.txt','w')# 打开文件
# fp = open('test.txt','w')
# fp.write('hello world')# 文件夹是不可以创建的 暂时需要手动创建
# fp = open('demo/text.txt','w')
# fp.write('hello shangguigu')# 文件的关闭
fp = open('a.txt','w')
fp.write('hello')
fp.close()# 写数据
# write方法# fp = open('test.txt','a')
#
# fp.write('hello world,i am here\n' * 5)
#
# fp.close()# 如果我再次来运行这段代码 会打印10次还是打印5呢?
# 如果文件存在 会先情况原来的数据 然后再写
# 我想在每一次执行之后都要追加数据
# 如果模式变为了a 那么就会执行追加的操作# 读数据
fp = open('test.txt','r')
# 默认情况下 read是一字节一字节的读 效率比较低
# content = fp.read()
# print(content)# readline是一行一行的读取 但是只能读取一行
# content = fp.readline()
# print(content)# readlines可以按照行来读取 但是会将所有的数据都读取到 并且以一个列表的形式返回
# 而列表的元素 是一行一行的数据
content = fp.readlines()
print(content)# fp = open('test.txt','w')
# # 默认情况我们只能将字符串写入到文件中
# fp.write('hello world')
#
# fp.close()# fp = open('test.txt','w')
# # 默认情况下 对象是无法写入到文件中 如果想写入到文件 那么必须使用序列化操作
# name_list = ['zhangsan','lisi']
#
# fp.write(name_list)# 序列化的2种方式
# dumps()
# (1)创建一个文件
# fp = open('test.txt','w')
#
# # (2)定义一个列表
# name_list = ['zs','ls']
#
# # 导入json模块到该文件中
# import json
# # 序列化
# # 将python对象 变成 json字符串
# # 我们在使用scrapy框架的时候 该框架会返回一个对象 我们要将对象写入到文件中 就要使用json.dumps
# names = json.dumps(name_list)
#
# # 将names写入到文件中
# fp.write(names)
# fp.close()# dump
# 在将对象转换为字符串的同时,指定一个文件的对象 然后把转换后的字符串写入到这个文件里# fp = open('text.txt','w')
# #
# # name_list = ['zs','ls']
# #
# # import json
# # # 相当于names = json.dumps(name_list) 和 fp.write(names)
# # json.dump(name_list,fp)
# #
# # fp.close()# 反序列化
# 将json的字符串变成一个python对象# fp = open('text.txt','r')
#
# content = fp.read()
#
# # 读取之后 是字符串类型的
# print(content)
# print(type(content))
#
# # loads
# import json
# # 将json字符串变成python对象
# result = json.loads(content)
# # 转换之后
# print(result)
# print(type(result))# loadfp = open('text.txt','r')import jsonresult = json.load(fp)print(result)
print(type(result))fp.close()# fp = open('text.txt','r')
#
# fp.read()
#
# fp.close()
# 异常的格式
# try:
# 可能出现异常的代码
# except 异常的类型
# 友好的提示try:fp = open('text.txt','r')fp.read()
except FileNotFoundError:print('系统正在升级,请稍后再试。。。')
目前掌握前3个就可以了