练习:金字塔
1 ''' 2 1*1=1 3 2*1=2 2*2=4 4 3*1=3 3*2=6 3*3=9 5 ... 6 9*1=9.................9*9=81 7 ''' 8 # for i in range(1,10): #i=3 9 # for j in range(1,i+1): 10 # print('%s*%s=%s ' %(i,j,i*j),end='') #i=2 j=2 11 # print() 12 13 14 15 ''' max_level=5 16 * current_level=1 空格数=4 星号=1 17 *** current_level=2 空格数=3 星号=3 18 ***** current_level=3 空格数=2 星号=5 19 ******* current_level=4 空格数=1 星号=7 20 ********* current_level=5 空格数=0 星号=9 21 ''' 22 max_level=10 23 for current_level in range(1,max_level+1): 24 # 先不换行打印打印空格 25 for x in range(max_level-current_level): 26 print(' ',end='') 27 # 再不换行打印* 28 for y in range(2*current_level - 1): 29 print('*',end='') 30 print()
内容:
1、列表类型及内置方法
1 #一:基本使用 2 # 1 用途:存放多个值,可以根据索引存取值 3 4 # 2 定义方式:在[]内用逗号分割开多个任意类型的值 5 l=['egon','lxx','yxx'] # l=list(['egon','lxx','yxx']) 6 # l1=list('hello') #list就相当于调用了一个for循环依次取出'hello'的值放入列表 7 # print(l1) 8 # l2=list({'x':1,'y':2,'z':3}) 9 # print(l2) 10 # list(10000) # 报错 11 12 # 3 常用操作+内置的方法 13 #优先掌握的操作: 14 #1、按索引存取值(正向存取+反向存取):即可存也可以取 15 l=['egon','lxx','yxx'] 16 # print(l[0]) 17 # l[0]='EGON' 18 # print(l) 19 # print(l[-1]) 20 # print(l[3]) 21 # l[0]='EGON' # 只能根据已经存在的索引去改值 22 # l[3]='xxxxxxxx' #如果索引不存在直接报错 23 24 #2、切片(顾头不顾尾,步长) 25 l=['egon','lxx','yxx',444,555,66666] 26 # print(l[0:5]) 27 # print(l[0:5:2]) 28 # print(l[::-1]) 29 30 #3、长度 31 # l=['egon','lxx','yxx',444,555,66666,[1,2,3]] 32 # print(len(l)) 33 34 #4、成员运算in和not in 35 # l=['egon','lxx','yxx',444,555,66666,[1,2,3]] 36 # print('lxx' in l) 37 # print(444 in l) 38 39 #5、追加变:数组量名.append()#括号内写上需要追加的数据,如果是字符,请加“字符” 40 错误演示: 41 list01=['egon','lxx','yxx',444,555,66666,[1,2,3]] 42 list01.append(joke) 43 print(list01) 44 报错如下,说joke追加的内容是字符串,没有被定义,需要加上“joke”,这样才是正确的 45 Traceback (most recent call last): 46 File "C:/SH_fullstack_S3/class_note/0practice_lesson/ffff.py", line 2, in <module> 47 list01.append(joke) 48 NameError: name 'joke' is not defined 49 50 51 l=['egon','lxx','yxx'] 52 # l.append(44444) 53 # l.append(55555) 54 # print(l) 55 56 #6、往指定索引前插入值 57 # l=['egon','lxx','yxx'] 58 # l.insert(0,11111) 59 # print(l) 60 # l.insert(2,2222222) 61 # print(l) 62 63 #7、删除 64 # l=['egon','lxx','yxx'] 65 66 # 单纯的删除值: 67 # 方式1: 68 # del l[1] # 通用的 69 # print(l) 70 71 # 方式2: 72 # res=l.remove('lxx') # 指定要删除的值,返回是None 73 # print(l,res) 74 75 # 从列表中拿走一个值 76 # res=l.pop(-1) # 按照索引删除值(默认是从末尾删除),返回删除的那个值 77 # print(l,res) 78 79 #8、循环 80 # l=['egon','lxx','yxx'] 81 # for item in l: 82 # print(item) 83 84 # 需要掌握的操作 85 l=['egon','egon','lxx','yxx',444,555,66666] 86 # print(l.count('egon')) 87 # print(l.index('egon')) 88 # print(l.index('yxx',0,1)) 89 # l.clear() 90 91 # items=['a','b','c'] 92 # items='hello' 93 # for item in items: 94 # l.append(item) 95 # l.extend(items) 96 # print(l) 97 98 # l=['egon','egon','lxx','yxx',444,555,66666] 99 # l.reverse() 100 # print(l) 101 102 # nums=[3,-1,9,8,11] 103 # nums.sort(reverse=True) 104 # print(nums) 105 106 不同类型的数据进行sort操作时,会报错,因为类型不一样。 107 # items=[1,'a','b',2] 108 # items.sort() 109 Traceback (most recent call last): 110 File "C:/SH_fullstack_S3/class_note/0practice_lesson/ffff.py", line 2, in <module> 111 items.sort() 112 TypeError: '<' not supported between instances of 'str' and 'int' 113 114 115 116 #二:该类型总结 117 # 1 存多个值 118 119 # 120 # 2 有序 121 # 122 # 3 可变 123 # l=['a','b','c'] 124 # print(id(l)) 125 # l.append('d') 126 # print(id(l))
2、元组及内置方法
1 #一:基本使用:tuple 2 # 1 用途:记录多个值,当多个值没有改的需求,此时用元组更合适 3 # 4 # 2 定义方式:在()内用逗号分隔开多个任意类型的值 5 t=(1,1.3,'xx',('a','b'),[1,2]) #t=tuple((1,1.3,'xx',('a','b'),[1,2])) 6 # print(t,type(t)) 7 # t1=tuple('hello') 8 # print(t1) 9 10 # 3 常用操作+内置的方法 11 #优先掌握的操作: 12 #1、按索引取值(正向取+反向取):只能取 13 t=('egon',123,['a','b']) 14 # print(id(t[0])) 15 # print(id(t[1])) 16 # print(id(t[2])) 17 # 18 # t[2][0]='A' 19 # print('='*50) 20 # print(id(t[0])) 21 # print(id(t[1])) 22 # print(id(t[2])) 23 # # t[0]='EGON' 24 # 25 # # t[2]='xxxx' 26 # # t[2][0]='A' 27 # # print(t) 28 29 #2、切片(顾头不顾尾,步长) 30 # t=(1,2,3,4,5) 31 # print(t[0:3]) 32 # print(t) 33 #3、长度 34 35 #4、成员运算in和not in 36 37 #5、循环 38 # for item in ('a','b','c'): 39 # print(item) 40 41 # 需要掌握的操作 42 # t=('a','b','c','a') 43 # print(t.count('a')) 44 # print(t.index('a',1,10)) 45 # print(t.index('xxx',1,10)) 46 47 #二:该类型总结 48 # 1 存多个值 49 50 # 2 有序 51 # 52 # 3 不可变
3、字典及内置方法
1 # 补充: 2 # 不可变类型=》可hash类型 3 # 可变类型 =》不可以hash类型 4 5 #一:基本使用dict 6 # 1 用途:记录多个值,每一个值都对应的key用来描述value的作用 7 # 8 # 2 定义方式:在{}内用逗号分隔开多 个key:value,其中value可以是任意类型,而key必须是不可变的类型,通常情况下应该str类型 9 # dic={0:'aaa',1:'bbb',2:'cccc'} #dic=dict({0:'aaa',1:'bbb',2:'cccc'}) 10 # print(dic,type(dic)) 11 # print(dic[0]) 12 13 # dic={[1,2]:'aaa'} 14 # dic={(1,2):'aaa'} 15 # print(dic[(1,2)]) 16 17 # 用法一: 18 # dic=dict(x=1,y=2,z=3) 19 # print(dic) 20 21 # 用法二: 22 # userinfo=[ 23 # ['name','egon'], 24 # ['age',18], 25 # ['sex','male'] 26 # ] 27 # d={} 28 # for k,v in userinfo: #k,v=['name', 'egon'] 29 # # print(k,v) 30 # d[k]=v 31 # print(d) 32 33 # d=dict(userinfo) 34 # print(d) 35 36 # 3 常用操作+内置的方法 37 #优先掌握的操作: 38 #1、按key存取值:可存可取 39 # dic={'name':'egon'} 40 # print(dic['name']) 41 # dic['name']='EGON' 42 # print(dic) 43 # dic['age']=18 44 # print(dic) 45 46 # l=['a','b'] 47 # l[0]='A' 48 # l[2]='c' 49 50 #2、长度len 51 # dic={'name':'egon','age':18,'name':'EGON','name':'XXXX'} 52 # print(dic) 53 # print(len(dic)) 54 55 #3、成员运算in和not in:字典的成员运算判断的是key 56 # dic={'name':'egon','age':18,} 57 # print(18 in dic) 58 # print('age' in dic) 59 60 #4、删除 61 dic={'name':'egon','age':18,} 62 # 通用 63 # del dic['name'] 64 # print(dic) 65 # del dic['xxx'] ##key不存在则报错 66 67 68 # res=dic.pop('age') #删除key对应的value,并返回value 69 # print(dic) 70 # print(res) # 71 # dic.pop('xxx') #key不存在则报错 72 73 # res=dic.popitem() 74 # print(dic) 75 # print(res) 76 77 #5、键keys(),值values(),键值对items() 78 dic={'name':'egon','age':18,} 79 # print(dic.keys()) 80 # l=[] 81 # for k in dic.keys(): 82 # l.append(k) 83 # print(l) 84 # print(list(dic.keys())) 85 86 # print(dic.values()) 87 # print(list(dic.values())) 88 # print(dic.items()) 89 # print(list(dic.items())) 90 91 92 93 #6、循环 94 dic={'name':'egon','age':18,'sex':'male'} 95 96 # for k in dic.keys(): 97 # print(k,dic[k]) 98 99 # for k in dic: 100 # print(k,dic[k]) 101 102 # for v in dic.values(): 103 # print(v) 104 105 # for k,v in dic.items(): 106 # print(k,v) 107 108 #8 dic.get() 109 dic={'name':'egon','age':18,'sex':'male'} 110 # dic['xxx'] 111 # v=dic.get('name') 112 # print(v) 113 114 # v=dic.get('xxx') 115 # print(v) 116 117 # 需要掌握的操作 118 119 # dic.fromkeys()的用法: 120 # l=['name','age','sex'] 121 # dic={'name':None,'age':None,'sex':None} 122 # dic={} 123 # for k in l: 124 # dic[k]=None 125 # print(dic) 126 127 # dic=dic.fromkeys(l,None) 128 # print(dic) 129 130 131 # old_dic={'name':'egon','age':18,'sex':'male'} 132 # new_dic={'name':'EGON','x':1,'y':2} 133 # old_dic.update(new_dic) 134 # print(old_dic) 135 136 # setdefault:有则不动/返回原值,无则添加/返回新值 137 # dic={'name':'egon','age':18} 138 # res=dic.setdefault('name','EGON') # 字典中已经存在key则不修改,返回已经存在的key对应的value 139 # print(dic) 140 # print(res) 141 142 # res=dic.setdefault('sex','male') # 字典不存在key则添加"sex":"male",返回新的value 143 # print(dic) 144 # print(res) 145 146 147 # #二:该类型总结 148 # 1 存多个值 149 150 # 2 无序 151 # 152 # 3 可变 153 # dic={'x':1} 154 # print(id(dic)) 155 # dic['x']=2 156 # print(id(dic))
练习:
1 # 练习1: 2 # nums=[11,22,33,44,55,66,77,88,99,90] 3 # dic={ 4 # 'k1':[], 5 # 'k2':[] 6 # } 7 # for num in nums: 8 # if num > 66: 9 # dic['k1'].append(num) 10 # else: 11 # dic['k2'].append(num) 12 # print(dic) 13 # 14 15 # 练习2: 16 # s='hello alex alex say hello sb sb' 17 # words=s.split() 18 # dic={} 19 # # print(words) 20 # for word in words: 21 # if word in dic: 22 # dic[word]+=1 23 # else: 24 # dic[word]=1 25 # 26 # print(dic) 27 28 # s='hello alex alex say hello sb sb' 29 # words=s.split() 30 # dic={} 31 # for word in words: # word="hello" 32 # dic.setdefault(word,words.count(word)) #{'hello':2,"alex":2,"say":1,} 33 # print(dic)
4、集合类型及内置方法
1 # pythons=['李二丫','张金蛋','李银弹','赵铜蛋','张锡蛋','alex','oldboy'] 2 # linuxs=['lxx','egon','张金蛋','张锡蛋','alex','陈独秀'] 3 # 4 # l=[] 5 # for stu in pythons: 6 # if stu in linuxs: 7 # l.append(stu) 8 # 9 # print(l) 10 11 12 #一:基本使用:set 13 # 1 用途: 关系运算,去重 14 # 15 # 2 定义方式: 在{}内用逗号分开个的多个值 16 # 集合的三大特性: 17 # 2.1 每一个值都必须是不可变类型 18 # 2.2 元素不能重复 19 # 2.3 集合内元素无序 20 21 # s={1,3.1,'aa',(1,23),} # s=set({1,3.1,'aa',(1,23),}) 22 # print(s,type(s)) 23 24 # s={1,1,1,1,1,1,1,1,1,2,3} 25 # print(s) 26 27 # s={'a','b','c'} 28 # s[0] 29 30 # s=set('hello') 31 # print(s) 32 # print(set(['a','b','c',[1,2]])) 33 34 # 3 常用操作+内置的方法 35 pythons={'李二丫','张金蛋','李银弹','赵铜蛋','张锡蛋','alex','oldboy'} 36 linuxs={'lxx','egon','张金蛋','张锡蛋','alex','陈独秀'} 37 # 取及报名python课程又报名linux课程的学员:交集 38 # print(pythons & linuxs) 39 # print(pythons.intersection(linuxs)) 40 41 # 取所有报名老男孩课程的学员:并集 42 # print(pythons | linuxs) 43 # print(pythons.union(linuxs)) 44 45 # 取只报名python课程的学员: 差集 46 # print(pythons - linuxs) 47 # print(pythons.difference(linuxs)) 48 49 # 取只报名linux课程的学员: 差集 50 # print(linuxs - pythons) 51 # print(linuxs.difference(pythons)) 52 53 # 取没有同时报名两门课程的学员:对称差集 54 # print(pythons ^ linuxs) 55 # print(pythons.symmetric_difference(linuxs)) 56 57 # 是否相等 58 # s1={1,2,3} 59 # s2={3,1,2} 60 # print(s1 == s2) 61 62 # 父集:一个集合是包含另外一个集合 63 # s1={1,2,3} 64 # s2={1,2} 65 # print(s1 >= s2) 66 # print(s1.issuperset(s2)) 67 68 # s1={1,2,3} 69 # s2={1,2,4} 70 # print(s1 >= s2) 71 72 # 子集 73 # s1={1,2,3} 74 # s2={1,2} 75 # print(s2 <= s1) 76 # print(s2.issubset(s1)) 77 78 # 需要掌握操作 79 # s1={1,2,3} 80 # s1.update({3,4,5}) 81 # print(s1) 82 83 # s1={1,2,3} 84 # res=s1.pop() 85 # print(res) 86 87 # s1={1,2,3} 88 # res=s1.remove(3) #单纯的删除,返回值为None 89 # print(s1) 90 91 # s1={1,2,3} 92 # s1.add(4) 93 # print(s1) 94 95 # s1={1,2,3} 96 # s2={1,2} 97 # s1.difference_update(s2) #s1=s1.difference(s2) 98 # print(s1) 99 100 # s1={1,2,3} 101 # res=s1.discard(3) ##单纯的删除,返回值为None 102 # print(s1) 103 # print(res) 104 # s1.remove(444444) #删除的元素不存在则报错 105 # s1.discard(444444) #删除的元素不存在不会报错 106 107 108 # s1={1,2,3} 109 # s2={1,2,4} 110 # print(s1.isdisjoint(s2)) #如果两个集合没有交集则返回True 111 112 # s1={1,2,3} 113 # s2={4,5,6} 114 # print(s1.isdisjoint(s2)) #如果两个集合没有交集则返回True 115 116 #二:该类型总结 117 # 1 存多个值 118 # 119 # 2 无序 120 # 121 # 3 set可变 122 # s={1,2,3} 123 # print(id(s)) 124 # s.add(4) 125 # print(id(s)) 126 127 # 集合去重 128 # 局限性 129 #1、无法保证原数据类型的顺序 130 #2、当某一个数据中包含的多个值全部为不可变的类型时才能用集合去重 131 # names=['alex','egon','alex','alex','egon','lxx'] 132 # s=set(names) 133 # print(s) 134 # l=list(s) 135 # print(l) 136 137 stus_info=[ 138 {'name':'egon','age':18}, 139 {'name':'alex','age':73}, 140 {'name':'oldboy','age':84}, 141 {'name': 'egon', 'age': 18}, 142 {'name': 'egon', 'age': 18}, 143 {'name': 'egon', 'age': 18}, 144 {'name': 'oldboy', 'age': 84}, 145 146 ] 147 # set(stus_info) # 报错 148 l=[] 149 for info in stus_info: 150 if info not in l: 151 l.append(info) 152 153 # print(l) 154 stus_info=l 155 print(stus_info)
知识点:
# 队列:先进先出
# l=[]
# # 入队
# l.append('first')
# l.append('second')
# l.append('third')
# print(l)
# # 出队
# print(l.pop(0))
# print(l.pop(0))
# print(l.pop(0))
# 堆栈:先进后出
l=[]
# 入栈
l.append('first')
l.append('second')
l.append('third')
# print(l)
# 出栈
print(l.pop())
print(l.pop())
print(l.pop())