• 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)
  • 相关阅读:
    在一个字符串中找到第一个只出现一次的字符
    声明数组变量/// 计算所有元素的总和/打印所有元素总和/输出/foreach循环/数组作为函数的参数/调用printArray方法打印
    intellij idea 如何更改编辑器文本字体和大小
    称砝码算法//输入与算法分开
    invalid types 'int[int]' for array subscript// EOF 输入多组数据//如何键盘输入EOF
    scanf和gets的差别
    输入3行字符串/定义flag/while/字符串后要加空格符
    ‘'的单引号/输入字符串/输出单个字符
    窗口迅速关闭的解决办法/scanf/if/for/break
    【笔记】【VSCode】Windows下VSCode编译调试c/c++
  • 原文地址:https://www.cnblogs.com/hwtfamily/p/8640463.html
Copyright © 2020-2023  润新知