数据类型
整形:int 例如:age=18
整形为整数类型,在Python中为int类型 没有long类型,包含正整数、负整数、0
浮点型:float 例如:score=99.9
布尔型:True、False。不是真就是假,还有0或1,非0即真
字符串:string name='hwt'
常用的字符串方法:
# a=' 字 符 串 ' # c = a.strip() #默认去掉字符串两边的空格和换行符 # c= a.lstrip() #默认去掉字符串左边的空格和换行符 # c = a.rstrip() #默认去掉字符串右边的空格 # print('c...',c) # print('a...',a) words = 'http://www.nnzHp.cn' # print(words.strip('day')) #如果strip方法指定一个值的话,那么会去掉这两个值 # print(words.count('a')) #统计字符串出现的次数 #print(words.index('z')) #找下标,如果元素找不到的话,会报错 # print(words.find('z')) #找下标,如果元素找不到的话,返回-1 # print(words.replace('day','DAY')) #替换字符串 # print(words.isdigit()) #判断字符串是否为纯数字 # print(words.startswith('http')) #判断是否以某个字符串开头 # print(words.endswith('.jpg')) #判断是否以某个字符串结尾 # print(words.upper()) #变成大写的 # print(words.lower()) #变成小写的 #print(a.startswith('text'))#以text开头 #print(a.endswith('.xls'))#以.xls结尾 username = 'abcdefADS12345@#¥' # print(username.isalpha()) #判断字符串是否全为字母 # print(username.isalnum()) #判断是否包含字母和数字,它是只要有字母或者有数字就返回true ''.join('')#连接字符串 #它把一个list变成了字符串,并且通过某个字符串把list里面的每个元素链接起来, # 只要是可以循环的,join都可以帮你连接起来 #sl=str(l)不是将list的字符串连接起来,如下: # l=['a','b','c','d'] # sl=str(l)#其实是sl='['a','b','c','d']' # print(sl[0])#输出为:[ # str=['zhang','liu','liang'] # str=''.join(str)#它把一个list变成了字符串 # str1='-'.join(str)#'-'表示用-连接字符,通过某个字符串把list里面的每个元素链接起来 # print(str) # print(str1) # import string # print(string.ascii_lowercase)#所有的小写字母 # print(string.ascii_uppercase)#所有的小写字母 # print(string.digits)#所有的数字 # print(string.ascii_letters)#所有的大写字母和小写字母 # print(string.punctuation)#所有的特殊字符 # res='.'.join(string.ascii_lowercase)# # print(res) #format方法 name='niuhayang,zch,caoran,yangyafu' name_list=name.split(',')#分割字符串 print(name_list) name_list1=name.split('h')#根据某个字符串,分割字符串,以谁分割,该字符串则不在出现 print(name_list1) user='明明' sex='男' age=18 addr='天河区' money='1000w' cars='1w台' words='inser into user values("%s","%s","%s","%s","%s","%s")'%(user,sex,age,addr,money,cars) sql='inser into user values({name},{sex},{age},{addr},{qian},{che});' new_sql=sql.format(age=age,che=cars,name=user,sex=sex,qian=money,addr=addr) print(new_sql) print ('欢迎光临'.center(50,'*'))#50个*,将字符串欢迎光临居中
列表
list 也叫数组,用[]表示,里面可以再套列表,一个里面套一个列表,叫二维数组;一个里面套一个列表,里面的列表再套一个列表,这个叫三维数组
list=[1,2,3,4,5,6,7]#一维数组
list=['apple','red',['hello','world']]#二维数组
list=['apple','red',['hello','world',['beijing','广州']]]#三维数组
列表操作:
增:
list=[] list.append('北京')#在列表最后面添加北京 list.insert(0,'上海')#在列表指定位置(下标为0)插入上海
删:
list=['上海', '北京', '广州', '深圳'] list.remove('广州')#删除指定值:广州 print(list) list.pop(1)#删除下标为1:北京,不传入下标的话,删除最后一个值,传入下标删除指定位置的值 print(list) del list[1]#删除指定位置的值 print(list) list.clear()#清空列表 print(list)
#结果:
#['上海', '北京', '深圳']
#['上海', '深圳']
#['上海']
#[]
改:
#改 list=['上海', '北京', '广州', '深圳','广州'] list[0]='重庆' #下标为0的上海修赋值改为重庆,相当于将list[0]重新赋值为重庆 print(list)
#结果:
#['重庆', '北京', '广州', '深圳', '广州']
查:
list=['上海', '北京', '广州', '深圳','广州'] list[0]='重庆' #下标为0的上海修赋值改为重庆,相当于将list[0]重新赋值为重庆 print(list) print(list[0])#查看第一个元素 print(list[-1])#查看最后一个元素 print(list[1:3])#查看下标1-2的元素,1:3表示从下标1到下标2,不到下标3,顾头不顾尾 print(cities.index('广州')) #获取元素的下标,如果找不到那个元素的话,会报错 print(cities.count('广州')) #查看元素在list里面出现了多少次 #结果: #['重庆', '北京', '广州', '深圳', '广州'] #重庆 #广州 #['北京', '广州']
反转:
my_list = ['python','jmeter','charles','postman'] print(my_list.reverse()) #就是把这个list反转一下 print(my_list) 结果: ['postman', 'charles', 'jmeter', 'python']
排序:
num.sort() print(num) nums = ['h','w','t','a','d','h'] nums.sort() #排序,升序 print(nums) nums.sort(reverse=True) #排序,降序 print(nums) list=['上海', '北京', '广州', '深圳','广州'] list.sort()#排序,升序 print(list) list.sort(reverse=True) #排序,降序 print(list) print(num+list) print(list*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])
#结果 [1, 2, 5, 10, 12, 29, 33, 34, 38, 47, 68] ['a', 'd', 'h', 'h', 't', 'w'] ['w', 't', 'h', 'h', 'd', 'a'] ['上海', '北京', '广州', '广州', '深圳'] ['深圳', '广州', '广州', '北京', '上海'] [1, 2, 5, 10, 12, 29, 33, 34, 38, 47, 68, '深圳', '广州', '广州', '北京', '上海'] ['深圳', '广州', '广州', '北京', '上海', '深圳', '广州', '广州', '北京', '上海', '深圳', '广州', '广州', '北京', '上海'] usa 198 138
切片:
nums = ['段佳林','陈卫亮','王占宇','李博'] # 0 1 2 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[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 #18 # 19 print(info[1:3]) # print(lis[:18:-1]) # -1倒序,开头没有取值,所以默认从20往左取值,取到18的下标(19),但不顾尾,所以19不取 s = 'hahaha' s = '小黑' print(s) # print(s[0]) # print(s[::-1])
列表循环:
lists = ['张流量','李wifi','王路由器','牛网线',[1,2,3,4] ] for name in lists: if type(name)==list: #判断一个变量的类型 for i in name: print(i) print(name) words='hello,world' for name in words: print(name) #for循环在循环可迭代对象的时候,每次循环的是里面的每一个元素
列表小练习:
(1)
# 校验用户名是否合法: # 输入账号 #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)))
元组
元组也是一个list,他和list的区别是,元组里面元素无法修改
#如果元组里面 只有一个元素的话,那么你必须在这个元素后面加一个逗号 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)) #找到元素的个数
字典
字典的特性:
1、字典是无序的,它没有下标,用key来当索引,所以是无序的
2、字典的key必须是唯一的,因为它是通过key来进行索引的,所以key不能重复,天生就去重
除此之外:字典存取方便速度快
字典的操作:
增:
infos = {'name':'流量','sex':'男','addr':'火星','age':180} infos['phone']=13611087045 #增加一个key print(infos) infos.setdefault('小金库','2000w') print(infos) infos.setdefault('name','鹏妹妹') #如果key存在的话,不会修改原来key里面的值 print(infos) infos['name']='鹏妹妹' #如果key存在的话,会修改原来key对应的value print(infos) #结果 {'name': '流量', 'sex': '男', 'addr': '火星', 'age': 180, 'phone': 13611087045} {'name': '流量', 'sex': '男', 'addr': '火星', 'age': 180, 'phone': 13611087045, '小金库': '2000w'} {'name': '流量', 'sex': '男', 'addr': '火星', 'age': 180, 'phone': 13611087045, '小金库': '2000w'} {'name': '鹏妹妹', 'sex': '男', 'addr': '火星', 'age': 180, 'phone': 13611087045, '小金库': '2000w'}
删:
infos = {'name':'流量','sex':'男','addr':'火星','age':180,'phone':'13611087045'} infos.pop('name') #指定key来删除 print(infos) del infos['phone'] #指定key来删除 print(infos) infos.popitem() #随机删除一个key print(infos) infos.clear() #清空字典 print(infos) #结果 {'sex': '男', 'addr': '火星', 'age': 180, 'phone': '13611087045'} {'sex': '男', 'addr': '火星', 'age': 180} {'sex': '男', 'addr': '火星'} {}
改:
infos = {'name':'流量','sex':'男','addr':'火星','age':180,'phone':'13611087045'} infos['name']='张三' infos['sex']='性别不详' print(infos) #结果 {'name': '张三', 'sex': '性别不详', 'addr': '火星', 'age': 180, 'phone': '13611087045'}
示例:
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)
查:
infos = {'name':'流量','sex':'男','addr':'火星','age':180,'phone':'13611087045'} print(infos.get('phone'))#取不到这个key的话,就是None print(infos.get('car'))#取不到这个key的话,就是None print(infos.get('phone',110))#如果取不到这个key的话,默认就是110 print(infos['phone'])#如果key不存在会报错 print('car' in infos)#判断car是否在这个字典中,返回True或者False #结果 13611087045 None 13611087045 13611087045 False
字典方法:
infos = {'name':'流量','sex':'男','addr':'火星','age':180,'phone':'13611087045'} print(infos.keys()) #获取到字典所有的key print(infos.values())#获取到字典所有的value print(infos.items()) # 获取字典所有的k-v infos2={'high':'180','sex':'女'} infos.update(infos2)#更新字典值,如果key存在的话,就更新,不存在的话就添加 print(infos) #结果 dict_keys(['name', 'sex', 'addr', 'age', 'phone']) dict_values(['流量', '男', '火星', 180, '13611087045']) dict_items([('name', '张流量'), ('sex', '男'), ('addr', '火星'), ('age', 180), ('phone', '13611087045')]) {'name': '张流量', 'sex': '女', 'addr': '火星', 'age': 180, 'phone': '13611087045', 'high': '180'}
字典循环:
infos = {'name':'流量','sex':'男','addr':'火星','age':180,'phone':'13611087045'} for k in infos: print(k,':',infos[k])#打印key和value的值,推荐使用这种方式,速度快 for k,v in infos.items(): print(k,v)#打印key和value的值,这种方式不推荐,因为会把字典转换成列表,效率不高 #结果 name : 流量 sex : 男 addr : 火星 age : 180 phone : 13611087045 name 流量 sex 男 addr 火星 age 180 phone 13611087045
字典排序:
d={'b':4,'a':8,'c':3} print(d)#无序的{'c': 3, 'a': 8, 'b': 4} #字典是无序,直接对字典排序是不存在的 print(d.items())#dict_items([('c', 3), ('a', 8), ('b', 4)])dict_items([('a', 4), ('c', 3), ('b', 8)]) #根据字典的key排序 res=sorted(d.items(),key=lambda x:x[0])#[('a', 8), ('b', 4), ('c', 3)] print(res) #如果只对key 排序, res1=sorted(d.items())#[('a', 8), ('b', 4), ('c', 3)] print(res1) #根据字典的valuse res2=sorted(d.items(),key=lambda x:x[1])#[('c', 3), ('b', 4), ('a', 8)] print(res2) #sorted,循环调用
字典小练习:
关于注册账号,用户名不能重复、注册次数不能超过三次
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)
作业:
for i in range(5): passwd = input('passwd:').strip() if passwd!='': if len(passwd)>4 and len(passwd)<11: num_count = 0 # 数字出现的次数 lower_count = 0 # 小写字母出现的次数 upper_count = 0 # 大写字母出现的次数 for p in passwd: if p.isdigit(): num_count+=1 elif p.islower(): lower_count+=1 elif p.isupper(): upper_count+=1 if num_count>0 and lower_count>0 and upper_count>0: print('密码校验通过') else: print('密码不合法') else: print('密码最少5位,最长10位') else: print('不能为空')
(2)
# homeworks ={ '张流量': { '2018-03-31':"未交" }, '李wifi':{ '2018-03-31':"未交" } } choice = input('请输入你的选择,1查看作业,2录入:') if choice=='1': for k,v in homeworks.items(): print('【%s】的作业情况是 %s'%(k,v)) elif choice=='2': for i in range(3): name = input('输入名字:').strip() time = input('输入日期:').strip() status = input('输入状态:').strip() if name =='' or time =='' or status=='': print('输入不能为空') else: if name in homeworks: tmp = {time:status} homeworks[name].update(tmp) print('更新学生作业信息成功') break else: homeworks[name]={time:status} print('成功') break print(homeworks)