#复习

# 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("静态方法")


posted on 2022-04-02 23:04  代码量不多的man  阅读(141)  评论(0)    收藏  举报