zoukankan      html  css  js  c++  java
  • python 3 day2(下)

    对一、今天主要讲的是python中浅copy和深copy的用法和区别。如下图,使用copy可以完整的复制一个列表。

    将下标为3的值alex更改为ALEXANDER的方法为 names[3][0] = 更改后的值(注意后面一个下标0为小列表中alex下标位置的意思)

    此时的打印结果为:

    我们会发现“向鹏”在names和name2中选择性copy了,但是ALEXANDER在1和2 中都被copy了。说明copy只是浅copy只copy了第一层。

    如果我更改了name2的值,names会跟着被copy吗?答案是会。

    如果需要完完全全的复制一份列表应该怎么操作?

    再看看步长切片的应用:

    结果如下,隔一个值取一个:

    2.元组

    元组其实和列表差不多,也是存一组数,只不过它一旦创建,便再也不能修改,所以又叫只读列表。

    语法:

     

    它只有2个方法,一个是count,一个是index,完毕。

    程序练习

    请闭眼写出以下程序

    程序:购物车程序

    需求:

             1.启动程序后,让用户输入工资,然后打印商品列表

             2.允许用户根据商品编号购买商品

             3.用户选择商品后,检测余额是否够,够就直接付款,不够就提醒

             4.可随时退出,退出是,打印已购买商品和余额。

     先理清一个程序的主要逻辑思路之后,你会发现通过不断的积累这些逻辑思维,写起程序来不再是一脸茫然了。

    但此时我们会发现,运行结果中没有产品编号,只能运行一次:

    由于这些产品在列表中有下标,我们可以使用下标来当产品编号:

    将print改为上图所示后,运行结果我们可以看出,下标出来了:

     还有更为简便的写法,即使用enumerate将列表中数据的下标直接取出来:

    完善之后的简易版程序脚本是这样的:

    仔细看会发现,这个程序目前只考虑了买的起的情况,不涉及买不起的情况,如果买不起应该怎样去写呢?很简单,只需在Added那行代码下面新增一个else:

    运行结果显示如下:

    那么问题又来了,程序不可能无止境的运行下去,如果想退出该程序,应该如何操作呢?

    二、字符串操作

     复制代码

    name.capitalize()  首字母大写
    name.casefold()   大写全部变小写
    name.center(50,"-")  输出 '---------------------Alex Li----------------------'
    name.count('lex') 统计 lex出现次数
    name.encode()  将字符串编码成bytes格式
    name.endswith("Li")  判断字符串是否以 Li结尾
     "Alex	Li".expandtabs(10) 输出'Alex      Li', 将	转换成多长的空格 
     name.find('A')  查找A,找到返回其索引, 找不到返回-1 
    
    format :
        >>> msg = "my name is {}, and age is {}"
        >>> msg.format("alex",22)
        'my name is alex, and age is 22'
        >>> msg = "my name is {1}, and age is {0}"
        >>> msg.format("alex",22)
        'my name is 22, and age is alex'
        >>> msg = "my name is {name}, and age is {age}"
        >>> msg.format(age=22,name="ale")
        'my name is ale, and age is 22'
    format_map
        >>> msg.format_map({'name':'alex','age':22})
        'my name is alex, and age is 22'
    
    
    msg.index('a')  返回a所在字符串的索引
    '9aA'.isalnum()   True
    
    '9'.isdigit() 是否整数
    name.isnumeric  
    name.isprintable
    name.isspace
    name.istitle
    name.isupper
     "|".join(['alex','jack','rain'])
    'alex|jack|rain'
    
    
    maketrans
        >>> intab = "aeiou"  #This is the string having actual characters. 
        >>> outtab = "12345" #This is the string having corresponding mapping character
        >>> trantab = str.maketrans(intab, outtab)
        >>> 
        >>> str = "this is string example....wow!!!"
        >>> str.translate(trantab)
        'th3s 3s str3ng 2x1mpl2....w4w!!!'
    
     msg.partition('is')   输出 ('my name ', 'is', ' {name}, and age is {age}') 
    
     >>> "alex li, chinese name is lijie".replace("li","LI",1)
         'alex LI, chinese name is lijie'
    
     msg.swapcase 大小写互换
    
    
     >>> msg.zfill(40)
    '00000my name is {name}, and age is {age}'
    
    
    
    >>> n4.ljust(40,"-")
    'Hello 2orld-----------------------------'
    >>> n4.rjust(40,"-")
    '-----------------------------Hello 2orld'
    
    
    >>> b="ddefdsdff_哈哈" 
    >>> b.isidentifier() #检测一段字符串可否被当作标志符,即是否符合变量命名规则
    True

    三、字典操作
    字典一种key - value 的数据类型,使用就像我们上学用的字典,通过笔划、字母来查对应页的详细内容。
    例如我们需要把全国人民的年龄、身高、性别等信息存下来(实际上使用列表的方式也可以进行存储操作,但是需要记住每一个值的下标信息,这样就太麻烦了),这里介绍一种更为简便实用的方法:
    info = {
        'stu1101': "TengLan Wu",
        'stu1102': "LongZe Luola",
        'stu1103': "XiaoZe Maliya",
    }

    此时我们会发现,print打印之后显示是无序的,这是因为字典没有下标的原因导致的。由于字典是无序的,所以我们取值时通过key进行的,print(key名称)即可。由此发现:

       字典的特性:

    (1)dict是无序的

    (2)key必须是唯一的,so 天生去重。

    那现在“查”是可以查询了,字典中可以进行修改操作吗?可以的,先来看下 对已存在信息进行修改的操作是怎样的:

    如果对原字典不存在的信息进行修改可以修改成功吗?例如原字典中本没有stu1104这个key,现在我们操作将stu1104修改为“宫本武藏”,结果会是怎样的?

    打印之后的结果显示,对于不存在的字典信息进行修改时,会自动新增该条不存在的信息。

    打印出来的结果如下:

    本节课课后作业:

    购物车

             用户入口:

                             1.商品信息存在文件里

                             2.已购商品、余额记录(长时间留存)。

            商家入口:

                             1.可以添加商品,修改商品价格

  • 相关阅读:
    用例失败重新运行
    pytest启动浏览器,失败用例截图
    解决pycharm问题:module 'pip' has no attribute 'main'
    pytest的HTML
    pytest 的 yield
    pytest的setup和teardown
    pytest的fixture和conftest
    pycharm运行pytest
    简单易用的MongoDB
    快速入门系列--CLR--02多线程
  • 原文地址:https://www.cnblogs.com/hait1234/p/7146641.html
Copyright © 2011-2022 走看看