1.列表:
stus='赵传慧,贾丹,段家林,刘伟,梁盼,刘艳' new_stus = ['赵传慧','贾丹','张流量','李wifi','颜军田'] #列表、list、数组、array #下标、索引、角标、编号 print(new_stus[-1]) #最前面一个元素的下标是0,最后面一个元素的下标是-1 cities = [] #增 cities.append('北京') #在列表末尾增加一个元素 cities.insert(0,'上海') #在指定的位置增加元素 cities.append('广州') #删 cities.pop(0) #删除指定位置的元素 cities.remove('北京')#删除指定的元素 cities.clear() #清空list del cities[-1] #删除指定位置的 print(cities) #修改 cities[1]='南京' #修改的时候如果指定的下标不存在,会报错 print(cities) # #查 print(cities[0]) #指定位置的 print(cities.index('广州')) #获取元素的下标,如果找不到那个元素的话,会报错 print(cities.count('广州')) #查看元素在list里面出现了多少次 my_list = ['python','jmeter','charles','postman'] print(my_list.reverse()) #就是把这个list反转一下 print(my_list) nums = [9,2,34,12,34,457,2342] nums = ['b','f','e','z','g','h'] # nums.sort() #排序,升序 nums.sort(reverse=True) #排序,降序 print(nums) cities2 = ['深圳','厦门','成都'] # print(cities+cities2)#合并list print(cities*3) #复制几次 print('哈哈哈'*3) words = ['view','code','tools',['price','num',198,['hello','usa','吃鸡']] ] #二维数组 print(words[-1][-1][1]) print(words[-1][2]) names=[ ['小黑',['小绿',138]],'小红',['小紫',['小白']]] # print(names[-1][-1]) print(names[0][-1][-1])
#列表的extend方法 : letters = ['a', 'b'] letters.extend(['c', 'd']) print(letters) # ['a', 'b', 'c', 'd'] letters.append(['e', 'f']) print(letters) # ['a', 'b', 'c', 'd', ['e', 'f']] names = ['Foo', 'Bar'] names.append('Baz') print(names) # ['Foo', 'Bar', 'Baz'] names.extend('Moo') print(names) # ['Foo', 'Bar', 'Baz', 'M', 'o', 'o'] #append()添加数据时只能添加一项无论参数是list还是单一变量 #而extent则不同,extent是将参数看成一个list每次取list内部的一项
list循环
lists = [ '张流量','李wifi','王路由器','牛网线',[1,2,3,4] ] words='marry,lily,joker' # for i in range(4): #其他语言 # # 0 ,1,2,3 # print(lists[i]) for name in lists: if type(name)==list: #判断一个变量的类型 for i in name: print(i) print(name) # for name in words: # print(name) #for循环在循环可迭代对象的时候,每次循环的是里面的每一个元素
list小练习:
# 校验用户名是否合法: # 输入账号 #input # 如果账号存在的,提示已经被注册,如果不存在的,就让他注册 all_users 【 】 #不能为空 #strip() #用户名长度长度6-12之间 len() #最多输入3次 #循环 all_users = ['牛寒阳','梁盼','zhangwifi'] for i in range(3): username = input('请输入账号:').strip() if len(username)>5 and len(username)<13: if all_users.count(username)>0: print('这个名字太好啦,已经被注册啦!') else: print('名字不错,赶紧注册吧!') break else: print('用户名长度不合法!长度6-12之间!') else: print('失败次数过多')
小练习2:
stus=[ ['小明','未交'], ['小白','已交'], ['小紫','已交'], ['小红','未交'], ['小绿','未交'], ['小黄','未交'], ['小黑','已交'] ] pass_list = [ ] #所有已经交作业的同学 fail_list = [ ] #没有交作业同学的名字 for stu in stus: status = stu[1] #状态 name = stu[0] #名字 if status == '未交': fail_list.append(name) else: pass_list.append(name) print('未交作业的所有同学是 %s ,总共有 %s 个人'%(fail_list,len(fail_list))) print('已交作业的所有同学是 %s ,总共有 %s 个人'%(pass_list,len(pass_list)))
2.元组
# 元组也是一个list,他和list的区别是,元组里面元素无法修改 # print(type(t)) # #试试 循环、切片、下标取值、修改值 # print(t[:1]) # print(t[3]) # # for i in t: # # print(i) # print(t) #如果元组里面 只有一个元素的话,那么你必须在这个元素后面加一个逗号 t = (1,2,4,5,6,7) words=(1,) words2=('abc',) print('t',type(t)) print('words',type(words)) print('words2',type(words2)) print(t.index(2)) #找到元素的下班 print(t.count(2)) #找到元素的个数
3.切片
# 切片是list取值的一种方式 nums = ['段佳林','陈卫亮','王占宇','李博'] # 0 1 2 3 print(nums[1:3]) print(nums[0]) print(nums[1:3]) #顾头不顾尾 print(nums[1:]) #如果从某个下标开始取,取到末尾结束,那么末尾的下标可以省略不写 print(nums[:2]) #如果是从头开始取,取到后面某个下标结束,那么开头的下标可以不写 print(nums[:]) #取所有的 lis = list(range(1,21)) print(lis) print(lis[::2]) #步长,隔几个取一次 print(lis[::-2]) #步长,隔几个取一次 #如果步长是正数的话,从左往右边开始取值 ##如果步长是负数的话,从右边往左边开始取值 print(lis[::-1]) #反转list print(lis) print(lis[1::-1]) print(lis[:]) lis.reverse() #改变了原来list的值 new_list = lis[::-1] #产生了新的一个list,不会改变原来list的值 print(new_list) print(lis) #切片操作同样适用于字符串。 info = '你好,今天天气很好' # 0 1 2 3 4 5 6 7 8 print(lis) print(lis[:18:-1]) # [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20] #18 # 19 print(lis) print(lis[::-2]) print(lis[::-1]) print(lis[:18:-1]) # -1倒序,开头没有取值,所以默认从20往左取值,取到18的下标(19),但不顾尾,所以19不取 s = 'hahaha' s = '小黑' print(s) print(s[0]) print(s[::-1])
4.字典:
# key - value # string list dict # 1、取数据方便 # 2、速度快, #查 # print(infos.get('phone'))#取不到这个key的话,就是None # print(infos.get('phone',110))#如果取不到这个key的话,默认就是110 # print(infos['phone'])#如果key不存在会报错 infos = {'name':'张流量','sex':'男','addr':'火星','age':180} #增 infos['phone']=13611087045 #增加一个key infos.setdefault('小金库','2000w') infos.setdefault('name','鹏妹妹') #如果key存在的话,不会修改原来key里面的值 infos['name']='鹏妹妹' #如果key存在的话,会修改原来key对应的value # print(infos) #字典是无序的 #修改 infos['name']='鹏妹妹' #删除 # infos.pop('name') #指定key来删除 # infos.popitem() #随机删除一个key # del infos['phone'] #指定key来删除 # infos.clear() #清空字典 #方法 # print(infos.values())#获取到字典所有的value # print(infos.keys()) #获取到字典所有的key # print(infos.items()) # 获取字典所有的k-v people = { '田雨':{ 'age':18, 'money':200000, 'clothes':'100套', 'hzp':'n多', 'shoes':['nike','addis','lv','chanle'] }, '张流量':{ '金库':'2000w', 'house':['三环一套','4环2套'], 'cars': { 'japan':['普拉多','兰德酷路泽'], 'usa':['林肯','凯迪拉克','福特'], 'china':['五菱宏光','qq','红旗'] } } } people['张流量']['cars']['usa'].append('牧马人') # people['田雨']['shoes'].append('匡威') # print(people) # people['田雨']['money'] = people['田雨']['money']+200 # people['田雨']['money'] += 200 # print(people) #直接循环一个字典的话,那么循环的是字典的key # for p in people: # print(p) for k,v in people.items(): #循环的时候,同时取key和value print(k,'======》',v)
5.字典练习:
users = { 'niuhanyang':'123456', 'yangyafu':'456789', } #所有的账号和密码 # username # pwd # cpwd # print( '123456' in users ) #字典里面用in来判断的话,只是判断key是否存在 for i in range(3): username = input('账号:').strip() passwd = input('密码:').strip() cpasswd = input('密码确定:').strip() if username=='' or passwd=='' or cpasswd=='': print('用户名/密码不能为空') elif username in users: print('用户名已经被注册!') elif passwd!=cpasswd: print('两次输入的密码不一致') else: print('恭喜,注册成功!') # users.setdefault(username,passwd) users[username]=passwd break else: print('错误次数过多') print(users)
作业1:
# 第一个作业 # 1、校验密码是否合法的程序。 # 输入一个密码 # 1、长度5-10位 # 2、密码里面必须包含,大写字母、小写字母和数字 # # http://www.nnzhp.cn/archives/160 取交集的这种方式可以实现 # 3、最多输入5次 capital={'A','B','C','D','E','F','G','H','I','G','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'} minuscules={'a','b','c','d','e','f','g','h','i','g','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'} number={'1','2','3','4','5','6','7','8','9','0'} password=[] for i in range(5): pwd=input("请输入密码:").strip() long=len(pwd) password = set(pwd) if long > 10 or long<5: print("密码长度需要在5-10位之间") elif password & capital == set() or password & minuscules == set() or password & number == set(): print('密码里面必须包含,大写字母、小写字母和数字') elif pwd == '': print("请输入密码:") else: print("您输入的密码合法")
作业2:
#二维字典的插入和读取 #写一个程序根据输入进行录入学生信息或查看作业情况 homeworks = { '张流量':{'2018.3.22':'未交','2018.3.23':'未交'}, '田雨':{'2018.3.22':'未交','2018.3.23':'未交'}, } for i in range(3): choice = input('请输入你的选择:\n' '1、录入学生作业情况\n' '2、查看作业情况\n') if choice=='1': name = input('学生姓名:') date = input('日期:') status = input('是否作业:') if name=='': print("请输入姓名") else: homeworks.setdefault(name,{}) homeworks[name][date]=status print('录入成功!您录入的信息为:' '%s:%s:%s' %(name,date,status)) elif choice=='2': for k, v in homeworks.items(): # 循环的时候,同时取key和value print(k, ':', v) else: print('输入错误') print('您的输入已达到三次,系统自动退出')