Python 第2周 - Python基础-模块\数据运算
内容
- 模块初识
- 数据运算
- bytes数据类型
- python数据类型
- 列表的使用
- 元组与购物车操作
- 购物车程序练习
- 字符串常用操作
- 字典的使用
- 三级菜单实例
- 本周作业-购物车优化
Python 库分两种:标准库(不需要安装,直接导入就可以直接使用的库)、第三方库(必须安装才能使用如django)。注意:编写代码时,模块名字不要跟库名字相同。系统自带模块简单举例:
sys库:
1 | import sys |
2 | print ("sys.path") |
输出:
['D:\\python\\51CTO\\2day',
'D:\\python\\51CTO', 'C:\\Windows\\system32\\python27.zip',
'C:\\Python27\\DLLs',
'C:\\Python27\\lib',
'C:\\Python27\\lib\\plat-win',
'C:\\Python27\\lib\\lib-tk',
'C:\\Python27',
'C:\\Python27\\lib\\site-packages']
|
Python的第三方库会存放在site-packages目录下。
2、sys.argv 执行脚本时获取传递的参数:
1 | #!/usr/bin/env python |
2 | #--*-- coding:utf-8 --*-- |
3 | import sys |
4 | print (sys.argv[3]) #取列表中的第三个数 |
输出:
执行脚本:
qing
os库:
1、调用系统命令os.system("dir")
import os |
print (os.system("dir")) |
# 执行命令,结果直接输出,不保存结果。结果出乱码
2、使用另外一个模块调取使用:os.popen
1 | import os |
2 | cmd_res = os.popen("dir").read() # os.popen会把读取的信息写到内存里面,read()重新把内存里面的信息读取出来 |
3 | print (cmd_res) |
pycharm 输出结果,中文不显示乱码了。
3、os.mkdir 模块
import os |
os.mkdir("new_dir_test") #会在当前的目录下,创建一个新目录 |
自己写个简单模块:
简单的login登陆判断,模块如下:
#vim login.py
#Author:ChenChangQing
_username = "chen"
输出:
导入login.py
#vim login1.py (注意,与login.py同级目录下导入login模块)
import login
执行脚本:python login1.py
输出:
简述Python的运行过程(摘录)
两个概念,PyCodeObject和pyc文件。
我们在硬盘上看到的pyc自然不必多说,而其实PyCodeObject则是Python编译器真正编译成的结果。我们先简单知道就可以了,继续向下看。
当python程序运行时,编译的结果则是保存在位于内存中的PyCodeObject中,当Python程序运行结束时,Python解释器则将PyCodeObject写回到pyc文件中。
当python程序第二次运行时,首先程序会在硬盘中寻找pyc文件,如果找到,则直接载入,否则就重复上面的过程。
所以我们应该这样来定位PyCodeObject和pyc文件,我们说pyc文件其实是PyCodeObject的一种持久化保存方式。
1 、Python 算术运算
![](https://images2017.cnblogs.com/blog/1183726/201707/1183726-20170728181053852-2136011215.png)
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 #Author:ChenChangQing 2 3 a = 10 4 b = 20 5 c = 3 6 7 #相加 + 8 d = a + b 9 print ("1 - d 的值为:",d) 10 11 #相减 - 12 d = b - a 13 print ("2 - d 的值为:",d) 14 15 #相乘 * 16 d = a*b 17 print ("3 - d 的值为:",d) 18 19 #相除 / 20 d = int(b/a) 21 print ("4 - d 的值为:",d) #取整数 22 print ("4 - d 的值为:",b/a) #直接打印浮点 23 24 #取余数 % 25 d = a % c 26 print ("5 - d 的值为:",d) 27 28 #幂次方 ** 29 d = c**3 30 print ("6 - d 的值为:",d) 31 32 #取整数 33 d = a//3 34 print ("7 - d 的值为:",d) 35 36 输出 37 38 1 - d 的值为: 30 39 2 - d 的值为: 10 40 3 - d 的值为: 200 41 4 - d 的值为: 2 42 4 - d 的值为: 2.0 43 5 - d 的值为: 1 44 6 - d 的值为: 27 45 7 - d 的值为: 3
2、Python 比较运算(关系型运算)
举例:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 a = 10 2 b = 20 3 4 #判断a与b相等 5 if a == b: 6 print ("1 :a与b相等") 7 else: 8 print ("1 :a与b不相等") 9 10 #判断a与b不相等 11 if a != b: 12 print ("2 :a与不相等") 13 else: 14 print ("2 :a与b相等") 15 16 #判断a 大于 b 17 if a > b: 18 print ("3 :a大于b") 19 else: 20 print ("3 :a小于b") 21 22 #判断a 小于 b 23 if a < b: 24 print ("4 :a小于b") 25 else: 26 print ("4 :a大于b") 27 28 #判断a 大于等于 b 29 if a >= b: 30 print ("5 :a大于等于b") 31 else: 32 print ("5 :a小于b") 33 34 #判断a 大于等于 b 35 if a >= b: 36 print ("6 :a大于等于b") 37 else: 38 print ("6 :a小于b") 39 40 #判断a 小于等于 b 41 if a <= b: 42 print ("7 :a小于等于b") 43 else: 44 print ("7 :a大于b") 45 46 输出: 47 1 :a与b不相等 48 2 :a与不相等 49 3 :a小于b 50 4 :a小于b 51 4 :a小于b 52 4 :a小于b 53 4 :a小于等于b
3、Python 赋值运算
举例:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 #把ab值的和赋给C 2 a = 10 3 b = 20 4 c = 0 5 6 c = a + b 7 print ("1 - c 的值:" ,c) 8 9 #+=的用法 10 a = 10 11 b = 20 12 c = 0 13 14 c += a #等同于 c = c+a 15 print ("2 - c 的值:" ,c) 16 17 #-=的用户 18 a = 10 19 b = 20 20 c = 30 21 22 c -= a #等同于 c = c - a 23 print ("3 - c 的值:" ,c) 24 25 #*= 的用法 26 a = 10 27 b = 20 28 c = 3 29 30 c *= a #等同于 c = c * a 31 print ("4 - c 的值:" ,c) 32 33 #/= 的用法 34 a = 10 35 b = 20 36 c = 5 37 38 c /= a #等同于 c = c / a 39 print ("5 - c 的值:" ,c) 40 41 42 #%= 的用法 43 a = 10 44 b = 20 45 c = 3 46 47 c %= a #等同于 c = c % a 48 print ("6 - c 的值:" ,c) 49 50 #**= 的用法 51 a = 10 52 b = 20 53 c = 2 54 55 c **= a #等同于 c = c**a 56 print ("7 - c 的值:" ,c) 57 58 #//= 的用法 59 a = 10 60 b = 20 61 c = 50 62 63 c //= a #等同于 c = c//a 64 print ("8 - c 的值:" ,c) 65 66 输出: 67 1 - c 的值: 30 68 2 - c 的值: 10 69 3 - c 的值: 20 70 4 - c 的值: 30 71 5 - c 的值: 0.5 72 6 - c 的值: 3 73 7 - c 的值: 1024 74 8 - c 的值: 5
4、Python 逻辑运算
举例:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 #Author:ChenChangQing 2 3 a = 10 4 b = 20 5 c = 0 6 7 if a and b: #a与b的数值其中有一个为0,则为假 8 print ("1:a为真,b为真,则为真") 9 else: 10 print ("1:否则为假") 11 12 if a or c: 13 print ("2:a为真,b为真,或其中一个为真,则为真") 14 else: 15 print ("2:变量a 、c 都不为真") 16 17 #not 逆向理解:当a为真时,返回假;当a假时,则返回真。。C = 0 为假 18 if not c: 19 print ("3:true") 20 else: 21 print ("3:fales") 22 输出: 23 1:a为真,b为真,则为真 24 2:a为真,b为真,或其中一个为真,则为真 25 3:true
5、python 成员运算
Python还支持成员运算符,测试实例中包含了一系列的成员,包括字符串,列表或元组。
举例:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
6、Python 身份运算
举例:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 a = 10 2 b = 10 3 c = 5 4 d = (5,15,12,45) 5 6 if a is b: 7 print ("1 - a与b有相同的标示位") 8 9 if a is not c: 10 print ("2 - a与c没有相同的标示位") 11 12 if a is not d: 13 print ("3 - a 不在d 列表里面") 14 15 输出: 16 1 - a与b有相同的标示位 17 2 - a与c没有相同的标示位 18 3 - a 不在d 列表里面 19 20 备注:身份运算,个人理解更多的是交集跟非交集合之间的运算。
is 与 == 区别:
is 用于判断两个变量引用对象是否为同一个, == 用于判断引用变量的值是否相等
7、Python 运算符优先级
简单举例:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 a = 35 2 b = 25 3 c = 15 4 d = 5 5 e = 0 6 7 f = (a + b) * c / d #( 30 * 15 ) / 5 8 print ("(a + b) * c / d 运算结果为:", f) 9 10 f = ((a + b) * c) / d # (30 * 15 ) / 5 11 print ("((a + b) * c) / d 运算结果为:", f) 12 13 f = (a + b) * (c / d); # (30) * (15/5) 14 print ("(a + b) * (c / d) 运算结果为:", f) 15 16 f = a + (b * c) / d; # 20 + (150/5) 17 print ("a + (b * c) / d 运算结果为:", f) 18 19 输出: 20 (a + b) * c / d 运算结果为: 180.0 21 ((a + b) * c) / d 运算结果为: 180.0 22 (a + b) * (c / d) 运算结果为: 180.0 23 a + (b * c) / d 运算结果为: 110.0
8、Python位运算符
按位运算符是把数字看作二进制来进行计算的。
根据数字与二进制的转换方法来计算:
网上摘录列子,可参考:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1、bytes数据类型
先看一下string和bytes的关系
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 msg = "很好" 2 3 print (msg) 4 print (msg.encode(encoding="utf8")) 5 6 输出: 7 很好 8 b'\xe5\xbe\x88\xe5\xa5\xbd'
音频、视频都是二进制文件,要变成读的字符编码,就需要设置到转码。
2、三元运算
语法:result
=
值
1
if
条件
else
值
2
理解过程:一条命令解决。三元运算,先看中间if的语句部分:
A 、IF中如果a 大于 b成立 ,则d = b, 否则d = c 。实际a = 1 ,b=5 ,a>b不成立。则d = c ,所以d 的值为 7 ;
B 、IF中如果a 小于 b成立 ,则d = b, 否则d = c 。实际a = 1 ,b=5 ,a<b成立。则d = b,所以d 的值为 5;
3、进制的理解
- 二进制,01
- 八进制,01234567
- 十进制,0123456789
- 十六进制,0123456789ABCDEF #A-F 表示 10-15的对应数字。
理解: 二进制到16进制转换 http://jingyan.baidu.com/album/47a29f24292608c0142399cb.html?picindex=1