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\tLi".expandtabs(10) 输出‘Alex      Li‘, 将\t转换成多长的空格
 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.可以添加商品,修改商品价格

时间: 2024-12-17 09:31:00

python 3 day2(下)的相关文章

详解 Python 中的下划线命名规则

在 python 中,下划线命名规则往往令初学者相当 疑惑:单下划线.双下划线.双下划线还分前后……那它们的作用与使用场景 到底有何区别呢?今天 就来聊聊这个话题. 1.单下划线(_) 通常情况下,单下划线(_)会在以下3种场景中使用: 1.1 在解释器中: 在这种情况下,“_”代表交互式解释器会话中上一条执行的语句的结果.这种用法首先被标准CPython解释器采用,然后其他类型的解释器也先后采用. >>> _ Traceback (most recent call last): Fil

Python MySQLdb Linux下安装笔记

本文介绍了Python MySQLdb Linux下安装笔记,本文分别讲解了快速安装和手动编译安装两种方法,并分别讲解了操作步骤,需要的朋友可以参考下 主要针对centos6.5 64位系统 默认python版本为2.6 编码安装python2.7和python3.4      一.yum快速安装 yum install MySQL-python yum install python-setuptools 经常接触Python的同学可能会注意到,当需要安装第三方python包时,可能会用到eas

python s12 day2

python s12 day2 入门知识拾遗 http://www.cnblogs.com/wupeiqi/articles/4906230.html 基本数据类型 注:查看对象相关成员 var,type,dir 一.整数 如: 18.73.84 每一个整数都具备如下功能: class int(object): """ int(x=0) -> int or long int(x, base=10) -> int or long Convert a number o

Python文件夹下图像数据可视化

Python文件夹下图像数据可视化 import matplotlib.pyplot as plt import matplotlib.image as mpimg import numpy as np   import urllib2 import urllib import os import shutil   subdir= "/7" homedir = os.getcwd() + subdir # "/home/haoyou/Dev/last_caffe_with_s

Python 之 LIBSVM下的简单使用

1)从python官网上下载windows下的安装包python-2.7.3.msi并安装 2)打开IDLE(python GUI),输入 >>>import sys >>>sys.version 如果你的python是32位,将出现如下字符: '2.7.3 (default, Apr 10 2012, 23:31:26) [MSC v.1500 32 bit (Intel)]' 这个时候LIBSVM的python接口设置将非常简单.在libsvm-3.16文件夹下的w

python在windows下UnicodeDecodeError的解决方法

之前在windows下使用python调用某些模块时都会报错,像这样: C:\Documents and Settings\Administrator>python -m CGIHTTPServer Traceback (most recent call last): File "C:\Python27\lib\runpy.py", line 162, in _run_module_as_main "__main__", fname, loader, pkg_

Python中的下划线(译文)

原文地址这篇文章讨论Python中下划线_的使用.跟Python中很多用法类似,下划线_的不同用法绝大部分(不全是)都是一种惯例约定. 单个下划线(_) 主要有三种情况: 1. 解释器中 _符号是指交互解释器中最后一次执行语句的返回结果.这种用法最初出现在CPython解释器中,其他解释器后来也都跟进了. >>> _ Traceback (most recent call last): File "", line 1, in NameError: name '_' i

python在windows下安装模块错误

我的环境是win7+vs2013+python3.2,都是32位 windows下安装模块错误 1)Unable to find vcvarsall.bat : 打开"<python安装目录>\Lib\distutils\msvc9compiler.py" 找到 toolskey = "VS%0.f0COMNTOOLS" % version, 直接修改为 toolskey = "VS100COMNTOOLS"  (如果是vs2012或

【python】windows7下怎样安装whl

windows7 python2.7 1.用管理员方式打开cmd 2.首先通过pip命令安装wheel 如果提示'pip'不是内部或外部命令,也不是可运行的程序或批处理文件 ①将python安装目录下的scripts目录(例如D:\Python27\Scripts)添加到系统环境变量path里,注意前加分号.再执行该命令 pip install wheel ②在cmd下进入到D:\Python27\Scripts目录下执行该命令 pip install wheel 3.安装whl文件 ①如果将D