本次内容直接完结了Python基础部分,不足之处还请指出补充!谢谢!
现有商品列表如下:
1 products = [[“iphone”,6888],[“MacPro”,14800],[“小米6”,2499],[“Coffee”,31],[“Book”,60],
[“Nike”,699]]
2. 根据上面的products列表写一个循环,不断询问用户想买什么,用户选择一个商品编号,就把对应
的商品添加到购物车里,最终用户输入q退出时,打印购买的商品列表。
打印操作相对简单,使用for…in循环来遍历
添加购物车的操作可以借鉴上个题目的随机分配的思想
定义一些需要用到的变量,同时建立一个空的列表 长度和商品列表一致
判断购物车列表中有无数字,即对应的商品列表中对应的商品有没有被添加,如果有,就输出并计数
输出结果为:
·····此题目作为入门题目建议多练几遍。
与列表类似,属于不可变序列,元素写在小括号里面。,元素之间用逗号隔开,如果只含有一个元素,需要加个逗号来表示为元组类型。
1、使用{}来定义
2、使用dict()来定义
字典元素的获取
1、使用【】
2、使用get(键名,如果不存在默认输出的值)方法
使用内置zip()函数,将俩个列表转换为字典,优先按照短的列表进行。
其他操作类似于列表
#集合:与列表、字典一样都属于可变类型的序列
#集合是没有value的字典,是无序的,重复元素在集合中自动过滤。
集合的创建:
1、使用{}进行创建 集合中的元素不允许重复
2、使用set()函数 集合中的元素是无序的
集合的相关操作:
1、增加
add:向集合中添加一个元素
update:向集合中添加至少一个元素
2、删除
remove:一次删除一个指定的元素,元素不存在会报异常
discard:一次删除一个指定的元素,元素不存在不报异常
pop:一次删除一个任意的元素
clear:清空集合的内容
集合之间的关系:
1. 用==||!=判断集合是否相等
2. 一个集合是不是另一个集合的子集:
用issubset方法
3.一个集合是不是另一个集合的超集:(与子集相反)
用issuperset方法
4. 俩个集合是否有交集:
使用isdisjoint方法(没有交集为True,有交集为False)
5. 打印出交集的部分:使用intersection方法与&是等价的
6. 并集操作:使用union方法,与|等价(自动去重)
7. 差集操作:difference方法与-等价
8.对称差集:symmetric_difference = ^
不可变序列: 没有增删改的操作
eg:字符串、元组
可变序列: 可以对序列进行增删改的操作,对象地址不发生更改
eg:列表、字典
字符串的驻留机制:
1. 字符串的长度为0或1时
2. 符合标识符的字符串
3.字符串只在编译时进行驻留,而非运行时
4. 【-5,256】之间的整数数字
自己的理解为:驻留机制就是省去了再去开辟内存空间的资源。
字符串驻留机制的优缺点:
1. 当需要值相同的字符串时,可以直接从字符串池里拿来使用,
2. 避免频繁的创建和销毁,提升效率和节约内存,因此拼接字符串和修改字符串是比较影响性能的。
3. 在需要进行字符串连接的时候建议使用str类型的join方法,而非+,因为 join方法是先计算出所有字符串的长度,然后再拷贝,只new一次对象,效率比+高。
字符串的查询操作的方法:
index():查找子串substr第一次出现的位置,如果查找的字串不存在时,则抛出ValueError
rindex():查找子串substr最后一次出现的位置,如果查找的字串不存在时,则抛出ValueError
find():查找字串substr第一次出现的位置,如果查找的字串不存在时,则返回-1
rfind():查找字串substr最后一次出现的位置,如果查找的字串不存在时,则返回-1
字符串的大小写转换操作的方法:
upper():把字符串中所有字符都转成大写字母
lower():把字符串中所有字符都转成小写字符
swapcase():把字符串中所有的大写字母转成小写字母,把所有小写字母都转成大写字母’
capitalize():把第一个字符转换为大写,把其余字符转换为小写
title():把每个单词的第一个字符转换成大写,把每个单词的声誉字符转换为小写
字符串内容对齐的方法:
center():居中对齐,第一个参数表示指定宽度,第二个参数指定填充符,第2个参数时可选的,默认说空格,如果设定宽度小于实际宽度则返回原字符串
ljust():左对齐,第一个参数指定宽度,第2个参数是可选的,默认是空格,同上
rjust():右对齐
zfill():右对齐,左边用0填充,该方法只接受一个参数,用于指定字符串的宽度,如果指定的宽度小于等于字符串的长度,返回字符串本身。
字符串的劈分:
split():从字符串左边开始劈分,默认以空格作为劈分符
可通过sep=""改变劈分符
可通过maxsplit设置最大劈分个数,达到最大劈分个数后,剩下一部分单独作为一个整体
rsplit():从右边开始
判断字符串操作的方法:
isidentifier():判断指定的字符串是不是合法的标识符
isspace():判断指定的字符串是否全部由空白字符组成(回车、换行、水平制表符)
isalpha():判断指定的字符串是否全部由字母组成
isdecimal():判断字符串是否全部由十进制的数字组成
isnumeric():判断指定的字符串是否全部由数字组成
isalnum():判断指定字符串是否全部由字母和数字组成
字符串操作的其他方法:
replace():字符串的替换。第一个参数指定被替换的字串,第二个参数指定替换字串的字符串,该方法返回替换后的字符串,第三个字符串指定替换的个数
join():字符串的粘贴。将列表或元组中的字串连接成一个字符串
字符串的编码与解码:
encode():方法 encoding = "GBK"
decode():解码
字符串的比较操作:
>,>=,<,<=,==,!=
比较规则:首先比较俩个字符串中的第一个字符,如果相等则继续比较下一个字符,依次比下去,
直到两个字符串中的字符不相等时,其比较结果就是两个字符串的比较结果,两个字符串中的所有后续字符将不再被比较。
如果在开发程序时,需要某块代码多次,但是为了提高编写的效率以及代码的重用,所以把具有独
立功能的代码块组织为一个小模块,这就是函数
格式为:
def 函数名(形式参数):
代码块
[return]返回值
补充:
1.个数可变的位置参数
def fun(*args):
print(args)
结果为一个元组
2.个数可变的关键字形参
def fun2(**args):
print(args)
结果为字典
定义了函数之后,就相当于有了一个具有某些功能的代码,想要让这些代码能够执行,需要调用它
调用函数很简单的,通过 函数名() 即可完成调用
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210425155
简言之,就是定义在函数内部的变量叫做局部变量,定义在函数外部的叫做全局变量。
如果全局变量和局部变量同名,函数体内优先调用局部变量。
可在局部变量前加global来修改全局变量
BUG即为异常,Python中对异常的解决比Java要简单许多。
处理BUG的方法:
1.try-except
2.try-except-else
3.try-except-else-finally
try:写入要执行的代码
except:写入可能出现的BUG,可通过as将BUG重命名并输出
else:没出现BUG要执行的代码
finally:无论如何都要执行的代码
在python,使用open函数,可以打开一个已经存在的文件,或者创建一个新文件
格式:open(文件名,访问模式)
使用close()方法
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210425162157744.png#pic_center
文件的其他操作:
文件重命名:rename 需要导入os
文件删除:remove
文件夹的创建:mkdir 需要导入os
获取当前目录:getcwd() 需要导入os
改变默认目录:chdir() 需要导入os
获取目录列表:listdir() 需要导入os
删除文件夹:rmdir() 需要导入os
这里基本上就是Python基础的全部内容,下一步的学习是面向对象。Python中万物皆对象,在Python中定义类和Java有什么区别呢?敬请期待。