本章学习内容

1、模块初识

2、数据类型初识

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

3、数据运算

4、列表、元组操作

5、字符串操作

6、字典操作

7、集合操作

8、文件操作

9、字符编码与转换

 

一、模块初识

Python的强大之处在于他有非常丰富和强大的标准库和第三方库,几乎你想实现的任何功能都有相应的Python库支持,以后的课程中会深入讲解常用到的各种库,现在,我们先来象征性的学2个简单的。

sys

1 2 3 4 5 6 7 8 9 10 11 #!/usr/bin/env python # -*- coding: utf-8 -*-   import  sys   print (sys.argv)     #输出 $ python test.py helo world [ 'test.py' 'helo' 'world' ]   #把执行脚本时传递的参数获取到了

  

os

1 2 3 4 5 6 #!/usr/bin/env python # -*- coding: utf-8 -*-   import  os   os.system( "df -h" #调用系统命令

完全结合一下  

1 2 3 import  os,sys   os.system(''.join(sys.argv[ 1 :]))  #把用户的输入的参数当作一条命令交给os.system来执行

自己写个模块

python tab补全模块

 1 import sys
 2 import readline
 3 import rlcompleter
 4 
 5 if sys.platform == 'darwin' and sys.version_info[0] == 2:
 6     readline.parse_and_bind("bind ^I rl_complete")
 7 else:
 8     readline.parse_and_bind("tab: complete")  # linux and python3 on mac
 9 
10 for mac
pyton学习之路,part two 随笔 第1张
 1 #!/usr/bin/env python 
 2 # python startup file 
 3 import sys
 4 import readline
 5 import rlcompleter
 6 import atexit
 7 import os
 8 # tab completion 
 9 readline.parse_and_bind('tab: complete')
10 # history file 
11 histfile = os.path.join(os.environ['HOME'], '.pythonhistory')
12 try:
13     readline.read_history_file(histfile)
14 except IOError:
15     pass
16 atexit.register(readline.write_history_file, histfile)
17 del os, histfile, readline, rlcompleter
18 
19 for Linux
for linux

写完保存后就可以使用了

1 2 3 4 5 localhost:~ jieli$ python Python  2.7 . 10  (default,  Oct  23  2015 18 : 05 : 06 ) [GCC  4.2 . 1  Compatible Apple LLVM  7.0 . 0  (clang - 700.0 . 59.5 )] on darwin Type  "help" "copyright" "credits"  or  "license"  for  more information. >>>  import  tab

你会发现,上面自己写的tab.py模块只能在当前目录下导入,如果想在系统的何何一个地方都使用怎么办呢? 此时你就要把这个tab.py放到python全局环境变量目录里啦,基本一般都放在一个叫 Python/2.7/site-packages 目录下,这个目录在不同的OS里放的位置不一样,用 print(sys.path) 可以查看python环境变量列表。

 

二、数据类型初识

 

1、数字

2 是一个整数的例子。
长整数 不过是大一些的整数。
3.23和52.3E-4是浮点数的例子。E标记表示10的幂。在这里,52.3E-4表示52.3 * 10-4。
(-5+4j)和(2.3-4.6j)是复数的例子,其中-5,4为实数,j为虚数,数学中表示复数是什么?。

int(整型)

  在32位机器上,整数的位数为32位,取值范围为-2**31~2**31-1,即-2147483648~2147483647
  在64位系统上,整数的位数为64位,取值范围为-2**63~2**63-1,即-9223372036854775808~9223372036854775807 long(长整型)
  跟C语言不同,Python的长整数没有指定位宽,即:Python没有限制长整数数值的大小,但实际上由于机器内存有限,我们使用的长整数数值不可能无限大。
  注意,自从Python2.2起,如果整数发生溢出,Python会自动将整数数据转换为长整数,所以如今在长整数数据后面不加字母L也不会导致严重后果了。
float(浮点型)        先扫盲 http://www.cnblogs.com/alex3714/articles/5895848.html 
  浮点数用来处理实数,即带有小数的数字。类似于C语言中的double类型,占8个字节(64位),其中52位表示底,11位表示指数,剩下的一位表示符号。
