'''
day1:
'''
# print() 输出
# 变量
# 1.由字母,数字下划线任意组成,且不能以数字开头
# 2.不能使用python中的关键字
# 3.不能是中文和拼音
# 4.具有可描述性
# 5.不宜太长
# 6.变量名要区分大小写
# 7.推荐写法:
# 下划线 -- 官方推荐
# 驼峰体:
# 大驼峰
# 小驼峰
# 常量
# NAME = 1
# python2 python3区别
# python2
# 源码混乱
# 冗余
# 重复
# ascii 不支持中文
# python3
# 源码统一
# 不重复
# utf-8
# 注释
# 单行 #
# 多行 """ 萨芬大师傅手动 """ ''' '''
# python是一个解释型语言 动态 强类
# 基础数据类型:
# int 整型
# + - * /
# str 字符串
# + 拼接
# * 坚强
# 在python中只要是用引号引起来的就是字符串
# bool 布尔值
# True 非零 ' ' (77) [1]
# False 0 '' () []
# input('提示语句') py3
# raw_input() py2
# input() 输入什么是什么
# input接受的都是字符串
# 流程控制语句:
# 5
# if 条件:
# 条件成立后的结果
# if 条件:
# 结果
# else:
# 结果
# if 条件:
# 结果
# elif 条件:
# 结果
# elif 条件:
# 结果
# elif 条件:
# 结果
# elif 条件:
# 结果
# if 条件:
# 结果
# if 条件:
# 结果
# if 条件:
# 结果
# if 条件:
# 结果
# if 条件:
# 结果
# elif 条件:
# 结果
# else:
# 结果
# age = 18
# if age > 12:
# if age < 20:
# print('可以做一....')
# day2
# 格式化输出
# %s %d -- %i
# %%
# s = '你好啊%s,%i %%'%('小粉',90)
# print(s)
# name = 'alex'
# print(f'{name},真是个大佬') python3.6
# while True: (死循环)
# print('循环语句')
# while False:
# print(1)
# else:
# print(2)
# while True:
# while True:
# break # 终止当前循环
# continue # 跳出本次循环继续下次循环
# num = 0
# count = 1
# while count <= 100:
# num+=count
# count +=1
# print(num)
# 运算符:
# 算法
# + - * / // % **
#
# 比较
# > < >= <= == !=
#
# 赋值
#
# = += -= *= /= %= //= **=
#
# 逻辑
# not and or
# () > not>and >or
# 1 or 4
#
# 0 or False
#
# 1 and 5
#
# 0 and False
# 成员
# in not in
# 身份
# is is not
# 编码:
# ascii 不支持中文
# utf-8 英文 1 欧洲 2 亚洲 3
# gbk 英文 1 中文 2
# unicode 英文 2 中文 4
# 字节转换:
# 8bit = 1Bytes
# 1024B = 1kb
# 1024kb = 1mb
# 1024mb = 1gb
# 1024gb = 1tb
# 1024tb = 1pb
# day3:
# 字符串
# num = 8
# print(num.bit_length()) #有效位
# 字符串:
# 下标(索引) 01234 左右 -3-2-1 右左
# 切片 [起始位置:终止位置] 顾头不顾腚
# 步长 [起始位置:终止位置:步长]
# s = 'alex_taibai_wusir'
# #
# # print(s[1:7:6])
# 常用方法:
# s = ''
# s.replace('旧','新',3)
# s.strip() # 去除头尾两边的空格和换行符制表符
# s.upper() #全部大写
# s.lower() #全部小写
# s.title() #每个单词的首字母大写 'alex你wusir'
# s = 'alexwusir'
# print(s.title())
# s.capitalize() # 首字母大写
# s.swapcase() # 大写转换
# s.center() # 居中
# s.format()
# print(','.join(['1','2','3']))
# s.split() # 分割
# for em in [1,2,3]:
# print(i)
# day4:
# 列表
# [1,2,3,4,5] # list # for
# 增删改查:
lis = [1,2,3]
# lis.append(1)
# lis.insert(0,666)
# print(lis)
# lis.extend() # 迭代添加 for
# print(lis)
# lis.pop() # 返回值
# lis.remove() # 元素
# lis.clear() # 清空
# del lis
# print(lis)
#
# del lis[0:5]
# 改:
# lis[0] = 55555
# lis[1:5:2] = 7777777,4444,12201151,1,54,5,5,5,5,55,5,5,5
# print(lis)
# 查:
# lis[0]
# for i in lis
# 其他操作:
# len(lis)
# lis = [9,2,3]
# lis.sort(reverse=True) # 排序升序 降序
# new_lis = lis.reverse()
# print(lis) # 报错,None,[3,2,1]
# new_lis = lis.sort()
# print(lis)
# print(new_lis)
# lis.count()
# lis.index()
# lis.copy()
# 元组
# (1,2,3,4) (22) (23,)
# 不可变
# 操作:
# 查看
# tu = (1,2,32,4,5)
# print(tu[1:4])
# count index
# range() 范围
# li = range(22) #py3 范围 range(0,22)
# print(li) # 列表 0-21
#
#
# # py2 range(22) 列表
# # xrange(22) 范围
# li = [1,23,4,56,[5,6,7,[54,6,87,['迭代',23,'你好',5436]]]]
# print(li[4][3][3][0])
# print(li[-1][-1][-1][0])
# day5:
# {'key':'v',} dict
# 键: 唯一 ,可哈希(不可变)
# 值:任意
# 可变的:
# 列表,字典,集合
# 不可变的:
# 字符串,数字,布尔值,元组
# 字典:增
# dic['key'] = 'b' 有就修改无添加
# dict.setdefault('键','值') # 有就不变,无就添加
# dic = {1:2,3:6}
# print(dic.setdefault(2,5))
# 删
# dic.pop('键') 返回值
# dic.popitem() # 随机删除 python3.5之后最后一个后
# dic.clear()
# del dic['键']
# 改:
# dic['键'] = 'b'
# dic = {'1':34,1:2}
# dic2 = {1:4}
# dic2.update(dic)
# print(dic2)
# 查:
# dic.get()
# dic['键']
# for i in dic:
# print(i)
# 其他:
# keys # 键 高仿列表 索引
# valuse
# items
# dic = {'1':1,'2':2}
# print(dic.keys())
# print(dic.values())
# print(dic.items())
# 解构
# a,b = (1,2)
# a,b = [1,2]
# a,b = {1,2}
# a,b = '12'
# a,b = 12,3
# a,b = {'1':2,'7':4}
# a = 10
# b = 20
# a,b = b,a
# print(a)
# print(b)
# d = dict.fromkeys([1,2,3],[])
# print(d)
# d[1].append(44)
# print(d)
# d = dict.fromkeys([1,2,3],10)
# print(d)
# d[1] = 20
# print(d)
# 字典嵌套:
# dic = {'key':[{1:3,3:5,5:7,7:{'66':66}}]}
# print(dic['key'][0][7]['66'])
# 集合:
# set {} 天然去重
# day6:
# 小数据池
# 数字: -5 ~ 256
# 字符串: 相乘不超过20,且乘的是>1
# 代码块:
# is ==
# is 判断是内存地址
# == 判断两边的值是否相等
# 基础数据类型补充
# li = [1,2,3]
# for i in li:
# li.append(i)
# print(li)
# lis = [1,2,3,4,5,6]
# for i in range(len(lis)-1,-1,-1):
# lis.pop()
# print(lis)
#
# for i in lis:
# lis.clear()
# print(lis)
# l1 = [1,2,3,4]
# l2 = [1,2,3,4]
#
# for i in l1:
# l2.remove(i)
# print(l2)
# dic ={'1':2}
# s_dic = str(dic)
# print(dict(s_dic))
# repr 给程序员用的 显示的原生数据
# print 给用户用的 做了一些美化
# 深浅拷贝
# 浅 只拷贝第一层
# l1 = [1,2,3,4,5,[43,56]] # 0101
# l2 = l1
# l2[0] = 99
# print(l2) # 0101
# print(l1) # 0101 赋值
# l1 = [1,2,3,4,5,[43,56]] #0101
# l2 = l1.copy() #0102
# l1[0] = 66
# print(l1)
# print(l2)
# l1 = [1,2,3,4,5,[43,56]] #0101
# l2 = l1.copy() #0102 浅拷贝
# l1[-1][0] = 66
# print(l1)
# print(l2)
# import copy
# l1 = [1,2,3,4,5,[43,56]] # 0101
# l2 = copy.deepcopy(l1) # 0201
# l1[0] = 89
# print(l1)
# print(l2)
# 二次编码:
# s = 'alex鱼香肉丝'
# b1 = s.encode('utf-8')
# print(b1)
# print(b1.decode('gbk'))
# day7:
# r,w,a,r+,w+,a+,rb,ab,wb
# r,r+
# 只读
# read
# readline
# readlines
# 文件操作有个坑 读过了光标就停留
# seek()
# 0,0 文件头部
# 0,1 当前
# 0,2 尾部
# read() r,rb
# with open('t','r',encoding='utf-8')as f:
# f.readline()
# f.read(2)
# print(f.read())
# w 覆盖写
# 清空文件后写内容
# a
# 追加
# 文件末尾添加
# r+
# 读 写
# w+,a+
# with open('t','r+',encoding='utf-8')as f:
# f.truncate(2)
# li = []
# num_sum = 0
# with open('t','r',encoding='utf-8')as f:
# for i in f:
# name,price,num = i.split()
# dic={'name':name,'price':int(price),'num':int(num)}
# li.append(dic)
# sum = int(price) * int(num)
# num_sum += sum
# print(li)
# print(num_sum)
# li = []
# with open('t','r',encoding='utf-8')as f:
# title_list = f.readline().split()
# for i in f:
# em = i.split()
# dic={title_list[0]:em[0],
# title_list[1]:em[1],
# title_list[2]:em[2],
# title_list[3]: em[3],
# title_list[4]: em[4],}
# li.append(dic)
# print(li)
# with open('t','r',encoding='utf-8')as f:
# for i in f:
# if '⻛吹⾬打,都不怕,' in i:
# print(i)
# print(f.read())