• Python-Basis-4th


    周日,多云,记录生活分享点滴

    参考博客:https://www.cnblogs.com/yuanchenqi/articles/5782764.html

    Python版本:3.5

    嵌套基本逻辑

    a = [[1,2,3],"chung",4,(5,6,7)]
    #print(a)
    print (a[0][1])#取[2]
    print (a[3][1])#查(6),元组可以被查询,但不能被修改

    Shopping

    用户将商品添加到购物车并购买的程序

    product_list = [
        ('Mac', 9000),
        ('kindle', 800),
        ('tesla', 900000),
        ('python book', 105),
        ('bike', 2000),
    ]
    saving = input('please input your money:')
    shopping_car = []
    if saving.isdigit():
        saving = int(saving)
        while True:
            for i, v in enumerate(product_list, 1):
                print(i, '>>>>', v)
            choice = input('选择购买商品编号[退出:q]:')
            if choice.isdigit():
                choice = int(choice)
                if choice > 0 and choice <= len(product_list):
                    p_item = product_list[choice - 1]
                    if p_item[1] < saving:
                        saving -= p_item[1]
                        shopping_car.append(p_item)
                    else:
                        print('余额不足,还剩%s' % saving)
                    print(p_item)
                else:
                    print('编码不存在')
            elif choice == 'q':
                print('------------您已经购买如下商品----------------')
                for i in shopping_car:
                    print(i)
                print('您还剩%s元钱' % saving)
                break
            else:
                print('invalid input')

    Shopping 解析版

    #首先将商品数据储存到一个列表中(通过嵌套方式)
    product_list=[
    #商品信息用元组或列表表示,目的是把多个信息作为一个元素存储
        ('Mac',9000),
        ('kindle',800),
        ('tesla',900000),
        ('python book',105),
        ('bike',2000),
    ]
    #目前把商品信息存储到一个大的list里面了
    
    #用一个变量代表现在拥有多少钱
    saving=input('please input your money:')
    shopping_car=[]
    #有变量之后需要对变量做一个校验,通过 .isdigit 判断输入内容是否为纯数字
    if saving.isdigit():  
        #如果是数字,将字符串转成整型,为后面加减法做准备
        saving=int(saving)  
        
        while True:  #while True 的目的是需要反复给用户提供商品列表进行选择
    
            #接下来是具体内容:
            #通过for循环打印商品内容
            for i,v in enumerate(product_list,1):  ##enumerate(列举),表示在列表中以“1”的位置开始,起到加序号作用
                print(i,'>>>>',v)
    
            #引导用户选择商品
            choice=input('选择购买商品编号[退出:q]:')
            
            #验证输入是否合法
            if choice.isdigit():
                choice=int(choice)
                if choice>0 and choice<=len(product_list):  ##len所对应的值是列表的长度
    
                    #验证无问题,需要做两件事
                    #第一:将用户选择商品通过choice取出来
                    p_item=product_list[choice-1]
    
                    #如果钱够,用本金saving减去该商品价格,并将该商品加入购物车
                    if p_item[1]<saving:
                        saving-=p_item[1]
                        shopping_car.append(p_item)
    
                    else:
                        print('余额不足,还剩%s'%saving)
                    print(p_item)
                else:
                    print('编码不存在')
            elif choice=='q':
                print('------------您已经购买如下商品----------------')
                
                #循环遍历购物车里的商品,购物车存放的是已买商品
                for i in shopping_car:
                    print(i)
                print('您还剩%s元钱'%saving)
                break
            else:
                print('invalid input')

    字典

    两大特点:无序、键唯一

    数据类型

    • 不可变类型:整型,字符串,元组
    • 可变类型:列表,字典

    创建字典

    第一种,常用创建方法

    dic={'name':'alex'}

    第二种,不常用创建方法

    dic1={}
    dic2=dict((('name','alex'),)) #从外往里:第一组括号是dict本身携带的,第二组括号代表序列,第三组括号代表键值对。第二三组括号可以是一个列表也可以是一个元组。
    print(dic2)

    第三种,不常用创建方法

    dic3=dict([['name','alex'],])
    print(dic3) 

    第一种:如果有,做修改;如果没有,做创建

    dic1={'name':'alex'}
    dic1['age']=18
    print(dic1)

    第二种:键存在,不改动,返回字典中相应的键对应的值

    dic1={'name':'alex'}
    ret=dic1.setdefault('age',34)
    print(ret)

    第三种:键不存在,在字典中中增加新的键值对,并返回相应的值

    dic1={'name':'alex'}
    ret2=dic1.setdefault('hobby','girl')
    print(dic1)
    print(ret2)

    第一种:通过键去查找

    dic3={'age': 18, 'name': 'alex', 'hobby': 'girl'}
    print(dic3['name'])

    第二种:通过list来将 dic3.keys() 的结果转换成列表式结果 keys()/values()/items()

    dic3={'age': 18, 'name': 'alex', 'hobby': 'girl'}
    print(list(dic3.keys())) #输出的是键
    print(list(dic3.values())) #输出的是值
    print(list(dic3.items())) #输出的是元组,键与值的组合

    第一种:

    dic3={'age': 18, 'name': 'alex', 'hobby': 'girl'}
    dic3['age']=55
    print(dic3)

    第二种: .update 如果原来有,覆盖掉,如果没有,做创建

    dic4={'age': 18, 'name': 'alex', 'hobby': 'girl'}
    dic5={'1':'111','2':'222'} #做创建
    dic5={'1':'111','name':'222'} #覆盖掉
    dic4.update(dic5)
    print(dic4)
    print(dic5)

    第一种:清空字典

    dic5 = {'name': 'chung', 'age': 18, 'class': 1}
    dic5.clear()
    print(dic5)

    第二种:删除字典中指定键值对

    dic5 = {'name': 'alex', 'age': 18, 'class': 1}
    del dic5['name'] 
    print(dic5) 

    第三种:删除字典中指定键值对,并返回该键值对的值

    dic5 = {'name': 'alex', 'age': 18, 'class': 1}
    print(dic5.pop('age')) 
    ret=dic5.pop('age')
    print(ret)
    print(dic5)

    第四种:随机删除某组键值对,并以元组方式返回值

    dic5 = {'name': 'alex', 'age': 18, 'class': 1}
    a = dic5.popitem() 
    print(a, dic5)

    第五种:删除整个字典

    dic5 = {'name': 'alex', 'age': 18, 'class': 1}
    del dic5
    print(dic5)

    其他操作以及涉及到的方法

    dict.fromkeys方法

    dic6=dict.fromkeys(['host1','host2','host3'],'test')
    print(dic6)  #{'host3': 'test', 'host1': 'test', 'host2': 'test'}

    以下涉及深浅拷贝的一点知识

    dic6=dict.fromkeys(['host1','host2','host3'],['test1','tets2'])
    print(dic6)  #{'host2': ['test1', 'tets2'], 'host3': ['test1', 'tets2'], 'host1': ['test1', 'tets2']}
    dic6['host2'][1]='test3'
    print(dic6)  #{'host3': ['test1', 'test3'], 'host2': ['test1', 'test3'], 'host1': ['test1', 'test3']}
    类似深浅拷贝

    字典的嵌套

    在修改前进行查询,查询时遇到字典就用键,遇到列表就用位置

    城市 = {
         "一线":{
             "北京": ["故宫","颐和园"],
             "上海": ["迪士尼"],
         },
         "二线":{
             "杭州":["西湖","其他的?求补充"],
             "南京":["夫子庙","秦淮河"],
         }
     }
     城市['二线']["杭州"][1]='雷峰塔'
     print(城市['二线']["杭州"]) 

    排序

    dic={5:'555',2:'666',4:'444'}
    print(sorted (dic))  #根据键来排序,显示键
    print(sorted(dic.values()))  #根据值来排序,显示值
    print(sorted(dic.items()))  #根据键来排序,显示键值对
    dic.has_keys(5)
    print(5 in dic) 

    字典的遍历

    第一种:效率高

    dic5={'name': 'alex', 'age': 18}
    for i in dic5:
        print(i)  #默认循环字典里面的键
    for i in dic5:
        print(i,dic5[i])+  #打印字典里面的键和值

    第二种:效率低,转化步骤偏多

    dic5={'name': 'alex', 'age': 18}
    for i,v in dic5.items():
         print(i,v)  #打印字典里面的键值对,当只有一个变量i时,则打印元组形式的键值对

    String 字符串

    字符串操作

    第一种:双引号与单引号无区别,但是在特殊情况下注意区分

    a="Let's go "
    print(a)

    第二种: * 重复输出字符串

    print('hello'*20)

    第三种: [] ,[:] 通过索引获取字符串中字符,这里和列表的切片操作是相同的,具体内容见列表

    print('helloworld'[2:])

    第四种:判断in前面内容是否在后面内容中

    print(123 in [23,45,123])
    print('e2l' in 'hello')

    第五种: % 格式字符串

    print('alex is a good teacher')
    print('%s is a good teacher'%'alex')

    第六种:拼接

    # 第一个  join 用字符串将a,b,d拼接,效率高
    c= ''.join([a,b,d])
    print(c)
      
    # 第二个  效率低
    a='123'
    b='abc'
    d='44'
    c=a+b
    print(c) 

    String的内置方法

    常用字符串内置方法:

    st='hello kitty {name} is {age}'
    
    print(st.count('l'))  #统计元素个数
    print(st.center(50,'#'))  #居中
    print(st.startswith('he'))  #判断是否以某个内容开头
    print(st.find('t'))  #查找到第一个元素,并将索引值返回
    print(st.format(name='alex',age=37))  #格式化输出的另一种方式
    print('My tLtle'.lower())  #大写变小写
    print('My tLtle'.upper())  #小写变大写
    print('	My tLtle
    '.strip())  #只处理文本内容(左右两边),跳过空格、换行符
    print('My title title'.replace('itle','lesson',1))  #将字符串内容进行替换,1表示在有多个相同内容的时候,只替换一次
    print('My title title'.split('i',1))  #以左为准,分割对象(i)把字符串分割成列表,分割一次

    其他字符串内置方法

    st='hello kitty {name} is {age}'
    
    print(st.count('l'))  #统计元素个数
    print(st.capitalize())  #首字母大写
    print(st.center(50,'#'))  #居中
    print(st.endswith('tty3'))  #判断是否以某个内容结尾
    print(st.startswith('he'))  #判断是否以某个内容开头
    print(st.expandtabs(tabsize=20))  #规定字符串中的空格数	
    print(st.find('t'))  #查找到第一个元素,并将索引值返回
    print(st.format(name='alex',age=37))  #格式化输出的另一种方式
    print(st.format_map({'name':'alex','age':22}))  #字典也可表示格式化输出
    print(st.index('t'))  #正常状况下同find输出一样
    print('asd'.isalnum())  #判断是否包含字母或数字,汉字也可以
    print('12632178'.isdecimal())  #判断是否为十进制的数
    print('1269999.uuuu'.isnumeric())  #判断是否只由数字组成
    print('abc'.isidentifier())  #判断是否满足标识符定义规则。标识符定义规则为:只能是字母或下划线开头、不能包含除数字、字母和下划线以外的任意字符。
    print('Abc'.islower())  #判断是否为全小写
    print('ABC'.isupper())  #判断是否为全大写
    print('  e'.isspace())  #判断是否是空格
    print('My title'.istitle())  #判断首字母是否是大写
    print('My tLtle'.lower())  #大写变小写
    print('My tLtle'.upper())  #小写变大写
    print('My tLtle'.swapcase())  #大写变小写,同时小写变大写
    print('My tLtle'.ljust(50,'*'))  # *依次向左补充,推动字符串至最左端
    print('My tLtle'.rjust(50,'*'))  # *依次向右补充,推动字符串至最右端
    print('	My tLtle
    '.strip())  #只处理文本内容(左右两边),跳过空格、换行符
    print('	My tLtle
    '.lstrip())  #只处理文本内容(左边),跳过空格、换行符
    print('	My tLtle
    '.rstrip())  #只处理文本内容(左边),跳过空格、换行符
    print('My title title'.replace('itle','lesson',1))  #将字符串内容进行替换,1表示在有多个相同内容的时候,只替换一次
    print('My title title'.rfind('t'))  #从右往左的第一个t的索引位置
    print('My title title'.split('i',1))  #以左为准,分割对象(i)把字符串分割成列表,分割一次
    print('My title title'.title())  #按照起始字符的格式将后面变成统一格式
  • 相关阅读:
    ubuntu搭建GitLab
    inline,inline-block,block元素的区别
    ES6入门学习
    webpack配置
    angular6之路由
    angular6之Http服务
    angular6之http请求拦截器
    Spring Cloud(6.2):搭建OAuth2 Client
    Spring Cloud(6.1):搭建OAuth2 Authorization Server
    keytool命令的使用
  • 原文地址:https://www.cnblogs.com/chungzhao/p/12902166.html
Copyright © 2020-2023  润新知