complex(复数)
  复数由实数部分和虚数部分组成,一般形式为x+yj,其中的x是复数的实数部分,y是复数的虚数部分,这里的x和y都是实数。 注:Python中存在小数字池:-5 ~ 257   2、布尔值   真或假   1 或 0 3、字符串
"hello world"
万恶的字符串拼接:   python中的字符串在C语言中体现为是一个字符数组,每次创建字符串时候需要在内存中开辟一块连续的空,并且一旦需要修改字符串的话,就需要再次开辟空间,万恶的+号每出现一次就会在内从中重新开辟一块空间。 字符串格式化输出
1 2 3 4 name  =  "alex" print  "i am %s "  %  name    #输出: i am alex

PS: 字符串是 %s;整数 %d;浮点数%f

字符串常用功能:
  • 移除空白
  • 分割
  • 长度
  • 索引
  • 切片
4、列表 创建列表:
1 2 3 name_list  =  [ 'alex' 'seven' 'eric' ] name_list =  list ([ 'alex' 'seven' 'eric' ])

基本操作:

  • 索引
  • 切片
  • 追加
  • 删除
  • 长度
  • 切片
  • 循环
  • 包含
5、元组(不可变列表) 创建元组:
1 2 3 ages  =  ( 11 22 33 44 55 ) ages  =  tuple (( 11 22 33 44 55 ))
  6、字典(无序) 创建字典:
1 2 3 person  =  { "name" "mr.wu" 'age' 18 } person  =  dict ({ "name" "mr.wu" 'age' 18 })

常用操作:

  • 索引
  • 新增
  • 删除
  • 键、值、键值对
  • 循环
  • 长度

三、数据运算

 

算数运算:

 

pyton学习之路,part two 随笔 第3张

比较运算:

pyton学习之路,part two 随笔 第4张

赋值运算:

pyton学习之路,part two 随笔 第5张

逻辑运算:

pyton学习之路,part two 随笔 第6张

成员运算:

pyton学习之路,part two 随笔 第7张

身份运算:

pyton学习之路,part two 随笔 第8张

位运算:

pyton学习之路,part two 随笔 第9张

+ View Code

*按位取反运算规则(按位取反再加1)   详解http://blog.csdn.net/wenxinwukui234/article/details/42119265

 

运算符优先级:

pyton学习之路,part two 随笔 第10张

更多内容:猛击这里

四、列表、元组操作

(一)列表

列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储、修改等操作

定义列表

1 names  =  [ 'Alex' , "Tenglan" , 'Eric' ]

通过下标访问列表中的元素,下标从0开始计数

