首页 > 代码库 > Python 第2周 - Python基础-模块\数据运算

Python 第2周 - Python基础-模块\数据运算

 

内容

    1. 模块初识
    2. 数据运算
    3. bytes数据类型
    4. python数据类型
    5. 列表的使用
    6. 元组与购物车操作
    7. 购物车程序练习
    8. 字符串常用操作
    9. 字典的使用 
    10. 三级菜单实例
    11. 本周作业-购物车优化

 

一、模块初识

  Python 库分两种:标准库(不需要安装,直接导入就可以直接使用的库)、第三方库(必须安装才能使用如django)。注意:编写代码时,模块名字不要跟库名字相同。系统自带模块简单举例:

 sys库:

   1、打印系统环境变量 sys.path:
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]) #取列表中的第三个数

 输出:

 执行脚本:

# python sys_argv.py chen chang qing 

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"

_password = "chen123"
username = input("name:")
password = input("passwd:")
if username == _username and password == _password:
    print (username,password)
else:
    print ("IT‘s error!")

输出:

name:chen
passwd:chen123
chen chen123

导入login.py

#vim login1.py  (注意,与login.py同级目录下导入login模块)

 import login

 执行脚本:python login1.py 

 输出:

name:chen
passwd:123
IT‘s error!

简述Python的运行过程(摘录)

两个概念,PyCodeObject和pyc文件。

我们在硬盘上看到的pyc自然不必多说,而其实PyCodeObject则是Python编译器真正编译成的结果。我们先简单知道就可以了,继续向下看。

当python程序运行时,编译的结果则是保存在位于内存中的PyCodeObject中,当Python程序运行结束时,Python解释器则将PyCodeObject写回到pyc文件中。

当python程序第二次运行时,首先程序会在硬盘中寻找pyc文件,如果找到,则直接载入,否则就重复上面的过程。

所以我们应该这样来定位PyCodeObject和pyc文件,我们说pyc文件其实是PyCodeObject的一种持久化保存方式。

二、python 数据运算

1 、Python 算术运算

技术分享
举例:
技术分享
 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 比较运算(关系型运算)

技术分享

举例:

技术分享
 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 赋值运算

  技术分享

举例:

技术分享
 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 逻辑运算

技术分享

举例:

技术分享逻辑运算
 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还支持成员运算符,测试实例中包含了一系列的成员,包括字符串,列表或元组。

技术分享

举例:

技术分享成员运算

 6、Python 身份运算

 技术分享

举例:

技术分享
 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 运算符优先级

 技术分享

简单举例:

技术分享
 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位运算符

 按位运算符是把数字看作二进制来进行计算的。

技术分享

根据数字与二进制的转换方法来计算:

 技术分享

网上摘录列子,可参考:

技术分享位运算
三、bytes数据类型

1、bytes数据类型

先看一下string和bytes的关系

 技术分享

 

技术分享
1 msg = "很好"
2 
3 print (msg)
4 print (msg.encode(encoding="utf8"))
5 
6 输出:
7 很好
8 b\xe5\xbe\x88\xe5\xa5\xbd
View Code

 音频、视频都是二进制文件,要变成读的字符编码,就需要设置到转码。

 

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

 

Python 第2周 - Python基础-模块\数据运算