#复习
# print(7 + 4) #直接进行运算
# print("hell\nword") #换行转义符
# print("hello\tword ") #制表符
# print("hello\rword") #回车符
# print("hello\bword") #退格符
# print(r"hello\nword") #原字符
# a = 3.1415
# print( a, type(a)) #type查看类型
# n1 = 1.1
# n2 = 2.2
# print(n1 + n2) #不精确性,通过导入Decimal模块
# from decimal import Decimal
# print(Decimal("1.1") + Decimal("2.2"))
#str() int() float() 三者可以相互转化 略
#运算符 特殊的
# print(1 // 2) #整除会舍去小数部分
# print(7 % 3) #余数=被除数-除数*商
# print(2 * 2 * 4 )
# print( 3 * 2 ** 3) # **幂的计算
#解包赋值
# a , b, c = 10 , 7, 5
# print( a, b, c)
# a , b = b, a
# print( a, b) #交换位置
#bool值 1 = true,0 = flase
# a = 7
# b = 4
# print("a <= b",a <= b)
# print("a >= b",a >= b)
# print("a == b",a == b)
# print("a != b",a != b)
# == 和 is 的区别
# a = 10
# b = 10
# print(a ==b) #比较两个的值
# print(a is b) #比较两个的id'
# print(type(a),type(b))
#if 语句中的bool值
#pass语句为占位符
# answer = input("你是好人吗?y/n ")
# if answer == 'y': #true会执行if后面的语句
# pass
# else:
# pass
#循环三部曲 初始化变量 条件判断 改变变量
# sum = 0 #存储偶数和
# a = 1 #初始化变量
# while a <= 100: # 条件判断
# if not bool(a % 2): #判断a%2==0
# sum += a #计算偶数和
# a += 1
# print("1-100之间的偶数和 ", sum)
#for 和 in之中的循环
# for i in range(10): #in后面跟迭代对象
# print(i)
# for _ in range(10): #可以不使用自定义变量,_这个相当于变量
# print("为了她好好活着!")
# # 矩阵
# for i in range( 1, 4): #行表,执行3次,一次一行
# for j in range( 1, i + 1):
# print("*", end = "\t") #不换行输出
# print() # 输空行
#列表
# lst = ['he', 'love', 7, 'she'] #创建一个列表
# print(lst)
# print(lst [0], lst [-4]) #支持顺位(0)和逆位索引(-1)
#使用内置函数list创建列表
# lst2 = list(['i','relly',7])
# print(lst2)
# #列表的索引
# lst = [ 'ay', 'xx', '7', 'me']
# print(lst.index("7")) #列表中有7就会还回相同元素中的第一个索引,相反不在就会报错
# print(lst.index('xx',0,3)) #可以设定查找的范围
# lst = [1, 6, 4, 7, 8, 9, 22, 45]
# print(lst[ 1: 6: 1]) #lst[开始:结束:步长]这是一个切片
# print('原列表', id(lst)) #原理是列表中每一个数分配一个id,lst也单独占一个id
# print(lst[ : : -1]) #步长为负时反向
#末尾添加一个元素
# lst = [10, 7, 6]
# print('添加元素之前',lst,id(lst))
# lst.append(100) #也可以添加列表到列表
# print("添加元素之后", lst, id(lst)) #可以发现lst id不改变
# lst2 = ["ai", 'you', 'true']
# lst.extend(lst2) #将lst2中的元素添加到lst中
# print(lst)
# lst.insert(1, 7) #在任意位置添加元素 .insert(索引,添加数)
# lst3 = [1 , 2, 3, 4]
# lst [1:] = lst3 #直接将lst3的列表元素覆盖到任意位置
# print(lst)
# #列表中的删除
# lst = [1, 2, 3, 7 , 3, 9]
# #lst.remove(3) #一次删除一个元素,重复只删除第一个,元素不在会报错
# #print(lst)
# lst.pop(1) #索引删除,不存在会报错,不指定默认最后一个元素
# print(lst)
#切片操作删除至少一个元素,将产生新的列表对象
# lst = [1, 2, 3, 4, 6 ,7]
# new_list = lst[1 : 3] #[开始: 结束]
# print("原列表",lst)
# print('切片后', new_list)
# lst[1 : 3] = [] # 不产生新的列表对象,而是删除原列表的内容
# lst[2] = 77 #修改指定的元素
# print(lst)
# lst.clear() #清除列表中的所有元素
# print(lst)
# del lst #del语句将列表对象删除
# print(lst)
#列表的sort方法
# lst = [2, 5, 4, 8, 1, 7]
# print("排序前列表", lst, id(lst))
# lst.sort() #升序排列,id值 不变
# print("排序后", lst, id(lst))
# lst.sort(reverse = True) #reverse = True 表示降序
# print(lst)
# lst.sort(reverse = False) #升序
# print(lst)
# lst1 = [1 , 5, 9, 7, 10]
# print("原列表", lst1)
# new_list = sorted(lst1) #内置函数sorted()对列表进行排列,将产生一个新的列表
# print(lst1)
# print(new_list)
# desc_list = sorted(lst1, reverse = True) #使用关键字参数,实现列表降序排列
# print(desc_list)
# lst = [i * i for i in range(1, 10)]
# print(lst) #生成列表
#字典是一个无序序列
# scor ={"张": 100,"晓": 98,"红": 45} #字典的创建、
# print(scor)
# print(type(scor))
# stud = dict(name = "redf",age = 27) # 函数创建字典
# print(stud)
# d = {}
# print(d) #空字典
# print(scor['张']) #查询方式,不在字典会报错
# print(scor.get("红")) #用方法查询,若无会还回none
# scro = {'阿明': 97,'阿娟': 77,'阿玉': 17}
# del scro ["阿娟"] #删除指定的key-value对
# print(scro)
# scro ['小刚 '] = 98 # 新增元素或修改元素
# print(scro)
# scro.clear() #清空字典元素
# print(scro)
# sco = {'晓晓': 44,"小龙": 67,"小强": 79}
# keys = sco.keys() # 获取所有的key
# print(type(keys), keys)
# print(list(keys)) # 将所有的key组成的视图转换成列表
# value = sco.values() # 获取值
# print(value, type(value), list(value), end =" ")
# items = sco.items() # 获取key--values对
# # print(items," ",list(items)) #转换之后的列表元素是由元组 组成
# sc = {"菲尔": 66, '爱丽儿': 43, '旭儿': 12} # key值为不可变量,字典会浪费大量的空间
# for item in sc: #字典也属于可迭代
# print(item, sc[item], sc.get(item)) # get还回指定的值
# items = ["jki", "orcl", "lity"]
# price = [17, 48, 75]
# d = {item.upper(): price for item, price in zip(items, price)} # 内置函数zip将对象对应的元素打包成一个字典
# print(d)
# lst = zip(items, price) # 将对应元素打包成元组
# print(list(lst))
# 元组 是Python内置函数的数据结构,是一个不可变序列
# 字符串也属于不可变序列,不可变序列没有增删改。
# 字典,列表是可变序列,可以进行增删改,对象地址不变
# t = ("python", "word", 98) # 用括号创建元组
# print(t, type(t))
# t1 = tuple(("python", "word", 77)) # 用tuple()创建元组
# print(t1, type(t1))
# t2 = "python", "word", 74 #省略括号
# t3 = ("py",) # 如果元组只有一个元素,逗号不能省
# print(t2, t3)
# t = (10, 7, [5, 6], 9)
# print(t, type(t))
# t[2] = 100 #元组内的不能被改变
# print(t[2])
# 集合 Python提供的内置数据结构
# # 集合是没有value的值
# s = {"xyy", "dxx", 76,"xyy"} #集合的创建,集合中元素不能重复(不会报错)
# print(s)
# s1 = set(range(6)) #使用内置函数set创建集合
# print(s1)
# s3 = set([1, 2, 5, 7]) #集合中元素无序
# print(s3, type(s3))
# s4 = set('ptthon') #字符串会被解分成单个字母的集合
# print(s4)
# # 集合相关的操作
# s = {1, 3, 5, 7, 707, 500, 500}
# s.add(8) #新增一个元素
# print(s)
# s.update({100, 32, 45}) #增加多个元素
# print(s)
# s.remove(100) #元素的删除,若没有就会报错
# print(s)
# s.discard(500) #删除所有的500
# print(s)
# s.pop() # 默认从前面第一个删
# print(s)
# s.clear() # 删光
# print(s)
#集合之间的比较
# s = {10, 2, 4, 5, 7}
# s1 = {10, 3, 5, 6, 9}
# print(s == s1) #false
# print(s != s1) #ture
# s1 = {10, 20, 30, 40, 50, 60}
# s2 = {10, 20, 30, 40}
# print(s2.issubset(s1)) # s2是s1的子集
# print(s1.issuperset(s2)) #s1是s2 的超集
# print(s1.isdisjoint(s2)) #是否有交集(false为有) isdisjoint等价与 &
# print(s1.union(s2)) # 并集 union等价于 |
# print(s1.difference(s2)) #差 集 等价于 s1 - s2
# print(s1.symmetric_difference(s2)) #对称 差 等价于 (s1 ^ s2)
#字符串驻留机制:相同的不会开辟新的空间
#字符串是一个不可变的字符序列
#a = "wsay"
#b = "wsay"
#print(id(a), id(b)) #有相同的id值
#字符串只在编译时进行驻留,而非运行时 【-5, 256】之间的整数
# #强制指向用法
# import sys
# a = "abc%"
# b = "abc%"
# a = sys.inter(b)
#字符串的拼接用str类型join效率更高
#字符串的查询
# s = 'xyxybdwayb'
# print(s.index('yb')) #第一次出现的位置,没有会报错
# print(s.find("yb")) # 第一次出现的位置,没有则还回-1
# print(s.rindex("yb")) #查找最后一次出现的位置,没有则会报错
# print(s.rfind("yb")) # 最后一次出现的位置,没有则会还回-1
#字符串大小写转换
# print(s.upper()) #转换成大写会产生一个新的字符串对象
# print(s.lower()) #转换成小写会产生一个新的字符串对象
# swapcase()把所有大写字母转换成小写,把所有小写转换成大写
# capitalized()把第一个字母转换成大写,其余转换成小写
# title()把单词的第一个字母转换成大写,把其余字母转换成小写
# #字符串内容对齐
# s = "ysyann"
# print(s.center(20, "*")) # 居中 二十个占位,其余用*填充
# print(s.ljust(20, "*")) #左对齐
# print(s.rjust(20, "*")) #右对齐
#字符串的劈分
# s = "hello|word|python"
# print(s.split(sep = "|")) #劈分所有的"|""
# print(s.split(sep = "|",maxsplit=1)) # maxsplit 控制劈分的次数
# rsplit() 从右开始劈分
#字符串常规操作
# s = "hello,python"
# print(s.isidentifier()) # 判断是否为合法标识符
# print("hello".isidentifier())
#isspace() 判断指定字符是否全部由空白字符组成
# isalpha() 判断指定的字符串是否全为字母组成
# isdecimal() 判断指定字符串是否由十进制数字组成
# isnumeric() 判断指定字符串是否全部由数字组成
# isalnum() 判断指定字符串是否全部由字母和数字组成
# s = 'hello,python'
# print(s.replace('python', 'java')) #替换
# s1 = 'hello,python,python,python'
# print(s1.replace('python', 'java', 2)) #replace(" "," ", 替换次数)
# lst = ["hello", 'java', 'python']
# print('|'.join(lst)) # 用|连接
# print(''.join(lst)) # 空字符链接
# print("*".join("python"))
# #字符串的比较
# print("apple" > "app")
# print("apple" > "banana") #相当于97>98
# print(ord('a'), ord('b'))
# print(chr(97), chr(98))
# # 格式化字符串
# name = "小新"
# age = 20
# print("我叫%s,今年%d" % (name, age))
# print('我叫{0},今年{1}岁'.format(name, age))
# print(f'我叫{name}, 今年{age}岁') #赋值符
# print('%10d' % 99) #10 表示宽度
# print('%.3f' % 3.1415926) # .3表示小数点后三位
# print('%10f' % 3.1415926) # 总宽度为10
# print('{0:.3}'.format(3.1415926)) #.3表示一共是三位数
# print('{:.3f}'.format(3.1415926)) #.3f表示三位小数
# print("{:10.3f}".format(3.141592)) #同时设置精度和宽度,一共是10位
# s = "天涯若比邻"
# print(s.encode(encoding= "GBK")) #编码,一个中文占两个字节
# print(s.encode(encoding= "UTF-8")) #编码,一个中文占三个字节
#函数创建与调用
#def 函数名(参数):
# 函数体
# return
# def calc(a, b): # a,b称为形式参数,简称形参
# c = a + b
# return c
# result = calc(10, 20) #10,20称为实际参数的值
# print(result)
# def fun(arg1, arg2):
# print("arg1=", arg1)
# print("arg2=", arg2)
# arg1 = 100
# arg2.append(10)
# print("arg1=", arg1)
# print("arg2=", arg2)
# n1 = 11
# n2 = [22, 33, 44]
# print(n1)
# print(n2)
# fun(n1, n2)
# print(n1)
# print(n2)
# def fun(num):
# odd = [] # 存偶数
# even = [] #存奇数
# for i in num:
# if i % 2 :
# odd.append(i)
# else:
# even.append(i)
# return odd,even
# print(fun([10, 29, 34, 23, 44, 53, 55]))
# lst = [10, 29, 34, 23, 44, 53, 55]
# # print(fun(lst)) #函数值为多个是输出为元组
# def fun2():
# return 'hello', 'word' #是否需要返回值视情况而定
# print(fun2())
# 函数的参数定义
# # 使用*定义个数可变的位置形参
# def fun(*args): #函数定义时,可变的位置函数
# print(args)
# fun(10)
# fun(10, 30)
# fun(30, 405, 50)
# def fun1(**args):
# print(args)
# fun1(a = 10)
# fun1(a = 20, b = 30, c = 40)
# def fun2(*args1, **args2): #在一个函数定义的过程中,既有个数可变也有个数可变的位置形参,要求个数可变的位置形参,放在个数可变的关键字形参之前
# pass
# def fun(a, b, c):
# print('a =', a)
# print('b =', b)
# print('c =', c)
# fun(10, 20, 30) #函数调用时的参数传递,称为位置参数
# lst = [11, 22, 33]
# fun(*lst) #在函数的调用时,将列表中的每个元素都转换为位置实参传入
# fun(a = 100, c = 300, b = 200) #关键字参数
# dic = {'a': 111, 'b': 222, 'c': 333}
# fun(**dic) #在函数调用时,将字典中的键值对都转换为关键字实参传入
# def fun(a, b, *, c, d): #从星号后用关键字传递
# print('a =', a)
# print('b =', b)
# print('c =', c)
# print('d =', d)
# fun(a = 10, b = 20, c = 30, d = 40) #关键字参数传递
# fun(10, 20, c = 30, d = 40) #c和d只能采用关键字实参传递
# def fun(a, b, *, c, d, **args):
# pass
# def fun1(*args, **args1):
# pass
# def fun():
# global age # global使局部变量变为了全局变量
# age = 20
# print(age)
# fun()
# print(age)
# 递归函数(调用本身)1.调用条件 2.终止条件 阶乘的计算
# def fac(n):
# if n == 1:
# return 1
# else:
# return n*fac(n-1)
# print(fac(6))
#斐波拉契数列
# def fib(n):
# if n== 1:
# return 1
# elif n ==2:
# return 1
# else:
# return fib(n-1) + fib(n-2)
# print(fib(6))
# for i in range(1, 7):
# print(fib(i),end =" ")
# try: #可能出异常的代码
# n1 = int(input('请输入一个整数:'))
# n2 = int(input('请输入另一个整数:'))
# result = n1 / n2
# print('结果为:', result)
# except ZeroDivisionError: #except 异常类型 ZeroDivisionErro(除数不能为零) # 报错后执行的代码
# print('整数不能为零')
# except ValueError:
# print('只能输入数字串')
## try ...except ..else 结构
#如果try没有异常,执行else,反之则执行except。
##try ...except ...else ...finally finally块无论是否异常都执行,作用释放资源
##IndexError 序列没有索引 KeyError 映射中没有这个键 NameError 未声明、初始化对象 SyntaxError 语法错误 valueError 值错误
#traceback模块打印异常信息
#类与对象
#类的创建
# class Student: # Student 为类的名称又一个或多个单词组成,每个单词的首字母大写
# native_place = '成都' #类属性
# def _int_(self, name, age): #name, age 为实例属性
# self.name = name #实体属性,进行了赋值操作
# self.age = age
# def info(self): # 实例方法,在类里面定义为方法,在外面叫函数
# print('我的名字叫: ', self.name, "年龄是:", self.age)
# @classmethod # 类方法
# def cm(cls):
# print("类方法")
# @staticmethod # 静态方法
# def sm():
# print("静态方法")
浙公网安备 33010602011771号