1 2 3 4 5 6 7 8 >>> names[ 0 ] 'Alex' >>> names[ 2 ] 'Eric' >>> names[ - 1 ] 'Eric' >>> names[ - 2 #还可以倒着取 'Tenglan'

切片:取多个元素

>>> names = ["Alex","Tenglan","Eric","Rain","Tom","Amy"]
>>> names[1:4]  #取下标1至下标4之间的数字,包括1,不包括4
['Tenglan', 'Eric', 'Rain']
>>> names[1:-1] #取下标1至-1的值,不包括-1
['Tenglan', 'Eric', 'Rain', 'Tom']
>>> names[0:3] 
['Alex', 'Tenglan', 'Eric']
>>> names[:3] #如果是从头开始取,0可以忽略,跟上句效果一样
['Alex', 'Tenglan', 'Eric']
>>> names[3:] #如果想取最后一个,必须不能写-1,只能这么写
['Rain', 'Tom', 'Amy'] 
>>> names[3:-1] #这样-1就不会被包含了
['Rain', 'Tom']
>>> names[0::2] #后面的2是代表,每隔一个元素,就取一个
['Alex', 'Eric', 'Tom'] 
>>> names[::2] #和上句效果一样
['Alex', 'Eric', 'Tom']

追加  

pyton学习之路,part two 随笔 第11张
>>> names
['Alex', 'Tenglan', 'Eric', 'Rain', 'Tom', 'Amy']
>>> names.append("我是新来的")
>>> names
['Alex', 'Tenglan', 'Eric', 'Rain', 'Tom', 'Amy', '我是新来的']
View Code

插入

pyton学习之路,part two 随笔 第13张
>>> names
['Alex', 'Tenglan', 'Eric', 'Rain', 'Tom', 'Amy', '我是新来的']
>>> names.insert(2,"强行从Eric前面插入")
>>> names
['Alex', 'Tenglan', '强行从Eric前面插入', 'Eric', 'Rain', 'Tom', 'Amy', '我是新来的']

>>> names.insert(5,"从eric后面插入试试新姿势")
>>> names
['Alex', 'Tenglan', '强行从Eric前面插入', 'Eric', 'Rain', '从eric后面插入试试新姿势', 'Tom', 'Amy', '我是新来的']
View Code

修改

pyton学习之路,part two 随笔 第15张
>>> names
['Alex', 'Tenglan', '强行从Eric前面插入', 'Eric', 'Rain', '从eric后面插入试试新姿势', 'Tom', 'Amy', '我是新来的']
>>> names[2] = "该换人了"
>>> names
['Alex', 'Tenglan', '该换人了', 'Eric', 'Rain', '从eric后面插入试试新姿势', 'Tom', 'Amy', '我是新来的']
View Code

删除

pyton学习之路,part two 随笔 第17张
>>> del names[2] >>> names ['Alex', 'Tenglan', 'Eric', 'Rain', '从eric后面插入试试新姿势', 'Tom', 'Amy', '我是新来的'] >>> del names[4] >>> names ['Alex', 'Tenglan', 'Eric', 'Rain', 'Tom', 'Amy', '我是新来的'] >>> 
>>> names.remove("Eric") #删除指定元素
>>> names ['Alex', 'Tenglan', 'Rain', 'Tom', 'Amy', '我是新来的'] >>> names.pop() #删除列表最后一个值 
'我是新来的'
>>> names ['Alex', 'Tenglan', 'Rain', 'Tom', 'Amy']
View Code

扩展

pyton学习之路,part two 随笔 第19张
>>> names
['Alex', 'Tenglan', 'Rain', 'Tom', 'Amy']
>>> b = [1,2,3]
>>> names.extend(b)
>>> names
['Alex', 'Tenglan', 'Rain', 'Tom', 'Amy', 1, 2, 3]
View Code

拷贝

pyton学习之路,part two 随笔 第21张
>>> names
['Alex', 'Tenglan', 'Rain', 'Tom', 'Amy', 1, 2, 3]

>>> name_copy = names.copy()
>>> name_copy
['Alex', 'Tenglan', 'Rain', 'Tom', 'Amy', 1, 2, 3]
View Code

统计

pyton学习之路,part two 随笔 第23张
>>> names
['Alex', 'Tenglan', 'Amy', 'Tom', 'Amy', 1, 2, 3]
>>> names.count("Amy")
View Code

排序&翻转

pyton学习之路,part two 随笔 第25张
>>> names
['Alex', 'Tenglan', 'Amy', 'Tom', 'Amy', 1, 2, 3]
>>> names.sort() #排序
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unorderable types: int() < str()   #3.0里不同数据类型不能放在一起排序了,擦
>>> names[-3] = '1'
>>> names[-2] = '2'
>>> names[-1] = '3'
>>> names
['Alex', 'Amy', 'Amy', 'Tenglan', 'Tom', '1', '2', '3']
>>> names.sort()
>>> names
['1', '2', '3', 'Alex', 'Amy', 'Amy', 'Tenglan', 'Tom']

>>> names.reverse() #反转
>>> names
['Tom', 'Tenglan', 'Amy', 'Amy', 'Alex', '3', '2', '1']
View Code

获取下标

pyton学习之路,part two 随笔 第27张
>>> names
['Tom', 'Tenglan', 'Amy', 'Amy', 'Alex', '3', '2', '1']
>>> names.index("Amy")
2 #只返回找到的第一个下标
View Code

 

(二)元组

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

语法

1 names  =  ( "alex" , "jack" , "eric" )

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

程序练习 

请闭眼写出以下程序。

程序:购物车程序

需求:

  1. 启动程序后,让用户输入工资,然后打印商品列表
  2. 允许用户根据商品编号购买商品
  3. 用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒 
  4. 可随时退出,退出时,打印已购买商品和余额

 

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