####一些常用的操作符#
#list1 = [123]
#list2 = [456]
#print(list1 > list2) ##比较列表第一个元素ASCII的大小, False
#list3 = ["abc"]
#list4 = ["bcd"]
#print(list3 < list4) #比较列表第一个元素ASCII的大小, True
#list5 = [123,456]
#list6 = [789,123]
#list = list5 + list6
##print(list) #字符串可以用“+”来拼接,[123, 456, 789, 123]
##print(list * 2) ##复制列表,[123, 456, 789, 123, 123, 456, 789, 123]
#list *= 2
#print(list) ###和print(list * 2)实现的功能一样,[123, 456, 789, 123, 123, 456, 789, 123]
#list1=["小猪","小猫","小狗","小甲鱼"]
#x="小甲鱼"in list1 #成员关系操作符,in 以及 not in,True
#print(x)
#y="小护士"not in list1 ##成员关系操作符,in 以及 not in,True
#print(y)
#list1 = ["小猪",["小甲鱼"]]
##z="小甲鱼"in list1 #in 和not in 只能判断一个层次的成员关系,False
##print(z)
#m="小甲鱼" in list1[1] #若要判断列表里面的列表元素,首先进入一层列表,True
#print(m)
#n = list1[1][0] #访问列表中的值,二维数组的访问方法,小甲鱼
#print(n)
##列表中的其他函数#
#list = [1,2,2,3,1,8,13,21]
#print(list.count(1)) ##计算参数在列表中出现的次数,2
#print(list.index(1)) #返回第一个目标(1)在list中的位置,0
#start = list.index(1)+1
#stop = len(list)
#print(list.index(1,start,stop))#index的两个参数,可以限定查找的范围,查找第二个目标的位置,4
#list.reverse()
#print(list) #reverse()将列表反转
#list1 = [8,9,3,5,2,6,10,1,0]
#list1.sort()
#print(list1) ##对列表的成员进行排序,从小到大排列,[0, 1, 2, 3, 5, 6, 8, 9, 10]
#list1.sort(reverse=True)
#print(list1)#reverse=False 表示不颠倒顺序,True表示从大到小排序,[10, 9, 8, 6, 5, 3, 2, 1, 0]
#关于copy的真正做法
#list1 = [1,3,2,9,7,8]
#list2 = list1[:]##真正的copy,[1, 3, 2, 9, 7, 8]
#print(list2)
#list1.reverse()
#print(list1)#list1进行翻转,[8, 7, 9, 2, 3, 1]
#print(list2)#真正的copy不随list1的变化而变化,[1, 3, 2, 9, 7, 8]
##元组,跟列表差不多,但是不可以任意修改元组中的元素#
##创建和访问元组#
#tuple1 = (1,2,3,4,5,6,7,8)#创建元组大部分是用的小括号,
#print(tuple1)#(1, 2, 3, 4, 5, 6, 7, 8)
#print(tuple1[:5]) #访问元组方式与列表差不多,(1, 2, 3, 4, 5)
#print(tuple1[5:])##(6, 7, 8)
#tuple2=tuple1[:]#用分片的方式实现复制整个元组,(1, 2, 3, 4, 5, 6, 7, 8)
#print(tuple2)
#tuple1 = ()
#type(tuple1)##创建空元组
#tuple2 = (1,)##创建只有一个元素的元组,必须在后面加逗号
#print(tuple2)##(1,)
#print(8*(8,)) ##(8, 8, 8, 8, 8, 8, 8, 8)
#
###更新和删除元组#
##更新元组是通过copy现有的字符串片段构造新的字符串的方式解决#
#temp = ("小猪","小狗","小鸡")
#temp = temp[:2]+("小甲鱼",)+temp[2:]
#print(temp)##通过分片,更新了一个元组,('小猪', '小狗', '小甲鱼', '小鸡')
#print(temp[:2]+temp[3:])##间接地删除了元组的一个元素,('小猪', '小狗', '小鸡')
#del temp
#print(temp)##删除了整个元组,name 'temp' is not defined
###字符串的创建与元组差不多
#str1 = "I love fishc.com!"
#print(str1[:6]) ##I love
#str2 = str1[:6] + "插入的字符串" +str1[6:]
#print(str2) ##I love插入的字符串 fishc.com!
#temp = "I AM A BOY"
#print(temp.casefold()) ##将所有的字符串由大写变为小写,i am a boy
#str1 = "abcdeabdehshshshshsh"
#print(str1.count("ab",0,15))#查找字符串“an”在长字符串出现的次数
#str2 = "I love fishc.com"
#print(str2.find("love")) #查找出现"love"的第一个字符的位置,2
#print(str2.find("good")) #若查找不到,则显示为-1
#print(str2.index("love"))##实现的功能与find一样,2
#
#print("x".join("test")) ##join是以字符串为分隔符,插入到字符串的所有字符串之间,txexsxt
#print("-".join("hello")) ##h-e-l-l-o
#print("".join(["i","love","fish"]))##ilovefish
#print(" ".join(["i","love","fish"])) ##i love fish
#str1 = "I love you"
#print(str1.replace("you","fish"))##代替所要替换的字符串,I love fish
#str2 = " ".join(['i','love','you'])
#print(str2) ##i love you
#print(str2.split()) ##split 与join正好相反,split用于拆分字符串,['i', 'love', 'you']
#
#str3 = "-".join("fish")
#print(str3) ##f-i-s-h
#print(str3.split()) ##['f-i-s-h']
#print(str3.split(sep='-')) ###['f', 'i', 's', 'h']
###格式化的问题 format,format接受位置参数和关键字参数,均传递叫做replace字段 由{}来表示##
print("{0} love {1} {2}".format("i","you","hi")) ##这是位置参数,i love you hi
print("{a} love {b} {c}".format(a = "i",b = "you",c = "hi")) #这是关键字参数,注意后面有类似于赋值的情况,i love you hi
print("{0} love {b} {c}".format("i",b = "you",c = "hi"))#位置参数与关键字参数混用,要注意位置参数必须在关键字参数之前,否则会报错,i love you hi
##如果要打印{},只需要在{0}外面再加上一个{}即可#
print("{{0}}".format("budayin")) ##这里是没有字段可以输出,{0}
print("{0} :{1:.2f}".format("圆周率",3.1415926))#在替换域中,:表示格式化符号的开始,".2"表示四舍五入保留两位,f的意思是定点数,圆周率 :3.14
##格式化操作符 %,当左右均为数字时,表示求余,当出现在字符中时,为格式化操作符
#print('%c' % 97) ##a
#print(("%c%c%c%c%c")%(70,105,115,104,67))###FishC
#print("%5.1f"%27.658)##总宽度为5,保留一位小数, 27.7
#print("%.2e"%27.658)##2.77e+01
#print("%#x"%100)###0x64
print("%010d" % 5)#0000000005,显示的数字前面填空0代替空格
print("%-10d"%5)##5 ,左对齐
##列表,元组,字符串都可以统称为序列,介绍关于序列的常用内置函数
#a = list()
#print(a) ##创建一个空列表 []
#b = list("FishC")
#print(b)##将字符串的每个元素迭代存放到列表中
#c = list((1,1,2,3,5,8,13))
#print(c) ##将元组中的每个元素迭代存放到列表中
##tuple()可将一个迭代对象装换成元组,具体方法同List
##str()将对象转换成字符串
##len()返回序列的长度
##max()用于返回序列或者参数集合中的最大值,max()的参数可以是一个序列,返回序列中的最大值
list1 = [1,18,13,0,-98,34,54,76,32]
print(max(list1))#f返回最大值 76
str1 = "I love you"
print(max(str1))##y
print(max(5,8,29,7))##29
print(min(1,18,-10))##-10 返回序列或参数集合中的最小值
##要注意,序列或者参数的数据类型要一致,否则就会出错
###reversed()用于返回逆向迭代序列的值
#list1 = [1,18,13,0,-98,34,54,76,32]
#reversed(list1)
#for each in reversed(list1):
# print(each,end=",") #32,76,54,34,-98,0,13,18,1,
##enumerate() 生成一个二元组,由可迭代参数的索引号及其对应的元素组成
#str1 = "love"
#for each in str1:
# print(each) # l
# # o
# # v
# # e
#str2 = "love"
#for each in enumerate(str2):
# print(each) #(0, 'l')
#(1, 'o')
#(2, 'v')
#(3, 'e')
#zip()方法用于返回由各个可迭代参数共同组成的元组
#list1 = [1,3,5,7,9]
#str1 = "love"
#for each in zip(list1,str1):
# print(each)
# #(1, 'l')
#(3, 'o')
#(5, 'v')
#(7, 'e')
#tuple1 = (2,4,6,8)
#for each in zip(list1,str1,tuple1):
# print(each)
# #(1, 'l', 2)
# #(3, 'o', 4)
# #(5, 'v', 6)
# #(7, 'e', 8)
#
#tuple2 = (1,2,3,4)
#str2 = "love"
#for each in zip (str2,tuple2):
# print(each)
# #('l', 1)
#('o', 2)
#('v', 3)
#('e', 4)
#sorted() 用于返回一个排序的列表,与内置函数.sort()实现的效果一致,但是sort是实现列表的原地排序,而sorted是返回一个排序后的新列表
#list1 = [1,18,13,0]
#list2 = list1[:]
#list1.sort()
#print(list1) #.sort是原地排序,也就是在list1上直接改变,[0, 1, 13, 18]
#list3 = sorted(list2)
#print(list3) #生成了一个新的列表,[0, 1, 13, 18]
##
#sum的用法
tuple1 = 1,2,3
print(sum(tuple1)) #6
print(sum(tuple1,10)) #16