python之数据类型

数据类型

整形: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)
原文地址:https://www.cnblogs.com/hwtfamily/p/8640463.html